Browse Source

Included .bpl, .bpl and .hpp files for c++

glscene 6 months ago
parent
commit
107efae394
100 changed files with 10926 additions and 38 deletions
  1. 5 4
      Examples/Demox/Cube/Cube_c.cbproj
  2. 1 1
      Examples/_cleanexamples.cmd
  3. BIN
      Help/Clips/ActorToPoint.gif
  4. BIN
      Help/Clips/ClothActor.gif
  5. BIN
      Help/Clips/Dancer.gif
  6. BIN
      Help/Clips/Fighting.gif
  7. BIN
      Help/Clips/RagDoll.gif
  8. BIN
      Help/Clips/Tankodrome.gif
  9. BIN
      Help/Screenshots/RagDoll.gif
  10. 1 1
      Packages/GXScene_DTRT.dproj
  11. 1 1
      Packages/GXScene_GBE_DTRT.dproj
  12. 1 1
      Packages/GXScene_RT.dproj
  13. 0 1
      Packages/_cleanres.cmd
  14. 35 16
      README.md
  15. 1 1
      Source/FRTrackBarEdit.pas
  16. 1 1
      Source/Formats.VRML.pas
  17. 2 4
      Sourcex/GXS.BSP.pas
  18. 7 7
      _clean.cmd
  19. 1 0
      bpl/#bpl.txt
  20. BIN
      bpl/GLScene_Cg_DT.bpl
  21. BIN
      bpl/GLScene_Cg_RT.bpl
  22. BIN
      bpl/GLScene_DT.bpl
  23. BIN
      bpl/GLScene_GPU_DT.bpl
  24. BIN
      bpl/GLScene_GPU_RT.bpl
  25. BIN
      bpl/GLScene_Physics_DT.bpl
  26. BIN
      bpl/GLScene_Physics_RT.bpl
  27. BIN
      bpl/GLScene_RT.bpl
  28. BIN
      bpl/GLScene_Sounds_DT.bpl
  29. BIN
      bpl/GLScene_Sounds_RT.bpl
  30. BIN
      bpl/GXScene_Cg_RT.bpl
  31. BIN
      bpl/GXScene_DTRT.bpl
  32. BIN
      bpl/GXScene_GBE.bpl
  33. BIN
      bpl/GXScene_GBE_DTRT.bpl
  34. BIN
      bpl/GXScene_GPU_RT.bpl
  35. BIN
      bpl/GXScene_Physics_RT.bpl
  36. BIN
      bpl/GXScene_RT.bpl
  37. BIN
      bpl/GXScene_Sounds_DT.bpl
  38. BIN
      bpl/GXScene_Sounds_RT.bpl
  39. BIN
      bpl/Win64/GLScene_RT.bpl
  40. BIN
      bpl/Win64/GLScene_RT.rsm
  41. BIN
      bpl/Win64/GXScene_Cg_RT.bpl
  42. BIN
      bpl/Win64/GXScene_Cg_RT.rsm
  43. BIN
      bpl/Win64/GXScene_DTRT.bpl
  44. BIN
      bpl/Win64/GXScene_DTRT.rsm
  45. BIN
      bpl/Win64/GXScene_GBE.bpl
  46. BIN
      bpl/Win64/GXScene_GBE.rsm
  47. BIN
      bpl/Win64/GXScene_GBE_DTRT.bpl
  48. BIN
      bpl/Win64/GXScene_GBE_DTRT.rsm
  49. BIN
      bpl/Win64/GXScene_GPU_RT.bpl
  50. BIN
      bpl/Win64/GXScene_GPU_RT.rsm
  51. BIN
      bpl/Win64/GXScene_Physics_RT.bpl
  52. BIN
      bpl/Win64/GXScene_Physics_RT.rsm
  53. BIN
      bpl/Win64/GXScene_RT.bpl
  54. BIN
      bpl/Win64/GXScene_RT.rsm
  55. BIN
      bpl/Win64/GXScene_Sounds_RT.bpl
  56. BIN
      bpl/Win64/GXScene_Sounds_RT.rsm
  57. 949 0
      include/Win32/BASS.Import.hpp
  58. 118 0
      include/Win32/CUDA.DataAccess.hpp
  59. 180 0
      include/Win32/CUDA.FourierTransform.hpp
  60. 661 0
      include/Win32/CUDA.Import.hpp
  61. 79 0
      include/Win32/CUDA.ParallelPrimitives.hpp
  62. 136 0
      include/Win32/CUDA.Parser.hpp
  63. 375 0
      include/Win32/CUDA.Runtime.hpp
  64. 78 0
      include/Win32/CUDA.Utility.hpp
  65. 136 0
      include/Win32/Cg.GL.hpp
  66. 259 0
      include/Win32/Cg.Import.hpp
  67. 272 0
      include/Win32/FMOD.Import.hpp
  68. 44 0
      include/Win32/FMOD.errors.hpp
  69. 70 0
      include/Win32/FMOD.presets.hpp
  70. 264 0
      include/Win32/FMOD.types.hpp
  71. 115 0
      include/Win32/FRColorEditor.hpp
  72. 89 0
      include/Win32/FRFaceEditor.hpp
  73. 101 0
      include/Win32/FRMaterialPreview.hpp
  74. 100 0
      include/Win32/FRTextureEdit.hpp
  75. 77 0
      include/Win32/FRTrackBarEdit.hpp
  76. 103 0
      include/Win32/FmCUDAEditor.hpp
  77. 140 0
      include/Win32/FmGuiLayoutEditor.hpp
  78. 206 0
      include/Win32/FmGuiSkinEditor.hpp
  79. 168 0
      include/Win32/FmInfo.hpp
  80. 116 0
      include/Win32/FmLibMaterialPicker.hpp
  81. 92 0
      include/Win32/FmMaterialEditor.hpp
  82. 233 0
      include/Win32/FmSceneEditor.hpp
  83. 136 0
      include/Win32/FmShaderMemo.hpp
  84. 107 0
      include/Win32/FmShaderUniformEditor.hpp
  85. 113 0
      include/Win32/FmVectorEditor.hpp
  86. 120 0
      include/Win32/FmXCollectionEditor.hpp
  87. 314 0
      include/Win32/Formats.B3D.hpp
  88. 94 0
      include/Win32/Formats.DDSImage.hpp
  89. 341 0
      include/Win32/Formats.DXTC.hpp
  90. 274 0
      include/Win32/Formats.GL2.hpp
  91. 67 0
      include/Win32/Formats.HDRImage.hpp
  92. 808 0
      include/Win32/Formats.LWO.hpp
  93. 157 0
      include/Win32/Formats.MD2.hpp
  94. 190 0
      include/Win32/Formats.MD3.hpp
  95. 152 0
      include/Win32/Formats.OCT.hpp
  96. 246 0
      include/Win32/Formats.Q3BSP.hpp
  97. 71 0
      include/Win32/Formats.TGA.hpp
  98. 2023 0
      include/Win32/Formats.VFW.hpp
  99. 276 0
      include/Win32/Formats.VRML.hpp
  100. 220 0
      include/Win32/Formats.X.hpp

+ 5 - 4
Examples/Demox/Cube/Cube_c.cbproj

@@ -6,7 +6,7 @@
         <MainSource>Cube_c.cpp</MainSource>
         <Base>True</Base>
         <Config Condition="'$(Config)'==''">Debug</Config>
-        <Platform Condition="'$(Platform)'==''">Win64x</Platform>
+        <Platform Condition="'$(Platform)'==''">Win64</Platform>
         <ProjectName Condition="'$(ProjectName)'==''">Cube_c</ProjectName>
         <TargetedPlatforms>1048579</TargetedPlatforms>
         <AppType>Application</AppType>
@@ -89,7 +89,7 @@
         <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
         <Icon_MainIcon>$(BDS)\bin\cbuilder_PROJECTICON.ico</Icon_MainIcon>
         <Icns_MainIcns>$(BDS)\bin\cbuilder_PROJECTICNS.icns</Icns_MainIcns>
-        <AllPackageLibs>rtl.lib;fmx.lib;GXScene_GBE.lib</AllPackageLibs>
+        <AllPackageLibs>rtl.lib;fmx.lib;GXScene_GBE.lib;GXScene_GBE_DTRT.lib</AllPackageLibs>
         <_TCHARMapping>wchar_t</_TCHARMapping>
         <Multithreaded>true</Multithreaded>
         <IncludePath>D:\LIBRARY\FMX_Demos\GBE_3D\demos\Cube\;D:\GLScene\Examples\Demox\Cube\;..\..\include\Win64x\;$(IncludePath)</IncludePath>
@@ -167,7 +167,7 @@
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
         <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
-        <LinkPackageImports>rtl.bpi;fmx.bpi;GBE3D.bpi</LinkPackageImports>
+        <LinkPackageImports>rtl.bpi;fmx.bpi;GXScene_GBE.bpi;GXScene_GBE_DTRT.bpi</LinkPackageImports>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64x)'!=''">
         <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
@@ -175,7 +175,8 @@
         <VerInfo_Locale>1033</VerInfo_Locale>
         <IncludePath>..\..\..\include\Win64x</IncludePath>
         <ILINK_LibraryPath>..\..\..\lib\Win64x</ILINK_LibraryPath>
-        <LinkPackageImports>rtl.bpi;fmx.bpi;GXScene_GBE.bpi</LinkPackageImports>
+        <LinkPackageImports>rtl.bpi;fmx.bpi</LinkPackageImports>
+        <LinkPackageStatics>GXScene_GBE.lib;GXScene_GBE_DTRT.lib</LinkPackageStatics>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2)'!=''">
         <Defines>NDEBUG;$(Defines)</Defines>

+ 1 - 1
Examples/_cleanexamples.cmd

@@ -35,7 +35,7 @@ del *.spider /s
 
 rem delete cpp builder files
 
-del *.hpp /s
+rem del *.hpp /s
 del *.#00 /s
 del *.pch /s
 del *.tds /s

BIN
Help/Clips/ActorToPoint.gif


BIN
Help/Clips/ClothActor.gif


BIN
Help/Clips/Dancer.gif


BIN
Help/Clips/Fighting.gif


BIN
Help/Clips/RagDoll.gif


BIN
Help/Clips/Tankodrome.gif


BIN
Help/Screenshots/RagDoll.gif


+ 1 - 1
Packages/GXScene_DTRT.dproj

@@ -6,7 +6,7 @@
         <FrameworkType>FMX</FrameworkType>
         <Base>True</Base>
         <Config Condition="'$(Config)'==''">Debug</Config>
-        <Platform Condition="'$(Platform)'==''">Win32</Platform>
+        <Platform Condition="'$(Platform)'==''">Win64</Platform>
         <TargetedPlatforms>1048579</TargetedPlatforms>
         <AppType>Package</AppType>
         <ProjectName Condition="'$(ProjectName)'==''">GXScene_DTRT</ProjectName>

+ 1 - 1
Packages/GXScene_GBE_DTRT.dproj

@@ -6,7 +6,7 @@
         <FrameworkType>FMX</FrameworkType>
         <Base>True</Base>
         <Config Condition="'$(Config)'==''">Debug</Config>
-        <Platform Condition="'$(Platform)'==''">Win32</Platform>
+        <Platform Condition="'$(Platform)'==''">Win64</Platform>
         <TargetedPlatforms>1048579</TargetedPlatforms>
         <AppType>Package</AppType>
         <ProjectName Condition="'$(ProjectName)'==''">GXScene_GBE_DTRT</ProjectName>

+ 1 - 1
Packages/GXScene_RT.dproj

@@ -8,7 +8,7 @@
         <AppType>Package</AppType>
         <FrameworkType>FMX</FrameworkType>
         <ProjectVersion>20.2</ProjectVersion>
-        <Platform Condition="'$(Platform)'==''">Win32</Platform>
+        <Platform Condition="'$(Platform)'==''">Win64</Platform>
         <ProjectName Condition="'$(ProjectName)'==''">GXScene_RT</ProjectName>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">

+ 0 - 1
Packages/_cleanres.cmd

@@ -6,7 +6,6 @@ del *.identcache /s
 del *.res /s  
 del *.obj /s
 del *.dcu /s 
-del *.hpp /s
 
 echo---------------------------------------------------------
 echo delete debug and Platform directories with all subdirectories and files 

+ 35 - 16
README.md

@@ -5,24 +5,43 @@ include managers for supporting physics, sounds, terrains with materials and sha
 ### How to install
 1. Download a zip archive of the last release or clone the repository
 2. Run _setupDLL_admin.cmd to support external DLLs libraries
-3. Configure the IDE settings and paths to all sources
-4. Open group projects dpk for Delphi or lpk for Lazarus, compile and install components
-5. Run demos in Examples for Delphi or C++Builder <br>
-
-Some examples:<br>
-GLS Viewer
-![GLSViewer](./Help/Screenshots/GLSViewer.png)
-Dune Fighter
-![DuneFighter](./Help/Screenshots/DuneFighter.png)
-Clothify 
-![Clothify](./Help/Screenshots/RagDoll.gif)
+3. Configure the IDE settings and paths to src, sources and sourcex, include and lib dirs  
+4. Open the GLSEngine.groupproj in RAD Studio Delphi or .lpk projects for Lazarus, compile and install components
+5. Users of the C++ Builder Personality only need to copy the compiled .bpl packages from ../GLXEngine/bpl directory 
+   to a folder  C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl then add them and install to palette  
+5. Run Examples for Delphi or C++Builder <br>
+### Some examples: 
+GLSViewer
+<br>
+<img src="./Help/Screenshots/GLSViewer.png" height="300" width="400">
+</br>
+ActorToPoint
+<br>
+<img src="./Help/Clips/ActorToPoint.gif" height="300" width="400">
+</br>
+ClothActor 
+<br>
+<img src="./Help/Clips/ClothActor.gif" height="300" width="400">
+</br>
+Ragdoll 
+<br>
+<img src="./Help/Clips/RagDoll.gif" height="300" width="400">
+</br>
 Christmas
-![Christmas](./Help/Screenshots/Christmas.png)
+<br>
+<img src="./Help/Screenshots/Christmas.png" height="300" width="400">
+</br>
 Forest
-![Forest](./Help/Screenshots/Forest.png)
+<br>
+<img src="./Help/Screenshots/Forest.png" height="300" width="400">
+</br>
 Village
-![Village](./Help/Screenshots/Village.png)
+<br>
+<img src="./Help/Screenshots/Village.png" height="300" width="400">
+</br>
 Plot2D
-![Plot2D](./Help/Screenshots/Plot2D.png)
+<br>
+<img src="./Help/Screenshots/Plot2D.png" height="300" width="400">
+</br>
 
-GLXEngine Team
+Admin of GLX

+ 1 - 1
Source/FRTrackBarEdit.pas

@@ -1,5 +1,5 @@
 //
-// This unit is part of the GLScene Project, http://glscene.org
+// The graphics engine GLXEngine. The unit of GLScene for Delphi
 //
 {
    Frame combining a TrackBar and an Edit. 

+ 1 - 1
Source/Formats.VRML.pas

@@ -1,5 +1,5 @@
 //
-// The unit is part of the GLScene Engine, http://glscene.org
+// The graphics engine GLXEngine. The unit of GLScene for Delphi
 //
 unit Formats.VRML;
 

+ 2 - 4
Sourcex/GXS.BSP.pas

@@ -16,9 +16,9 @@ uses
   System.Math,
 
   Stage.VectorTypes,
+  Stage.VectorGeometry,
   GXS.VectorFileObjects,
   GXS.Material,
-  Stage.VectorGeometry,
   GXS.VectorLists,
   GXS.Color,
   GXS.RenderContextInfo;
@@ -156,9 +156,7 @@ type
     property Cluster: Integer read FCluster write FCluster;
   end;
 
-// ------------------------------------------------------------------
-implementation
-// ------------------------------------------------------------------
+implementation // --------------------------------------------------------
 
 const
   cOwnTriangleEpsilon = 1E-5;

+ 7 - 7
_clean.cmd

@@ -5,17 +5,17 @@ del *.xml /s
 rem del *.res /s
 
 @echo off delete delphi units but not packages
-del *.bpl /s
-del *.dcp /s
-del *.rsm /s
 del *.dcu /s
 del *.bak /s
+rem del *.bpl /s
+rem del *.dcp /s
+rem del *.rsm /s
 
 @echo off not delete C++ includes and libs
-del *.hpp /s
-del *.bpi /s
-del *.lib /s
-del *.a /s
+rem del *.hpp /s
+rem del *.bpi /s
+rem del *.lib /s
+rem del *.a /s
 
 @echo off delete debug files
 del *.ddp /s

+ 1 - 0
bpl/#bpl.txt

@@ -0,0 +1 @@
+The directory for compiled *bpl files

BIN
bpl/GLScene_Cg_DT.bpl


BIN
bpl/GLScene_Cg_RT.bpl


BIN
bpl/GLScene_DT.bpl


BIN
bpl/GLScene_GPU_DT.bpl


BIN
bpl/GLScene_GPU_RT.bpl


BIN
bpl/GLScene_Physics_DT.bpl


BIN
bpl/GLScene_Physics_RT.bpl


BIN
bpl/GLScene_RT.bpl


BIN
bpl/GLScene_Sounds_DT.bpl


BIN
bpl/GLScene_Sounds_RT.bpl


BIN
bpl/GXScene_Cg_RT.bpl


BIN
bpl/GXScene_DTRT.bpl


BIN
bpl/GXScene_GBE.bpl


BIN
bpl/GXScene_GBE_DTRT.bpl


BIN
bpl/GXScene_GPU_RT.bpl


BIN
bpl/GXScene_Physics_RT.bpl


BIN
bpl/GXScene_RT.bpl


BIN
bpl/GXScene_Sounds_DT.bpl


BIN
bpl/GXScene_Sounds_RT.bpl


BIN
bpl/Win64/GLScene_RT.bpl


BIN
bpl/Win64/GLScene_RT.rsm


BIN
bpl/Win64/GXScene_Cg_RT.bpl


BIN
bpl/Win64/GXScene_Cg_RT.rsm


BIN
bpl/Win64/GXScene_DTRT.bpl


BIN
bpl/Win64/GXScene_DTRT.rsm


BIN
bpl/Win64/GXScene_GBE.bpl


BIN
bpl/Win64/GXScene_GBE.rsm


BIN
bpl/Win64/GXScene_GBE_DTRT.bpl


BIN
bpl/Win64/GXScene_GBE_DTRT.rsm


BIN
bpl/Win64/GXScene_GPU_RT.bpl


BIN
bpl/Win64/GXScene_GPU_RT.rsm


BIN
bpl/Win64/GXScene_Physics_RT.bpl


BIN
bpl/Win64/GXScene_Physics_RT.rsm


BIN
bpl/Win64/GXScene_RT.bpl


BIN
bpl/Win64/GXScene_RT.rsm


BIN
bpl/Win64/GXScene_Sounds_RT.bpl


BIN
bpl/Win64/GXScene_Sounds_RT.rsm


+ 949 - 0
include/Win32/BASS.Import.hpp

@@ -0,0 +1,949 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'BASS.Import.pas' rev: 36.00 (Windows)
+
+#ifndef BASS_ImportHPP
+#define BASS_ImportHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Bass
+{
+namespace Import
+{
+//-- forward type declarations -----------------------------------------------
+struct BASS_DEVICEINFO;
+struct BASS_INFO;
+struct BASS_RECORDINFO;
+struct BASS_SAMPLE;
+struct BASS_CHANNELINFO;
+struct BASS_PLUGINFORM;
+struct BASS_PLUGININFO;
+struct BASS_3DVECTOR;
+struct BASS_FILEPROCS;
+struct TAG_ID3;
+struct TAG_APE_BINARY;
+struct TAG_BEXT;
+struct BASS_DX8_CHORUS;
+struct BASS_DX8_COMPRESSOR;
+struct BASS_DX8_DISTORTION;
+struct BASS_DX8_ECHO;
+struct BASS_DX8_FLANGER;
+struct BASS_DX8_GARGLE;
+struct BASS_DX8_I3DL2REVERB;
+struct BASS_DX8_PARAMEQ;
+struct BASS_DX8_REVERB;
+struct BASS_FX_VOLUME_PARAM;
+//-- type declarations -------------------------------------------------------
+typedef unsigned DWORD;
+
+typedef System::LongBool BOOL;
+
+typedef __int64 QWORD;
+
+typedef DWORD HMUSIC;
+
+typedef DWORD HSAMPLE;
+
+typedef DWORD HCHANNEL;
+
+typedef DWORD HSTREAM;
+
+typedef DWORD HRECORD;
+
+typedef DWORD HSYNC;
+
+typedef DWORD HDSP;
+
+typedef DWORD HFX;
+
+typedef DWORD HPLUGIN;
+
+struct DECLSPEC_DRECORD BASS_DEVICEINFO
+{
+public:
+	char *name;
+	char *driver;
+	DWORD flags;
+};
+
+
+struct DECLSPEC_DRECORD BASS_INFO
+{
+public:
+	DWORD flags;
+	DWORD hwsize;
+	DWORD hwfree;
+	DWORD freesam;
+	DWORD free3d;
+	DWORD minrate;
+	DWORD maxrate;
+	BOOL eax;
+	DWORD minbuf;
+	DWORD dsver;
+	DWORD latency;
+	DWORD initflags;
+	DWORD speakers;
+	DWORD freq;
+};
+
+
+struct DECLSPEC_DRECORD BASS_RECORDINFO
+{
+public:
+	DWORD flags;
+	DWORD formats;
+	DWORD inputs;
+	BOOL singlein;
+	DWORD freq;
+};
+
+
+struct DECLSPEC_DRECORD BASS_SAMPLE
+{
+public:
+	DWORD freq;
+	float volume;
+	float pan;
+	DWORD flags;
+	DWORD length;
+	DWORD max;
+	DWORD origres;
+	DWORD chans;
+	DWORD mingap;
+	DWORD mode3d;
+	float mindist;
+	float maxdist;
+	DWORD iangle;
+	DWORD oangle;
+	float outvol;
+	DWORD vam;
+	DWORD priority;
+};
+
+
+struct DECLSPEC_DRECORD BASS_CHANNELINFO
+{
+public:
+	DWORD freq;
+	DWORD chans;
+	DWORD flags;
+	DWORD ctype;
+	DWORD origres;
+	HPLUGIN plugin;
+	HSAMPLE sample;
+	System::WideChar *filename;
+};
+
+
+struct DECLSPEC_DRECORD BASS_PLUGINFORM
+{
+public:
+	DWORD ctype;
+	char *name;
+	char *exts;
+};
+
+
+typedef System::StaticArray<BASS_PLUGINFORM, 178956970> TBASS_PLUGINFORMS;
+
+typedef TBASS_PLUGINFORMS *PBASS_PLUGINFORMS;
+
+typedef BASS_PLUGININFO *PBASS_PLUGININFO;
+
+struct DECLSPEC_DRECORD BASS_PLUGININFO
+{
+public:
+	DWORD version;
+	DWORD formatc;
+	PBASS_PLUGINFORMS formats;
+};
+
+
+struct DECLSPEC_DRECORD BASS_3DVECTOR
+{
+public:
+	float x;
+	float y;
+	float z;
+};
+
+
+typedef void __stdcall (*FILECLOSEPROC)(void * user);
+
+typedef QWORD __stdcall (*FILELENPROC)(void * user);
+
+typedef DWORD __stdcall (*FILEREADPROC)(void * buffer, DWORD length, void * user);
+
+typedef BOOL __stdcall (*FILESEEKPROC)(QWORD offset, void * user);
+
+struct DECLSPEC_DRECORD BASS_FILEPROCS
+{
+public:
+	FILECLOSEPROC close;
+	FILELENPROC length;
+	FILEREADPROC read;
+	FILESEEKPROC seek;
+};
+
+
+typedef TAG_ID3 *PTAG_ID3;
+
+struct DECLSPEC_DRECORD TAG_ID3
+{
+public:
+	System::StaticArray<char, 3> id;
+	System::StaticArray<char, 30> title;
+	System::StaticArray<char, 30> artist;
+	System::StaticArray<char, 30> album;
+	System::StaticArray<char, 4> year;
+	System::StaticArray<char, 30> comment;
+	System::Byte genre;
+};
+
+
+typedef TAG_APE_BINARY *PTAG_APE_BINARY;
+
+struct DECLSPEC_DRECORD TAG_APE_BINARY
+{
+public:
+	char *key;
+	char *data;
+	DWORD length;
+};
+
+
+typedef TAG_BEXT *PTAG_BEXT;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TAG_BEXT
+{
+public:
+	System::StaticArray<char, 256> Description;
+	System::StaticArray<char, 32> Originator;
+	System::StaticArray<char, 32> OriginatorReference;
+	System::StaticArray<char, 10> OriginationDate;
+	System::StaticArray<char, 8> OriginationTime;
+	QWORD TimeReference;
+	System::Word Version;
+	System::StaticArray<System::Byte, 64> UMID;
+	System::StaticArray<System::Byte, 190> Reserved;
+	char CodingHistory;
+};
+#pragma pack(pop)
+
+
+struct DECLSPEC_DRECORD BASS_DX8_CHORUS
+{
+public:
+	float fWetDryMix;
+	float fDepth;
+	float fFeedback;
+	float fFrequency;
+	DWORD lWaveform;
+	float fDelay;
+	DWORD lPhase;
+};
+
+
+struct DECLSPEC_DRECORD BASS_DX8_COMPRESSOR
+{
+public:
+	float fGain;
+	float fAttack;
+	float fRelease;
+	float fThreshold;
+	float fRatio;
+	float fPredelay;
+};
+
+
+struct DECLSPEC_DRECORD BASS_DX8_DISTORTION
+{
+public:
+	float fGain;
+	float fEdge;
+	float fPostEQCenterFrequency;
+	float fPostEQBandwidth;
+	float fPreLowpassCutoff;
+};
+
+
+struct DECLSPEC_DRECORD BASS_DX8_ECHO
+{
+public:
+	float fWetDryMix;
+	float fFeedback;
+	float fLeftDelay;
+	float fRightDelay;
+	BOOL lPanDelay;
+};
+
+
+struct DECLSPEC_DRECORD BASS_DX8_FLANGER
+{
+public:
+	float fWetDryMix;
+	float fDepth;
+	float fFeedback;
+	float fFrequency;
+	DWORD lWaveform;
+	float fDelay;
+	DWORD lPhase;
+};
+
+
+struct DECLSPEC_DRECORD BASS_DX8_GARGLE
+{
+public:
+	DWORD dwRateHz;
+	DWORD dwWaveShape;
+};
+
+
+struct DECLSPEC_DRECORD BASS_DX8_I3DL2REVERB
+{
+public:
+	int lRoom;
+	int lRoomHF;
+	float flRoomRolloffFactor;
+	float flDecayTime;
+	float flDecayHFRatio;
+	int lReflections;
+	float flReflectionsDelay;
+	int lReverb;
+	float flReverbDelay;
+	float flDiffusion;
+	float flDensity;
+	float flHFReference;
+};
+
+
+struct DECLSPEC_DRECORD BASS_DX8_PARAMEQ
+{
+public:
+	float fCenter;
+	float fBandwidth;
+	float fGain;
+};
+
+
+struct DECLSPEC_DRECORD BASS_DX8_REVERB
+{
+public:
+	float fInGain;
+	float fReverbMix;
+	float fReverbTime;
+	float fHighFreqRTRatio;
+};
+
+
+struct DECLSPEC_DRECORD BASS_FX_VOLUME_PARAM
+{
+public:
+	float fTarget;
+	float fCurrent;
+	float fTime;
+	DWORD lCurve;
+};
+
+
+typedef DWORD __stdcall (*STREAMPROC)(HSTREAM handle, void * buffer, DWORD length, void * user);
+
+typedef void __stdcall (*DOWNLOADPROC)(void * buffer, DWORD length, void * user);
+
+typedef void __stdcall (*SYNCPROC)(HSYNC handle, DWORD channel, DWORD data, void * user);
+
+typedef void __stdcall (*DSPPROC)(HDSP handle, DWORD channel, void * buffer, DWORD length, void * user);
+
+typedef BOOL __stdcall (*RECORDPROC)(HRECORD handle, void * buffer, DWORD length, void * user);
+
+typedef Winapi::Windows::HINST TBASSModuleHandle;
+
+//-- var, const, procedure ---------------------------------------------------
+#define bassdll L"bass32.dll"
+static _DELPHI_CONST System::Word BASSVERSION = System::Word(0x204);
+#define BASSVERSIONTEXT L"2.4"
+static _DELPHI_CONST unsigned DW_ERROR = unsigned(0xffffffff);
+static _DELPHI_CONST __int64 QW_ERROR = -1LL;
+static _DELPHI_CONST System::Int8 BASS_OK = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 BASS_ERROR_MEM = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_ERROR_FILEOPEN = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_ERROR_DRIVER = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 BASS_ERROR_BUFLOST = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 BASS_ERROR_HANDLE = System::Int8(0x5);
+static _DELPHI_CONST System::Int8 BASS_ERROR_FORMAT = System::Int8(0x6);
+static _DELPHI_CONST System::Int8 BASS_ERROR_POSITION = System::Int8(0x7);
+static _DELPHI_CONST System::Int8 BASS_ERROR_INIT = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 BASS_ERROR_START = System::Int8(0x9);
+static _DELPHI_CONST System::Int8 BASS_ERROR_SSL = System::Int8(0xa);
+static _DELPHI_CONST System::Int8 BASS_ERROR_REINIT = System::Int8(0xb);
+static _DELPHI_CONST System::Int8 BASS_ERROR_ALREADY = System::Int8(0xe);
+static _DELPHI_CONST System::Int8 BASS_ERROR_NOTAUDIO = System::Int8(0x11);
+static _DELPHI_CONST System::Int8 BASS_ERROR_NOCHAN = System::Int8(0x12);
+static _DELPHI_CONST System::Int8 BASS_ERROR_ILLTYPE = System::Int8(0x13);
+static _DELPHI_CONST System::Int8 BASS_ERROR_ILLPARAM = System::Int8(0x14);
+static _DELPHI_CONST System::Int8 BASS_ERROR_NO3D = System::Int8(0x15);
+static _DELPHI_CONST System::Int8 BASS_ERROR_NOEAX = System::Int8(0x16);
+static _DELPHI_CONST System::Int8 BASS_ERROR_DEVICE = System::Int8(0x17);
+static _DELPHI_CONST System::Int8 BASS_ERROR_NOPLAY = System::Int8(0x18);
+static _DELPHI_CONST System::Int8 BASS_ERROR_FREQ = System::Int8(0x19);
+static _DELPHI_CONST System::Int8 BASS_ERROR_NOTFILE = System::Int8(0x1b);
+static _DELPHI_CONST System::Int8 BASS_ERROR_NOHW = System::Int8(0x1d);
+static _DELPHI_CONST System::Int8 BASS_ERROR_EMPTY = System::Int8(0x1f);
+static _DELPHI_CONST System::Int8 BASS_ERROR_NONET = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 BASS_ERROR_CREATE = System::Int8(0x21);
+static _DELPHI_CONST System::Int8 BASS_ERROR_NOFX = System::Int8(0x22);
+static _DELPHI_CONST System::Int8 BASS_ERROR_NOTAVAIL = System::Int8(0x25);
+static _DELPHI_CONST System::Int8 BASS_ERROR_DECODE = System::Int8(0x26);
+static _DELPHI_CONST System::Int8 BASS_ERROR_DX = System::Int8(0x27);
+static _DELPHI_CONST System::Int8 BASS_ERROR_TIMEOUT = System::Int8(0x28);
+static _DELPHI_CONST System::Int8 BASS_ERROR_FILEFORM = System::Int8(0x29);
+static _DELPHI_CONST System::Int8 BASS_ERROR_SPEAKER = System::Int8(0x2a);
+static _DELPHI_CONST System::Int8 BASS_ERROR_VERSION = System::Int8(0x2b);
+static _DELPHI_CONST System::Int8 BASS_ERROR_CODEC = System::Int8(0x2c);
+static _DELPHI_CONST System::Int8 BASS_ERROR_ENDED = System::Int8(0x2d);
+static _DELPHI_CONST System::Int8 BASS_ERROR_BUSY = System::Int8(0x2e);
+static _DELPHI_CONST System::Int8 BASS_ERROR_UNSTREAMABLE = System::Int8(0x2f);
+static _DELPHI_CONST System::Int8 BASS_ERROR_PROTOCOL = System::Int8(0x30);
+static _DELPHI_CONST System::Int8 BASS_ERROR_DENIED = System::Int8(0x31);
+static _DELPHI_CONST System::Int8 BASS_ERROR_UNKNOWN = System::Int8(-1);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_BUFFER = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_UPDATEPERIOD = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_GVOL_SAMPLE = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_GVOL_STREAM = System::Int8(0x5);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_GVOL_MUSIC = System::Int8(0x6);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_CURVE_VOL = System::Int8(0x7);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_CURVE_PAN = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_FLOATDSP = System::Int8(0x9);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_3DALGORITHM = System::Int8(0xa);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_NET_TIMEOUT = System::Int8(0xb);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_NET_BUFFER = System::Int8(0xc);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_PAUSE_NOPLAY = System::Int8(0xd);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_NET_PREBUF = System::Int8(0xf);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_NET_PASSIVE = System::Int8(0x12);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_REC_BUFFER = System::Int8(0x13);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_NET_PLAYLIST = System::Int8(0x15);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_MUSIC_VIRTUAL = System::Int8(0x16);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_VERIFY = System::Int8(0x17);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_UPDATETHREADS = System::Int8(0x18);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_DEV_BUFFER = System::Int8(0x1b);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_REC_LOOPBACK = System::Int8(0x1c);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_VISTA_TRUEPOS = System::Int8(0x1e);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_IOS_SESSION = System::Int8(0x22);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_IOS_MIXAUDIO = System::Int8(0x22);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_DEV_DEFAULT = System::Int8(0x24);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_NET_READTIMEOUT = System::Int8(0x25);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_VISTA_SPEAKERS = System::Int8(0x26);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_IOS_SPEAKER = System::Int8(0x27);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_MF_DISABLE = System::Int8(0x28);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_HANDLES = System::Int8(0x29);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_UNICODE = System::Int8(0x2a);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_SRC = System::Int8(0x2b);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_SRC_SAMPLE = System::Int8(0x2c);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_ASYNCFILE_BUFFER = System::Int8(0x2d);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_OGG_PRESCAN = System::Int8(0x2f);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_MF_VIDEO = System::Int8(0x30);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_AIRPLAY = System::Int8(0x31);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_DEV_NONSTOP = System::Int8(0x32);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_IOS_NOCATEGORY = System::Int8(0x33);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_VERIFY_NET = System::Int8(0x34);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_DEV_PERIOD = System::Int8(0x35);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_FLOAT = System::Int8(0x36);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_NET_SEEK = System::Int8(0x38);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_AM_DISABLE = System::Int8(0x3a);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_NET_PLAYLIST_DEPTH = System::Int8(0x3b);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_NET_PREBUF_WAIT = System::Int8(0x3c);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_ANDROID_SESSIONID = System::Int8(0x3e);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_WASAPI_PERSIST = System::Int8(0x41);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_REC_WASAPI = System::Int8(0x42);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_ANDROID_AAUDIO = System::Int8(0x43);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_SAMPLE_ONEHANDLE = System::Int8(0x45);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_NET_META = System::Int8(0x47);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_NET_RESTRATE = System::Int8(0x48);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_REC_DEFAULT = System::Int8(0x49);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_NORAMP = System::Int8(0x4a);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_NET_AGENT = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_NET_PROXY = System::Int8(0x11);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_ANDROID_JAVAVM = System::Int8(0x3f);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_LIBSSL = System::Int8(0x40);
+static _DELPHI_CONST System::Int8 BASS_CONFIG_FILENAME = System::Int8(0x4b);
+static _DELPHI_CONST int BASS_CONFIG_THREAD = int(0x40000000);
+static _DELPHI_CONST System::Int8 BASS_IOS_SESSION_MIX = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_IOS_SESSION_DUCK = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_IOS_SESSION_AMBIENT = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 BASS_IOS_SESSION_SPEAKER = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 BASS_IOS_SESSION_DISABLE = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 BASS_IOS_SESSION_DEACTIVATE = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 BASS_IOS_SESSION_AIRPLAY = System::Int8(0x40);
+static _DELPHI_CONST System::Byte BASS_IOS_SESSION_BTHFP = System::Byte(0x80);
+static _DELPHI_CONST System::Word BASS_IOS_SESSION_BTA2DP = System::Word(0x100);
+static _DELPHI_CONST System::Int8 BASS_DEVICE_8BITS = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_DEVICE_MONO = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_DEVICE_3D = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 BASS_DEVICE_16BITS = System::Int8(0x8);
+static _DELPHI_CONST System::Byte BASS_DEVICE_REINIT = System::Byte(0x80);
+static _DELPHI_CONST System::Word BASS_DEVICE_LATENCY = System::Word(0x100);
+static _DELPHI_CONST System::Word BASS_DEVICE_CPSPEAKERS = System::Word(0x400);
+static _DELPHI_CONST System::Word BASS_DEVICE_SPEAKERS = System::Word(0x800);
+static _DELPHI_CONST System::Word BASS_DEVICE_NOSPEAKER = System::Word(0x1000);
+static _DELPHI_CONST System::Word BASS_DEVICE_DMIX = System::Word(0x2000);
+static _DELPHI_CONST System::Word BASS_DEVICE_FREQ = System::Word(0x4000);
+static _DELPHI_CONST System::Word BASS_DEVICE_STEREO = System::Word(0x8000);
+static _DELPHI_CONST int BASS_DEVICE_AUDIOTRACK = int(0x20000);
+static _DELPHI_CONST int BASS_DEVICE_DSOUND = int(0x40000);
+static _DELPHI_CONST int BASS_DEVICE_SOFTWARE = int(0x80000);
+static _DELPHI_CONST System::Int8 BASS_OBJECT_DS = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_OBJECT_DS3DL = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_DEVICE_ENABLED = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_DEVICE_DEFAULT = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_DEVICE_INIT = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 BASS_DEVICE_LOOPBACK = System::Int8(0x8);
+static _DELPHI_CONST System::Byte BASS_DEVICE_DEFAULTCOM = System::Byte(0x80);
+static _DELPHI_CONST unsigned BASS_DEVICE_TYPE_MASK = unsigned(0xff000000);
+static _DELPHI_CONST int BASS_DEVICE_TYPE_NETWORK = int(0x1000000);
+static _DELPHI_CONST int BASS_DEVICE_TYPE_SPEAKERS = int(0x2000000);
+static _DELPHI_CONST int BASS_DEVICE_TYPE_LINE = int(0x3000000);
+static _DELPHI_CONST int BASS_DEVICE_TYPE_HEADPHONES = int(0x4000000);
+static _DELPHI_CONST int BASS_DEVICE_TYPE_MICROPHONE = int(0x5000000);
+static _DELPHI_CONST int BASS_DEVICE_TYPE_HEADSET = int(0x6000000);
+static _DELPHI_CONST int BASS_DEVICE_TYPE_HANDSET = int(0x7000000);
+static _DELPHI_CONST int BASS_DEVICE_TYPE_DIGITAL = int(0x8000000);
+static _DELPHI_CONST int BASS_DEVICE_TYPE_SPDIF = int(0x9000000);
+static _DELPHI_CONST int BASS_DEVICE_TYPE_HDMI = int(0xa000000);
+static _DELPHI_CONST int BASS_DEVICE_TYPE_DISPLAYPORT = int(0x40000000);
+static _DELPHI_CONST int BASS_DEVICES_AIRPLAY = int(0x1000000);
+static _DELPHI_CONST System::Int8 DSCAPS_EMULDRIVER = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 DSCAPS_CERTIFIED = System::Int8(0x40);
+static _DELPHI_CONST unsigned DSCAPS_HARDWARE = unsigned(0x80000000);
+static _DELPHI_CONST System::Int8 DSCCAPS_EMULDRIVER = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 DSCCAPS_CERTIFIED = System::Int8(0x40);
+static _DELPHI_CONST System::Int8 BASS_SAMPLE_8BITS = System::Int8(0x1);
+static _DELPHI_CONST System::Word BASS_SAMPLE_FLOAT = System::Word(0x100);
+static _DELPHI_CONST System::Int8 BASS_SAMPLE_MONO = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_SAMPLE_LOOP = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 BASS_SAMPLE_3D = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 BASS_SAMPLE_SOFTWARE = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 BASS_SAMPLE_MUTEMAX = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 BASS_SAMPLE_VAM = System::Int8(0x40);
+static _DELPHI_CONST System::Byte BASS_SAMPLE_FX = System::Byte(0x80);
+static _DELPHI_CONST int BASS_SAMPLE_OVER_VOL = int(0x10000);
+static _DELPHI_CONST int BASS_SAMPLE_OVER_POS = int(0x20000);
+static _DELPHI_CONST int BASS_SAMPLE_OVER_DIST = int(0x30000);
+static _DELPHI_CONST int BASS_STREAM_PRESCAN = int(0x20000);
+static _DELPHI_CONST int BASS_STREAM_AUTOFREE = int(0x40000);
+static _DELPHI_CONST int BASS_STREAM_RESTRATE = int(0x80000);
+static _DELPHI_CONST int BASS_STREAM_BLOCK = int(0x100000);
+static _DELPHI_CONST int BASS_STREAM_DECODE = int(0x200000);
+static _DELPHI_CONST int BASS_STREAM_STATUS = int(0x800000);
+static _DELPHI_CONST System::Word BASS_MP3_IGNOREDELAY = System::Word(0x200);
+static _DELPHI_CONST int BASS_MP3_SETPOS = int(0x20000);
+static _DELPHI_CONST System::Word BASS_MUSIC_FLOAT = System::Word(0x100);
+static _DELPHI_CONST System::Int8 BASS_MUSIC_MONO = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_MUSIC_LOOP = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 BASS_MUSIC_3D = System::Int8(0x8);
+static _DELPHI_CONST System::Byte BASS_MUSIC_FX = System::Byte(0x80);
+static _DELPHI_CONST int BASS_MUSIC_AUTOFREE = int(0x40000);
+static _DELPHI_CONST int BASS_MUSIC_DECODE = int(0x200000);
+static _DELPHI_CONST int BASS_MUSIC_PRESCAN = int(0x20000);
+static _DELPHI_CONST int BASS_MUSIC_CALCLEN = int(0x20000);
+static _DELPHI_CONST System::Word BASS_MUSIC_RAMP = System::Word(0x200);
+static _DELPHI_CONST System::Word BASS_MUSIC_RAMPS = System::Word(0x400);
+static _DELPHI_CONST System::Word BASS_MUSIC_SURROUND = System::Word(0x800);
+static _DELPHI_CONST System::Word BASS_MUSIC_SURROUND2 = System::Word(0x1000);
+static _DELPHI_CONST System::Word BASS_MUSIC_FT2PAN = System::Word(0x2000);
+static _DELPHI_CONST System::Word BASS_MUSIC_FT2MOD = System::Word(0x2000);
+static _DELPHI_CONST System::Word BASS_MUSIC_PT1MOD = System::Word(0x4000);
+static _DELPHI_CONST int BASS_MUSIC_NONINTER = int(0x10000);
+static _DELPHI_CONST int BASS_MUSIC_SINCINTER = int(0x800000);
+static _DELPHI_CONST System::Word BASS_MUSIC_POSRESET = System::Word(0x8000);
+static _DELPHI_CONST int BASS_MUSIC_POSRESETEX = int(0x400000);
+static _DELPHI_CONST int BASS_MUSIC_STOPBACK = int(0x80000);
+static _DELPHI_CONST int BASS_MUSIC_NOSAMPLE = int(0x100000);
+static _DELPHI_CONST int BASS_SPEAKER_FRONT = int(0x1000000);
+static _DELPHI_CONST int BASS_SPEAKER_REAR = int(0x2000000);
+static _DELPHI_CONST int BASS_SPEAKER_CENLFE = int(0x3000000);
+static _DELPHI_CONST int BASS_SPEAKER_SIDE = int(0x4000000);
+static _DELPHI_CONST int BASS_SPEAKER_LEFT = int(0x10000000);
+static _DELPHI_CONST int BASS_SPEAKER_RIGHT = int(0x20000000);
+static _DELPHI_CONST int BASS_SPEAKER_FRONTLEFT = int(0x11000000);
+static _DELPHI_CONST int BASS_SPEAKER_FRONTRIGHT = int(0x21000000);
+static _DELPHI_CONST int BASS_SPEAKER_REARLEFT = int(0x12000000);
+static _DELPHI_CONST int BASS_SPEAKER_REARRIGHT = int(0x22000000);
+static _DELPHI_CONST int BASS_SPEAKER_CENTER = int(0x13000000);
+static _DELPHI_CONST int BASS_SPEAKER_LFE = int(0x23000000);
+static _DELPHI_CONST int BASS_SPEAKER_SIDELEFT = int(0x14000000);
+static _DELPHI_CONST int BASS_SPEAKER_SIDERIGHT = int(0x24000000);
+static _DELPHI_CONST int BASS_SPEAKER_REAR2 = int(0x4000000);
+static _DELPHI_CONST int BASS_SPEAKER_REAR2LEFT = int(0x14000000);
+static _DELPHI_CONST int BASS_SPEAKER_REAR2RIGHT = int(0x24000000);
+static _DELPHI_CONST int BASS_ASYNCFILE = int(0x40000000);
+static _DELPHI_CONST unsigned BASS_UNICODE = unsigned(0x80000000);
+static _DELPHI_CONST System::Word BASS_RECORD_PAUSE = System::Word(0x8000);
+static _DELPHI_CONST System::Int8 BASS_VAM_HARDWARE = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_VAM_SOFTWARE = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_VAM_TERM_TIME = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 BASS_VAM_TERM_DIST = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 BASS_VAM_TERM_PRIO = System::Int8(0x10);
+static _DELPHI_CONST int BASS_ORIGRES_FLOAT = int(0x10000);
+static _DELPHI_CONST System::Int8 BASS_CTYPE_SAMPLE = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_CTYPE_RECORD = System::Int8(0x2);
+static _DELPHI_CONST int BASS_CTYPE_STREAM = int(0x10000);
+static _DELPHI_CONST int BASS_CTYPE_STREAM_VORBIS = int(0x10002);
+static _DELPHI_CONST int BASS_CTYPE_STREAM_OGG = int(0x10002);
+static _DELPHI_CONST int BASS_CTYPE_STREAM_MP1 = int(0x10003);
+static _DELPHI_CONST int BASS_CTYPE_STREAM_MP2 = int(0x10004);
+static _DELPHI_CONST int BASS_CTYPE_STREAM_MP3 = int(0x10005);
+static _DELPHI_CONST int BASS_CTYPE_STREAM_AIFF = int(0x10006);
+static _DELPHI_CONST int BASS_CTYPE_STREAM_CA = int(0x10007);
+static _DELPHI_CONST int BASS_CTYPE_STREAM_MF = int(0x10008);
+static _DELPHI_CONST int BASS_CTYPE_STREAM_AM = int(0x10009);
+static _DELPHI_CONST int BASS_CTYPE_STREAM_SAMPLE = int(0x1000a);
+static _DELPHI_CONST int BASS_CTYPE_STREAM_DUMMY = int(0x18000);
+static _DELPHI_CONST int BASS_CTYPE_STREAM_DEVICE = int(0x18001);
+static _DELPHI_CONST int BASS_CTYPE_STREAM_WAV = int(0x40000);
+static _DELPHI_CONST int BASS_CTYPE_STREAM_WAV_PCM = int(0x50001);
+static _DELPHI_CONST int BASS_CTYPE_STREAM_WAV_FLOAT = int(0x50003);
+static _DELPHI_CONST int BASS_CTYPE_MUSIC_MOD = int(0x20000);
+static _DELPHI_CONST int BASS_CTYPE_MUSIC_MTM = int(0x20001);
+static _DELPHI_CONST int BASS_CTYPE_MUSIC_S3M = int(0x20002);
+static _DELPHI_CONST int BASS_CTYPE_MUSIC_XM = int(0x20003);
+static _DELPHI_CONST int BASS_CTYPE_MUSIC_IT = int(0x20004);
+static _DELPHI_CONST System::Word BASS_CTYPE_MUSIC_MO3 = System::Word(0x100);
+static _DELPHI_CONST System::Int8 BASS_PLUGIN_PROC = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_3DMODE_NORMAL = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 BASS_3DMODE_RELATIVE = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_3DMODE_OFF = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_3DALG_DEFAULT = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 BASS_3DALG_OFF = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_3DALG_FULL = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_3DALG_LIGHT = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_GENERIC = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_PADDEDCELL = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_ROOM = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_BATHROOM = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_LIVINGROOM = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_STONEROOM = System::Int8(0x5);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_AUDITORIUM = System::Int8(0x6);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_CONCERTHALL = System::Int8(0x7);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_CAVE = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_ARENA = System::Int8(0x9);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_HANGAR = System::Int8(0xa);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_CARPETEDHALLWAY = System::Int8(0xb);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_HALLWAY = System::Int8(0xc);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_STONECORRIDOR = System::Int8(0xd);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_ALLEY = System::Int8(0xe);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_FOREST = System::Int8(0xf);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_CITY = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_MOUNTAINS = System::Int8(0x11);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_QUARRY = System::Int8(0x12);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_PLAIN = System::Int8(0x13);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_PARKINGLOT = System::Int8(0x14);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_SEWERPIPE = System::Int8(0x15);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_UNDERWATER = System::Int8(0x16);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_DRUGGED = System::Int8(0x17);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_DIZZY = System::Int8(0x18);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_PSYCHOTIC = System::Int8(0x19);
+static _DELPHI_CONST System::Int8 EAX_ENVIRONMENT_COUNT = System::Int8(0x1a);
+static _DELPHI_CONST unsigned BASS_STREAMPROC_END = unsigned(0x80000000);
+static _DELPHI_CONST System::Int8 STREAMFILE_NOBUFFER = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 STREAMFILE_BUFFER = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 STREAMFILE_BUFFERPUSH = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_FILEDATA_END = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 BASS_FILEPOS_CURRENT = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 BASS_FILEPOS_DECODE = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 BASS_FILEPOS_DOWNLOAD = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_FILEPOS_END = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_FILEPOS_START = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 BASS_FILEPOS_CONNECTED = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 BASS_FILEPOS_BUFFER = System::Int8(0x5);
+static _DELPHI_CONST System::Int8 BASS_FILEPOS_SOCKET = System::Int8(0x6);
+static _DELPHI_CONST System::Int8 BASS_FILEPOS_ASYNCBUF = System::Int8(0x7);
+static _DELPHI_CONST System::Int8 BASS_FILEPOS_SIZE = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 BASS_FILEPOS_BUFFERING = System::Int8(0x9);
+static _DELPHI_CONST System::Int8 BASS_FILEPOS_AVAILABLE = System::Int8(0xa);
+static _DELPHI_CONST System::Int8 BASS_SYNC_POS = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 BASS_SYNC_END = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_SYNC_META = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 BASS_SYNC_SLIDE = System::Int8(0x5);
+static _DELPHI_CONST System::Int8 BASS_SYNC_STALL = System::Int8(0x6);
+static _DELPHI_CONST System::Int8 BASS_SYNC_DOWNLOAD = System::Int8(0x7);
+static _DELPHI_CONST System::Int8 BASS_SYNC_FREE = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 BASS_SYNC_SETPOS = System::Int8(0xb);
+static _DELPHI_CONST System::Int8 BASS_SYNC_MUSICPOS = System::Int8(0xa);
+static _DELPHI_CONST System::Int8 BASS_SYNC_MUSICINST = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_SYNC_MUSICFX = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 BASS_SYNC_OGG_CHANGE = System::Int8(0xc);
+static _DELPHI_CONST System::Int8 BASS_SYNC_DEV_FAIL = System::Int8(0xe);
+static _DELPHI_CONST System::Int8 BASS_SYNC_DEV_FORMAT = System::Int8(0xf);
+static _DELPHI_CONST int BASS_SYNC_THREAD = int(0x20000000);
+static _DELPHI_CONST int BASS_SYNC_MIXTIME = int(0x40000000);
+static _DELPHI_CONST unsigned BASS_SYNC_ONETIME = unsigned(0x80000000);
+static _DELPHI_CONST System::Int8 BASS_ACTIVE_STOPPED = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 BASS_ACTIVE_PLAYING = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_ACTIVE_STALLED = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_ACTIVE_PAUSED = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 BASS_ACTIVE_PAUSED_DEVICE = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_FREQ = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_VOL = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_PAN = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_EAXMIX = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_NOBUFFER = System::Int8(0x5);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_VBR = System::Int8(0x6);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_CPU = System::Int8(0x7);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_SRC = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_NET_RESUME = System::Int8(0x9);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_SCANINFO = System::Int8(0xa);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_NORAMP = System::Int8(0xb);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_BITRATE = System::Int8(0xc);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_BUFFER = System::Int8(0xd);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_GRANULE = System::Int8(0xe);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_USER = System::Int8(0xf);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_TAIL = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_PUSH_LIMIT = System::Int8(0x11);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_DOWNLOADPROC = System::Int8(0x12);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_VOLDSP = System::Int8(0x13);
+static _DELPHI_CONST System::Int8 BASS_ATTRIB_VOLDSP_PRIORITY = System::Int8(0x14);
+static _DELPHI_CONST System::Word BASS_ATTRIB_MUSIC_AMPLIFY = System::Word(0x100);
+static _DELPHI_CONST System::Word BASS_ATTRIB_MUSIC_PANSEP = System::Word(0x101);
+static _DELPHI_CONST System::Word BASS_ATTRIB_MUSIC_PSCALER = System::Word(0x102);
+static _DELPHI_CONST System::Word BASS_ATTRIB_MUSIC_BPM = System::Word(0x103);
+static _DELPHI_CONST System::Word BASS_ATTRIB_MUSIC_SPEED = System::Word(0x104);
+static _DELPHI_CONST System::Word BASS_ATTRIB_MUSIC_VOL_GLOBAL = System::Word(0x105);
+static _DELPHI_CONST System::Word BASS_ATTRIB_MUSIC_ACTIVE = System::Word(0x106);
+static _DELPHI_CONST System::Word BASS_ATTRIB_MUSIC_VOL_CHAN = System::Word(0x200);
+static _DELPHI_CONST System::Word BASS_ATTRIB_MUSIC_VOL_INST = System::Word(0x300);
+static _DELPHI_CONST int BASS_SLIDE_LOG = int(0x1000000);
+static _DELPHI_CONST System::Int8 BASS_DATA_AVAILABLE = System::Int8(0x0);
+static _DELPHI_CONST int BASS_DATA_NOREMOVE = int(0x10000000);
+static _DELPHI_CONST int BASS_DATA_FIXED = int(0x20000000);
+static _DELPHI_CONST int BASS_DATA_FLOAT = int(0x40000000);
+static _DELPHI_CONST unsigned BASS_DATA_FFT256 = unsigned(0x80000000);
+static _DELPHI_CONST unsigned BASS_DATA_FFT512 = unsigned(0x80000001);
+static _DELPHI_CONST unsigned BASS_DATA_FFT1024 = unsigned(0x80000002);
+static _DELPHI_CONST unsigned BASS_DATA_FFT2048 = unsigned(0x80000003);
+static _DELPHI_CONST unsigned BASS_DATA_FFT4096 = unsigned(0x80000004);
+static _DELPHI_CONST unsigned BASS_DATA_FFT8192 = unsigned(0x80000005);
+static _DELPHI_CONST unsigned BASS_DATA_FFT16384 = unsigned(0x80000006);
+static _DELPHI_CONST unsigned BASS_DATA_FFT32768 = unsigned(0x80000007);
+static _DELPHI_CONST System::Int8 BASS_DATA_FFT_INDIVIDUAL = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 BASS_DATA_FFT_NOWINDOW = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 BASS_DATA_FFT_REMOVEDC = System::Int8(0x40);
+static _DELPHI_CONST System::Byte BASS_DATA_FFT_COMPLEX = System::Byte(0x80);
+static _DELPHI_CONST System::Word BASS_DATA_FFT_NYQUIST = System::Word(0x100);
+static _DELPHI_CONST System::Int8 BASS_LEVEL_MONO = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_LEVEL_STEREO = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_LEVEL_RMS = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 BASS_LEVEL_VOLPAN = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 BASS_LEVEL_NOREMOVE = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 BASS_TAG_ID3 = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 BASS_TAG_ID3V2 = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_TAG_OGG = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_TAG_HTTP = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 BASS_TAG_ICY = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 BASS_TAG_META = System::Int8(0x5);
+static _DELPHI_CONST System::Int8 BASS_TAG_APE = System::Int8(0x6);
+static _DELPHI_CONST System::Int8 BASS_TAG_MP4 = System::Int8(0x7);
+static _DELPHI_CONST System::Int8 BASS_TAG_WMA = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 BASS_TAG_VENDOR = System::Int8(0x9);
+static _DELPHI_CONST System::Int8 BASS_TAG_LYRICS3 = System::Int8(0xa);
+static _DELPHI_CONST System::Int8 BASS_TAG_CA_CODEC = System::Int8(0xb);
+static _DELPHI_CONST System::Int8 BASS_TAG_MF = System::Int8(0xd);
+static _DELPHI_CONST System::Int8 BASS_TAG_WAVEFORMAT = System::Int8(0xe);
+static _DELPHI_CONST System::Int8 BASS_TAG_AM_NAME = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 BASS_TAG_ID3V2_2 = System::Int8(0x11);
+static _DELPHI_CONST System::Int8 BASS_TAG_AM_MIME = System::Int8(0x12);
+static _DELPHI_CONST System::Int8 BASS_TAG_LOCATION = System::Int8(0x13);
+static _DELPHI_CONST System::Word BASS_TAG_RIFF_INFO = System::Word(0x100);
+static _DELPHI_CONST System::Word BASS_TAG_RIFF_BEXT = System::Word(0x101);
+static _DELPHI_CONST System::Word BASS_TAG_RIFF_CART = System::Word(0x102);
+static _DELPHI_CONST System::Word BASS_TAG_RIFF_DISP = System::Word(0x103);
+static _DELPHI_CONST System::Word BASS_TAG_RIFF_CUE = System::Word(0x104);
+static _DELPHI_CONST System::Word BASS_TAG_RIFF_SMPL = System::Word(0x105);
+static _DELPHI_CONST System::Word BASS_TAG_APE_BINARY = System::Word(0x1000);
+static _DELPHI_CONST int BASS_TAG_MUSIC_NAME = int(0x10000);
+static _DELPHI_CONST int BASS_TAG_MUSIC_MESSAGE = int(0x10001);
+static _DELPHI_CONST int BASS_TAG_MUSIC_ORDERS = int(0x10002);
+static _DELPHI_CONST int BASS_TAG_MUSIC_AUTH = int(0x10003);
+static _DELPHI_CONST int BASS_TAG_MUSIC_INST = int(0x10100);
+static _DELPHI_CONST int BASS_TAG_MUSIC_CHAN = int(0x10200);
+static _DELPHI_CONST int BASS_TAG_MUSIC_SAMPLE = int(0x10300);
+static _DELPHI_CONST System::Int8 BASS_POS_BYTE = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 BASS_POS_MUSIC_ORDER = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_POS_OGG = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 BASS_POS_END = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 BASS_POS_LOOP = System::Int8(0x11);
+static _DELPHI_CONST int BASS_POS_FLUSH = int(0x1000000);
+static _DELPHI_CONST int BASS_POS_RESET = int(0x2000000);
+static _DELPHI_CONST int BASS_POS_RELATIVE = int(0x4000000);
+static _DELPHI_CONST int BASS_POS_INEXACT = int(0x8000000);
+static _DELPHI_CONST int BASS_POS_DECODE = int(0x10000000);
+static _DELPHI_CONST int BASS_POS_DECODETO = int(0x20000000);
+static _DELPHI_CONST int BASS_POS_SCAN = int(0x40000000);
+static _DELPHI_CONST int BASS_NODEVICE = int(0x20000);
+static _DELPHI_CONST int BASS_INPUT_OFF = int(0x10000);
+static _DELPHI_CONST int BASS_INPUT_ON = int(0x20000);
+static _DELPHI_CONST unsigned BASS_INPUT_TYPE_MASK = unsigned(0xff000000);
+static _DELPHI_CONST System::Int8 BASS_INPUT_TYPE_UNDEF = System::Int8(0x0);
+static _DELPHI_CONST int BASS_INPUT_TYPE_DIGITAL = int(0x1000000);
+static _DELPHI_CONST int BASS_INPUT_TYPE_LINE = int(0x2000000);
+static _DELPHI_CONST int BASS_INPUT_TYPE_MIC = int(0x3000000);
+static _DELPHI_CONST int BASS_INPUT_TYPE_SYNTH = int(0x4000000);
+static _DELPHI_CONST int BASS_INPUT_TYPE_CD = int(0x5000000);
+static _DELPHI_CONST int BASS_INPUT_TYPE_PHONE = int(0x6000000);
+static _DELPHI_CONST int BASS_INPUT_TYPE_SPEAKER = int(0x7000000);
+static _DELPHI_CONST int BASS_INPUT_TYPE_WAVE = int(0x8000000);
+static _DELPHI_CONST int BASS_INPUT_TYPE_AUX = int(0x9000000);
+static _DELPHI_CONST int BASS_INPUT_TYPE_ANALOG = int(0xa000000);
+static _DELPHI_CONST System::Int8 BASS_FX_DX8_CHORUS = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 BASS_FX_DX8_COMPRESSOR = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_FX_DX8_DISTORTION = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_FX_DX8_ECHO = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 BASS_FX_DX8_FLANGER = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 BASS_FX_DX8_GARGLE = System::Int8(0x5);
+static _DELPHI_CONST System::Int8 BASS_FX_DX8_I3DL2REVERB = System::Int8(0x6);
+static _DELPHI_CONST System::Int8 BASS_FX_DX8_PARAMEQ = System::Int8(0x7);
+static _DELPHI_CONST System::Int8 BASS_FX_DX8_REVERB = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 BASS_FX_VOLUME = System::Int8(0x9);
+static _DELPHI_CONST System::Int8 BASS_DX8_PHASE_NEG_180 = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 BASS_DX8_PHASE_NEG_90 = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 BASS_DX8_PHASE_ZERO = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 BASS_DX8_PHASE_90 = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 BASS_DX8_PHASE_180 = System::Int8(0x4);
+#define STREAMPROC_DUMMY (void *)(0)
+#define STREAMPROC_PUSH (void *)(0xffffffff)
+#define STREAMPROC_DEVICE (void *)(0xfffffffe)
+#define STREAMPROC_DEVICE_3D (void *)(0xfffffffd)
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_SetConfig)(DWORD option, DWORD value);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_GetConfig)(DWORD option);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_SetConfigPtr)(DWORD option, void * value);
+extern DELPHI_PACKAGE void * __stdcall (*BASS_GetConfigPtr)(DWORD option);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_GetVersion)(void);
+extern DELPHI_PACKAGE int __stdcall (*BASS_ErrorGetCode)(void);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_GetDeviceInfo)(DWORD device, BASS_DEVICEINFO &info);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_Init)(System::LongInt device, DWORD freq, DWORD flags, HWND win, System::PGUID clsid);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_SetDevice)(DWORD device);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_GetDevice)(void);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_Free)(void);
+extern DELPHI_PACKAGE void * __stdcall (*BASS_GetDSoundObject)(DWORD obj);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_GetInfo)(BASS_INFO &info);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_Update)(DWORD length);
+extern DELPHI_PACKAGE float __stdcall (*BASS_GetCPU)(void);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_Start)(void);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_Stop)(void);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_Pause)(void);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_SetVolume)(float volume);
+extern DELPHI_PACKAGE float __stdcall (*BASS_GetVolume)(void);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_PluginLoad)(System::WideChar * filename, DWORD flags);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_PluginFree)(HPLUGIN handle);
+extern DELPHI_PACKAGE PBASS_PLUGININFO __stdcall (*BASS_PluginGetInfo)(HPLUGIN handle);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_Set3DFactors)(float distf, float rollf, float doppf);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_Get3DFactors)(float &distf, float &rollf, float &doppf);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_Set3DPosition)(BASS_3DVECTOR &pos, BASS_3DVECTOR &vel, BASS_3DVECTOR &front, BASS_3DVECTOR &top);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_Get3DPosition)(BASS_3DVECTOR &pos, BASS_3DVECTOR &vel, BASS_3DVECTOR &front, BASS_3DVECTOR &top);
+extern DELPHI_PACKAGE void __stdcall (*BASS_Apply3D)(void);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_SetEAXParameters)(System::LongInt env, float vol, float decay, float damp);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_GetEAXParameters)(DWORD &env, float &vol, float &decay, float &damp);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_MusicLoad)(BOOL mem, void * f, QWORD offset, DWORD length, DWORD flags, DWORD freq);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_MusicFree)(HMUSIC handle);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_SampleLoad)(BOOL mem, void * f, QWORD offset, DWORD length, DWORD max, DWORD flags);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_SampleCreate)(DWORD length, DWORD freq, DWORD chans, DWORD max, DWORD flags);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_SampleFree)(HSAMPLE handle);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_SampleSetData)(HSAMPLE handle, void * buffer);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_SampleGetData)(HSAMPLE handle, void * buffer);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_SampleGetInfo)(HSAMPLE handle, BASS_SAMPLE &info);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_SampleSetInfo)(HSAMPLE handle, BASS_SAMPLE &info);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_SampleGetChannel)(HSAMPLE handle, BOOL onlynew);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_SampleGetChannels)(HSAMPLE handle, void * channels);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_SampleStop)(HSAMPLE handle);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_StreamCreate)(DWORD freq, DWORD chans, DWORD flags, STREAMPROC proc, void * user);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_StreamCreateFile)(BOOL mem, void * f, QWORD offset, QWORD length, DWORD flags);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_StreamCreateURL)(char * url, DWORD offset, DWORD flags, DOWNLOADPROC proc, void * user);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_StreamCreateFileUser)(DWORD system, DWORD flags, BASS_FILEPROCS &procs, void * user);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_StreamFree)(HSTREAM handle);
+extern DELPHI_PACKAGE __int64 __stdcall (*BASS_StreamGetFilePosition)(HSTREAM handle, DWORD mode);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_StreamPutData)(HSTREAM handle, void * buffer, DWORD length);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_StreamPutFileData)(HSTREAM handle, void * buffer, DWORD length);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_RecordGetDeviceInfo)(DWORD device, BASS_DEVICEINFO &info);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_RecordInit)(System::LongInt device);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_RecordSetDevice)(DWORD device);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_RecordGetDevice)(void);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_RecordFree)(void);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_RecordGetInfo)(BASS_RECORDINFO &info);
+extern DELPHI_PACKAGE char * __stdcall (*BASS_RecordGetInputName)(System::LongInt input);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_RecordSetInput)(System::LongInt input, DWORD flags, float volume);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_RecordGetInput)(System::LongInt input, float &volume);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_RecordStart)(DWORD freq, DWORD chans, DWORD flags, RECORDPROC proc, void * user);
+extern DELPHI_PACKAGE double __stdcall (*BASS_ChannelBytes2Seconds)(DWORD handle, QWORD pos);
+extern DELPHI_PACKAGE __int64 __stdcall (*BASS_ChannelSeconds2Bytes)(DWORD handle, double pos);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_ChannelGetDevice)(DWORD handle);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelSetDevice)(DWORD handle, DWORD device);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_ChannelIsActive)(DWORD handle);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelGetInfo)(DWORD handle, BASS_CHANNELINFO &info);
+extern DELPHI_PACKAGE char * __stdcall (*BASS_ChannelGetTags)(HSTREAM handle, DWORD tags);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_ChannelFlags)(DWORD handle, DWORD flags, DWORD mask);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelUpdate)(DWORD handle, DWORD length);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelLock)(DWORD handle, BOOL lock);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelPlay)(DWORD handle, BOOL restart);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelStop)(DWORD handle);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelPause)(DWORD handle);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelSetAttribute)(DWORD handle, DWORD attrib, float value);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelGetAttribute)(DWORD handle, DWORD attrib, float &value);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelSlideAttribute)(DWORD handle, DWORD attrib, float value, DWORD time);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelIsSliding)(DWORD handle, DWORD attrib);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelSetAttributeEx)(DWORD handle, DWORD attrib, void * value, DWORD size);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_ChannelGetAttributeEx)(DWORD handle, DWORD attrib, void * value, DWORD size);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelSet3DAttributes)(DWORD handle, System::LongInt mode, float min, float max, System::LongInt iangle, System::LongInt oangle, System::LongInt outvol);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelGet3DAttributes)(DWORD handle, DWORD &mode, float &min, float &max, DWORD &iangle, DWORD &oangle, DWORD &outvol);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelSet3DPosition)(DWORD handle, BASS_3DVECTOR &pos, BASS_3DVECTOR &orient, BASS_3DVECTOR &vel);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelGet3DPosition)(DWORD handle, BASS_3DVECTOR &pos, BASS_3DVECTOR &orient, BASS_3DVECTOR &vel);
+extern DELPHI_PACKAGE __int64 __stdcall (*BASS_ChannelGetLength)(DWORD handle, DWORD mode);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelSetPosition)(DWORD handle, QWORD pos, DWORD mode);
+extern DELPHI_PACKAGE __int64 __stdcall (*BASS_ChannelGetPosition)(DWORD handle, DWORD mode);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_ChannelGetLevel)(DWORD handle);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelGetLevelEx)(DWORD handle, Winapi::Windows::PSingle levels, float length, DWORD flags);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_ChannelGetData)(DWORD handle, void * buffer, DWORD length);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_ChannelSetSync)(DWORD handle, DWORD type_, QWORD param, SYNCPROC proc, void * user);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelRemoveSync)(DWORD handle, HSYNC sync);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_ChannelSetDSP)(DWORD handle, DSPPROC proc, void * user, System::LongInt priority);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelRemoveDSP)(DWORD handle, HDSP dsp);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelSetLink)(DWORD handle, DWORD chan);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelRemoveLink)(DWORD handle, DWORD chan);
+extern DELPHI_PACKAGE unsigned __stdcall (*BASS_ChannelSetFX)(DWORD handle, DWORD type_, System::LongInt priority);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_ChannelRemoveFX)(DWORD handle, HFX fx);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_FXSetParameters)(HFX handle, void * par);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_FXGetParameters)(HFX handle, void * par);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_FXReset)(HFX handle);
+extern DELPHI_PACKAGE System::LongBool __stdcall (*BASS_FXSetPriority)(HFX handle, System::LongInt priority);
+extern DELPHI_PACKAGE DWORD __fastcall BASS_SPEAKER_N(DWORD n);
+extern DELPHI_PACKAGE BOOL __fastcall BASS_SetEAXPreset(System::LongInt env);
+extern DELPHI_PACKAGE bool __fastcall BASS_Load(System::WideChar * LibName);
+extern DELPHI_PACKAGE void __fastcall BASS_UnLoad(void);
+extern DELPHI_PACKAGE bool __fastcall BASS_IsLoaded(void);
+}	/* namespace Import */
+}	/* namespace Bass */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_BASS_IMPORT)
+using namespace Bass::Import;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_BASS)
+using namespace Bass;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// BASS_ImportHPP

+ 118 - 0
include/Win32/CUDA.DataAccess.hpp

@@ -0,0 +1,118 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'CUDA.DataAccess.pas' rev: 36.00 (Windows)
+
+#ifndef CUDA_DataAccessHPP
+#define CUDA_DataAccessHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.SysUtils.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Cuda
+{
+namespace Dataaccess
+{
+//-- forward type declarations -----------------------------------------------
+template<typename TScalar> class DELPHICLASS GCUDAHostElementAccess__1;
+//-- type declarations -------------------------------------------------------
+typedef System::Word THalfFloat;
+
+#pragma pack(push,4)
+// Template declaration generated by Delphi parameterized types is
+// used only for accessing Delphi variables and fields.
+// Don't instantiate with new type parameters in user code.
+template<typename TScalar> class PASCALIMPLEMENTATION GCUDAHostElementAccess__1 : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+	
+public:
+	typedef System::StaticArray<TScalar, 2> TVector2;
+	
+	typedef System::Int8 _1;
+	
+	typedef System::StaticArray<TScalar, 3> TVector3;
+	
+	typedef System::Int8 _2;
+	
+	typedef System::StaticArray<TScalar, 4> TVector4;
+	
+	typedef System::Int8 _3;
+	
+	
+public:
+	static _DELPHI_CONST int ElementSize = int(0x0);
+	
+	
+private:
+	__classmethod void __fastcall CheckElementSize(unsigned ACNum);
+	__classmethod TScalar __fastcall GetScalar();
+	__classmethod System::StaticArray<TScalar, 2> __fastcall GetVector2();
+	__classmethod System::StaticArray<TScalar, 3> __fastcall GetVector3();
+	__classmethod System::StaticArray<TScalar, 4> __fastcall GetVector4();
+	__classmethod void __fastcall SetScalar(const TScalar AValue);
+	__classmethod void __fastcall SetVector2(const System::StaticArray<TScalar, 2> AValue);
+	__classmethod void __fastcall SetVector3(const System::StaticArray<TScalar, 3> AValue);
+	__classmethod void __fastcall SetVector4(const System::StaticArray<TScalar, 4> AValue);
+	
+public:
+	__property TScalar Scalar = {read=GetScalar, write=SetScalar};
+	__property System::StaticArray<TScalar, 2> Vector2 = {read=GetVector2, write=SetVector2};
+	__property System::StaticArray<TScalar, 3> Vector3 = {read=GetVector3, write=SetVector3};
+	__property System::StaticArray<TScalar, 4> Vector4 = {read=GetVector4, write=SetVector4};
+public:
+	/* TObject.Create */ inline __fastcall GCUDAHostElementAccess__1() : System::TObject() { }
+	/* TObject.Destroy */ inline __fastcall virtual ~GCUDAHostElementAccess__1() { }
+	
+};
+
+#pragma pack(pop)
+
+typedef GCUDAHostElementAccess__1<System::Byte> UByteElement;
+
+typedef GCUDAHostElementAccess__1<System::Int8> ByteElement;
+
+typedef GCUDAHostElementAccess__1<System::Word> UShortElement;
+
+typedef GCUDAHostElementAccess__1<short> ShortElement;
+
+typedef GCUDAHostElementAccess__1<System::LongWord> UIntElement;
+
+typedef GCUDAHostElementAccess__1<System::LongInt> IntElement;
+
+typedef GCUDAHostElementAccess__1<THalfFloat> HalfElement;
+
+typedef GCUDAHostElementAccess__1<float> FloatElement;
+
+typedef GCUDAHostElementAccess__1<double> DoubleElement;
+
+//-- var, const, procedure ---------------------------------------------------
+extern DELPHI_PACKAGE System::PByte __fastcall GetElementAccessAddress(void);
+extern DELPHI_PACKAGE unsigned __fastcall GetElementAccessSize(void);
+extern DELPHI_PACKAGE void __fastcall SetElementAccessAddress(System::PByte AValue, unsigned ASize);
+}	/* namespace Dataaccess */
+}	/* namespace Cuda */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CUDA_DATAACCESS)
+using namespace Cuda::Dataaccess;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CUDA)
+using namespace Cuda;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// CUDA_DataAccessHPP

+ 180 - 0
include/Win32/CUDA.FourierTransform.hpp

@@ -0,0 +1,180 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'CUDA.FourierTransform.pas' rev: 36.00 (Windows)
+
+#ifndef CUDA_FourierTransformHPP
+#define CUDA_FourierTransformHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+#include <CUDA.Import.hpp>
+#include <CUDA.Runtime.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Cuda
+{
+namespace Fouriertransform
+{
+//-- forward type declarations -----------------------------------------------
+struct TcufftDoubleComplex;
+struct TcufftComplex;
+//-- type declarations -------------------------------------------------------
+typedef System::StaticArray<System::UnicodeString, 10> Cuda_Fouriertransform__1;
+
+typedef unsigned TcufftHandle;
+
+typedef float TcufftReal;
+
+typedef float *PcufftReal;
+
+typedef float TcufftRealfloat;
+
+typedef double *PcufftDoubleReal;
+
+typedef double TcufftDoubleReal;
+
+typedef TcufftDoubleComplex *PcufftDoubleComplex;
+
+struct DECLSPEC_DRECORD TcufftDoubleComplex
+{
+	
+public:
+	union
+	{
+		struct 
+		{
+			double X;
+			double Y;
+		};
+		struct 
+		{
+			System::StaticArray<double, 2> V;
+		};
+		
+	};
+};
+
+
+typedef TcufftComplex *PcufftComplex;
+
+struct DECLSPEC_DRECORD TcufftComplex
+{
+	
+public:
+	union
+	{
+		struct 
+		{
+			float X;
+			float Y;
+		};
+		struct 
+		{
+			System::StaticArray<float, 2> V;
+		};
+		
+	};
+};
+
+
+typedef System::Byte TcufftResult;
+
+typedef unsigned TcufftType;
+
+enum DECLSPEC_DENUM TcudaRoundMode : unsigned char { cudaRoundNearest, cudaRoundZero, cudaRoundPosInf, cudaRoundMinInf };
+
+typedef unsigned TcufftCompatibility;
+
+typedef TcufftResult __stdcall (*TcufftPlan1d)(/* out */ TcufftHandle &plan, int nx, TcufftType atype, int batch);
+
+typedef TcufftResult __stdcall (*TcufftPlan2d)(/* out */ TcufftHandle &plan, int nx, int ny, TcufftType atype);
+
+typedef TcufftResult __stdcall (*TcufftPlan3d)(/* out */ TcufftHandle &plan, int nx, int ny, int nz, TcufftType atype);
+
+typedef TcufftResult __stdcall (*TcufftDestroy)(TcufftHandle plan);
+
+typedef TcufftResult __stdcall (*TcufftPlanMany)(/* out */ TcufftHandle &plan, int rank, int &n, int &inembed, int istride, int idist, int &onembed, int ostride, int odist, TcufftType ctype, int batch);
+
+typedef TcufftResult __stdcall (*TcufftExecC2C)(TcufftHandle plan, PcufftComplex idata, PcufftComplex odata, int direction);
+
+typedef TcufftResult __stdcall (*TcufftExecR2C)(TcufftHandle plan, PcufftReal idata, PcufftComplex odata);
+
+typedef TcufftResult __stdcall (*TcufftExecC2R)(TcufftHandle plan, PcufftComplex idata, PcufftReal odata);
+
+typedef TcufftResult __stdcall (*TcufftExecZ2Z)(TcufftHandle plan, PcufftDoubleComplex idata, PcufftDoubleComplex odata, int direction);
+
+typedef TcufftResult __stdcall (*TcufftExecD2Z)(TcufftHandle plan, PcufftDoubleReal idata, PcufftDoubleComplex odata);
+
+typedef TcufftResult __stdcall (*TcufftExecZ2D)(TcufftHandle plan, PcufftDoubleComplex idata, PcufftDoubleReal odata);
+
+typedef TcufftResult __stdcall (*TcufftSetStream)(TcufftHandle p, int stream);
+
+typedef TcufftResult __stdcall (*TcufftSetCompatibilityMode)(TcufftHandle plan, TcufftCompatibility mode);
+
+//-- var, const, procedure ---------------------------------------------------
+extern DELPHI_PACKAGE Cuda_Fouriertransform__1 CUFFTDLLNAMES;
+static _DELPHI_CONST unsigned INVALID_CUFFT_HANDLE = unsigned(0xffffffff);
+extern DELPHI_PACKAGE TcufftResult CUFFT_SUCCESS;
+extern DELPHI_PACKAGE TcufftResult CUFFT_INVALID_PLAN;
+extern DELPHI_PACKAGE TcufftResult CUFFT_ALLOC_FAILED;
+extern DELPHI_PACKAGE TcufftResult CUFFT_INVALID_TYPE;
+extern DELPHI_PACKAGE TcufftResult CUFFT_INVALID_VALUE;
+extern DELPHI_PACKAGE TcufftResult CUFFT_INTERNAL_ERROR;
+extern DELPHI_PACKAGE TcufftResult CUFFT_EXEC_FAILED;
+extern DELPHI_PACKAGE TcufftResult CUFFT_SETUP_FAILED;
+extern DELPHI_PACKAGE TcufftResult CUFFT_INVALID_SIZE;
+static _DELPHI_CONST System::Int8 CUFFT_FORWARD = System::Int8(-1);
+static _DELPHI_CONST System::Int8 CUFFT_INVERSE = System::Int8(0x1);
+extern DELPHI_PACKAGE TcufftType CUFFT_R2C;
+extern DELPHI_PACKAGE TcufftType CUFFT_C2R;
+extern DELPHI_PACKAGE TcufftType CUFFT_C2C;
+extern DELPHI_PACKAGE TcufftType CUFFT_D2Z;
+extern DELPHI_PACKAGE TcufftType CUFFT_Z2D;
+extern DELPHI_PACKAGE TcufftType CUFFT_Z2Z;
+extern DELPHI_PACKAGE TcufftCompatibility CUFFT_COMPATIBILITY_NORMAL;
+extern DELPHI_PACKAGE TcufftCompatibility CUFFT_COMPATIBILITY_FFTW_PADDING;
+extern DELPHI_PACKAGE TcufftCompatibility CUFFT_COMPATIBILITY_FFTW_C2R_ASYMMETRIC;
+extern DELPHI_PACKAGE TcufftCompatibility CUFFT_COMPATIBILITY_FFTW;
+extern DELPHI_PACKAGE TcufftPlan1d cufftPlan1d;
+extern DELPHI_PACKAGE TcufftPlan2d cufftPlan2d;
+extern DELPHI_PACKAGE TcufftPlan3d cufftPlan3d;
+extern DELPHI_PACKAGE TcufftDestroy cufftDestroy;
+extern DELPHI_PACKAGE TcufftPlanMany cufftPlanMany;
+extern DELPHI_PACKAGE TcufftExecC2C cufftExecC2C;
+extern DELPHI_PACKAGE TcufftExecR2C cufftExecR2C;
+extern DELPHI_PACKAGE TcufftExecC2R cufftExecC2R;
+extern DELPHI_PACKAGE TcufftExecZ2Z cufftExecZ2Z;
+extern DELPHI_PACKAGE TcufftExecD2Z cufftExecD2Z;
+extern DELPHI_PACKAGE TcufftExecZ2D cufftExecZ2D;
+extern DELPHI_PACKAGE TcufftSetStream cufftSetStream;
+extern DELPHI_PACKAGE TcufftSetCompatibilityMode cufftSetCompatibilityMode;
+extern DELPHI_PACKAGE bool __fastcall InitCUFFT(void);
+extern DELPHI_PACKAGE void __fastcall CloseCUFFT(void);
+extern DELPHI_PACKAGE bool __fastcall InitCUFFTFromLibrary(const System::WideString LibName);
+extern DELPHI_PACKAGE bool __fastcall IsCUFFTInitialized(void);
+extern DELPHI_PACKAGE System::UnicodeString __fastcall Get_CUDA_FFT_Error_String(TcufftResult AError);
+}	/* namespace Fouriertransform */
+}	/* namespace Cuda */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CUDA_FOURIERTRANSFORM)
+using namespace Cuda::Fouriertransform;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CUDA)
+using namespace Cuda;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// CUDA_FourierTransformHPP

+ 661 - 0
include/Win32/CUDA.Import.hpp

@@ -0,0 +1,661 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'CUDA.Import.pas' rev: 36.00 (Windows)
+
+#ifndef CUDA_ImportHPP
+#define CUDA_ImportHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Cuda
+{
+namespace Import
+{
+//-- forward type declarations -----------------------------------------------
+struct DECLSPEC_DRECORD TCUcontext
+{
+};
+
+
+struct DECLSPEC_DRECORD TCUmodule
+{
+};
+
+
+struct DECLSPEC_DRECORD TCUfunction
+{
+};
+
+
+struct DECLSPEC_DRECORD TCUarray
+{
+};
+
+
+struct DECLSPEC_DRECORD TCUtexref
+{
+};
+
+
+struct DECLSPEC_DRECORD TCUevent
+{
+};
+
+
+struct DECLSPEC_DRECORD TCUstream
+{
+};
+
+
+struct DECLSPEC_DRECORD TCUgraphicsResource
+{
+};
+
+
+struct TCUdevprop;
+struct TcudaFuncAttributes;
+struct TCUDA_MEMCPY2D;
+struct TCUDA_MEMCPY3D;
+struct TCUDA_ARRAY_DESCRIPTOR;
+struct TCUDA_ARRAY3D_DESCRIPTOR;
+//-- type declarations -------------------------------------------------------
+typedef void * TCUdeviceptr;
+
+typedef int TCUdevice;
+
+typedef TCUcontext *PCUcontext;
+
+typedef TCUmodule *PCUmodule;
+
+typedef TCUfunction *PCUfunction;
+
+typedef TCUarray *PCUarray;
+
+typedef TCUtexref *PCUtexref;
+
+typedef TCUevent *PCUevent;
+
+typedef TCUstream *PCUstream;
+
+typedef TCUgraphicsResource *PCUgraphicsResource;
+
+typedef PCUgraphicsResource *PPCUgraphicsResource;
+
+enum DECLSPEC_DENUM TCUctx_flags : unsigned char { CU_CTX_SCHED_AUTO, CU_CTX_SCHED_SPIN, CU_CTX_SCHED_YIELD, CU_CTX_SCHED_MASK, CU_CTX_BLOCKING_SYNC, CU_CTX_MAP_HOST = 8, CU_CTX_FLAGS_MASK = 15 };
+
+enum DECLSPEC_DENUM TCUevent_flags : unsigned char { CU_EVENT_DEFAULT, CU_EVENT_BLOCKING_SYNC };
+
+enum DECLSPEC_DENUM TCUarray_format : unsigned char { CU_AD_FORMAT_UNSIGNED_INT8 = 1, CU_AD_FORMAT_UNSIGNED_INT16, CU_AD_FORMAT_UNSIGNED_INT32, CU_AD_FORMAT_SIGNED_INT8 = 8, CU_AD_FORMAT_SIGNED_INT16, CU_AD_FORMAT_SIGNED_INT32, CU_AD_FORMAT_HALF = 16, CU_AD_FORMAT_FLOAT = 32 };
+
+enum DECLSPEC_DENUM TCUaddress_mode : unsigned char { CU_TR_ADDRESS_MODE_WRAP, CU_TR_ADDRESS_MODE_CLAMP, CU_TR_ADDRESS_MODE_MIRROR };
+
+enum DECLSPEC_DENUM TCUfilter_mode : unsigned char { CU_TR_FILTER_MODE_POINT, CU_TR_FILTER_MODE_LINEAR };
+
+enum DECLSPEC_DENUM TCUdevice_attribute : unsigned char { CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK = 1, CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X, CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Y, CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Z, CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X, CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Y, CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Z, CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK, CU_DEVICE_ATTRIBUTE_SHARED_MEMORY_PER_BLOCK = 8, CU_DEVICE_ATTRIBUTE_TOTAL_CONSTANT_MEMORY, CU_DEVICE_ATTRIBUTE_WARP_SIZE, CU_DEVICE_ATTRIBUTE_MAX_PITCH, CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK, CU_DEVICE_ATTRIBUTE_REGISTERS_PER_BLOCK = 12, CU_DEVICE_ATTRIBUTE_CLOCK_RATE, CU_DEVICE_ATTRIBUTE_TEXTURE_ALIGNMENT, CU_DEVICE_ATTRIBUTE_GPU_OVERLAP, CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT, 
+	CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT, CU_DEVICE_ATTRIBUTE_INTEGRATED, CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY, CU_DEVICE_ATTRIBUTE_COMPUTE_MODE };
+
+enum DECLSPEC_DENUM TcudaLimit : unsigned char { cudaLimitStackSize, cudaLimitPrintfFifoSize };
+
+struct DECLSPEC_DRECORD TCUdevprop
+{
+public:
+	int maxThreadsPerBlock;
+	System::StaticArray<int, 3> maxThreadsDim;
+	System::StaticArray<int, 3> maxGridSize;
+	int sharedMemPerBlock;
+	int totalConstantMemory;
+	int SIMDWidth;
+	int memPitch;
+	int regsPerBlock;
+	int clockRate;
+	int textureAlign;
+};
+
+
+enum DECLSPEC_DENUM TCUfunction_attribute : unsigned char { CU_FUNC_ATTRIBUTE_MAX_THREADS_PER_BLOCK, CU_FUNC_ATTRIBUTE_SHARED_SIZE_BYTES, CU_FUNC_ATTRIBUTE_CONST_SIZE_BYTES, CU_FUNC_ATTRIBUTE_LOCAL_SIZE_BYTES, CU_FUNC_ATTRIBUTE_NUM_REGS, CU_FUNC_ATTRIBUTE_MAX };
+
+enum DECLSPEC_DENUM TCUmemorytype : unsigned char { CU_MEMORYTYPE_HOST = 1, CU_MEMORYTYPE_DEVICE, CU_MEMORYTYPE_ARRAY };
+
+enum DECLSPEC_DENUM TCUcomputemode : unsigned char { CU_COMPUTEMODE_DEFAULT, CU_COMPUTEMODE_EXCLUSIVE, CU_COMPUTEMODE_PROHIBITED };
+
+enum DECLSPEC_DENUM TCUjit_option : unsigned char { CU_JIT_MAX_REGISTERS, CU_JIT_THREADS_PER_BLOCK, CU_JIT_WALL_TIME, CU_JIT_INFO_LOG_BUFFER, CU_JIT_INFO_LOG_BUFFER_SIZE_BYTES, CU_JIT_ERROR_LOG_BUFFER, CU_JIT_ERROR_LOG_BUFFER_SIZE_BYTES, CU_JIT_OPTIMIZATION_LEVEL, CU_JIT_TARGET_FROM_CUCONTEXT, CU_JIT_TARGET, CU_JIT_FALLBACK_STRATEGY };
+
+enum DECLSPEC_DENUM TCUjit_target : unsigned char { CU_TARGET_COMPUTE_10, CU_TARGET_COMPUTE_11, CU_TARGET_COMPUTE_12, CU_TARGET_COMPUTE_13 };
+
+enum DECLSPEC_DENUM TCUjit_fallback : unsigned char { CU_PREFER_PTX, CU_PREFER_BINARY };
+
+enum DECLSPEC_DENUM TCUgraphicsRegisterFlags : unsigned char { CU_GRAPHICS_REGISTER_FLAGS_NONE };
+
+enum DECLSPEC_DENUM TCUgraphicsMapResourceFlags : unsigned char { CU_GRAPHICS_MAP_RESOURCE_FLAGS_NONE, CU_GRAPHICS_MAP_RESOURCE_FLAGS_READ_ONLY, CU_GRAPHICS_MAP_RESOURCE_FLAGS_WRITE_DISCARD };
+
+enum DECLSPEC_DENUM TCUarray_cubemap_face : unsigned char { CU_CUBEMAP_FACE_POSITIVE_X, CU_CUBEMAP_FACE_NEGATIVE_X, CU_CUBEMAP_FACE_POSITIVE_Y, CU_CUBEMAP_FACE_NEGATIVE_Y, CU_CUBEMAP_FACE_POSITIVE_Z, CU_CUBEMAP_FACE_NEGATIVE_Z };
+
+struct DECLSPEC_DRECORD TcudaFuncAttributes
+{
+public:
+	System::NativeUInt sharedSizeBytes;
+	System::NativeUInt constSizeBytes;
+	System::NativeUInt localSizeBytes;
+	int maxThreadsPerBlock;
+	int numRegs;
+	int ptxVersion;
+	int binaryVersion;
+	System::StaticArray<int, 6> __cudaReserved;
+};
+
+
+enum DECLSPEC_DENUM TcudaFuncCache : unsigned char { cudaFuncCachePreferNone, cudaFuncCachePreferShared, cudaFuncCachePreferL1 };
+
+typedef unsigned TCUresult;
+
+typedef TCUDA_MEMCPY2D *PCUDA_MEMCPY2D;
+
+struct DECLSPEC_DRECORD TCUDA_MEMCPY2D
+{
+public:
+	unsigned srcXInBytes;
+	unsigned srcY;
+	TCUmemorytype srcMemoryType;
+	void *srcHost;
+	TCUdeviceptr srcDevice;
+	PCUarray srcArray;
+	unsigned srcPitch;
+	unsigned dstXInBytes;
+	unsigned dstY;
+	TCUmemorytype dstMemoryType;
+	void *dstHost;
+	TCUdeviceptr dstDevice;
+	PCUarray dstArray;
+	unsigned dstPitch;
+	unsigned WidthInBytes;
+	unsigned Height;
+};
+
+
+struct DECLSPEC_DRECORD TCUDA_MEMCPY3D
+{
+public:
+	unsigned srcXInBytes;
+	unsigned srcY;
+	unsigned srcZ;
+	unsigned srcLOD;
+	TCUmemorytype srcMemoryType;
+	void *srcHost;
+	TCUdeviceptr srcDevice;
+	PCUarray srcArray;
+	void *reserved0;
+	unsigned srcPitch;
+	unsigned srcHeight;
+	unsigned dstXInBytes;
+	unsigned dstY;
+	unsigned dstZ;
+	unsigned dstLOD;
+	TCUmemorytype dstMemoryType;
+	void *dstHost;
+	TCUdeviceptr dstDevice;
+	PCUarray dstArray;
+	void *reserved1;
+	unsigned dstPitch;
+	unsigned dstHeight;
+	unsigned WidthInBytes;
+	unsigned Height;
+	unsigned Depth;
+};
+
+
+typedef TCUDA_ARRAY_DESCRIPTOR *PCUDA_ARRAY_DESCRIPTOR;
+
+struct DECLSPEC_DRECORD TCUDA_ARRAY_DESCRIPTOR
+{
+public:
+	unsigned Width;
+	unsigned Height;
+	TCUarray_format Format;
+	unsigned NumChannels;
+};
+
+
+struct DECLSPEC_DRECORD TCUDA_ARRAY3D_DESCRIPTOR
+{
+public:
+	unsigned Width;
+	unsigned Height;
+	unsigned Depth;
+	TCUarray_format Format;
+	unsigned NumChannels;
+	unsigned Flags;
+};
+
+
+enum DECLSPEC_DENUM TCUGLmap_flags : unsigned char { CU_GL_MAP_RESOURCE_FLAGS_NONE, CU_GL_MAP_RESOURCE_FLAGS_READ_ONLY, CU_GL_MAP_RESOURCE_FLAGS_WRITE_DISCARD };
+
+typedef System::StaticArray<unsigned, 3> TDim3;
+
+typedef void * HGPUNV;
+
+typedef TCUresult __stdcall (*TcuInit)(unsigned Flags);
+
+typedef TCUresult __stdcall (*TcuDriverGetVersion)(/* out */ int &driverVersion);
+
+typedef TCUresult __stdcall (*TcuDeviceGet)(TCUdevice &device, int ordinal);
+
+typedef TCUresult __stdcall (*TcuDeviceGetCount)(int &count);
+
+typedef TCUresult __stdcall (*TcuDeviceGetName)(char * name, int len, TCUdevice dev);
+
+typedef TCUresult __stdcall (*TcuDeviceComputeCapability)(int &major, int &minor, TCUdevice dev);
+
+typedef TCUresult __stdcall (*TcuDeviceTotalMem)(PSIZE_T bytes, TCUdevice dev);
+
+typedef TCUresult __stdcall (*TcuDeviceGetProperties)(TCUdevprop &prop, TCUdevice dev);
+
+typedef TCUresult __stdcall (*TcuDeviceGetAttribute)(PSIZE_T pi, TCUdevice_attribute attrib, TCUdevice dev);
+
+typedef TCUresult __stdcall (*TcuCtxCreate)(PCUcontext &pctx, unsigned Flags, TCUdevice dev);
+
+typedef TCUresult __stdcall (*TcuCtxDestroy)(PCUcontext ctx);
+
+typedef TCUresult __stdcall (*TcuCtxAttach)(PCUcontext &pctx, unsigned Flags);
+
+typedef TCUresult __stdcall (*TcuCtxDetach)(PCUcontext ctx);
+
+typedef TCUresult __stdcall (*TcuCtxPushCurrent)(PCUcontext ctx);
+
+typedef TCUresult __stdcall (*TcuCtxPopCurrent)(PCUcontext &pctx);
+
+typedef TCUresult __stdcall (*TcuCtxGetDevice)(TCUdevice &device);
+
+typedef TCUresult __stdcall (*TcuCtxSynchronize)(void);
+
+typedef TCUresult __stdcall (*TcuModuleLoad)(PCUmodule &module, const char * fname);
+
+typedef TCUresult __stdcall (*TcuModuleLoadData)(PCUmodule &module, const char * image);
+
+typedef TCUresult __stdcall (*TcuModuleLoadDataEx)(PCUmodule &module, void *image, unsigned numOptions, TCUjit_option &options, void *optionValues);
+
+typedef TCUresult __stdcall (*TcuModuleLoadFatBinary)(PCUmodule &module, void *fatCubin);
+
+typedef TCUresult __stdcall (*TcuModuleUnload)(PCUmodule hmod);
+
+typedef TCUresult __stdcall (*TcuModuleGetFunction)(/* out */ PCUfunction &hfunc, PCUmodule hmod, const char * name);
+
+typedef TCUresult __stdcall (*TcuModuleGetGlobal)(/* out */ TCUdeviceptr &dptr, unsigned &bytes, PCUmodule hmod, const char * name);
+
+typedef TCUresult __stdcall (*TcuModuleGetTexRef)(/* out */ PCUtexref &pTexRef, PCUmodule hmod, const char * name);
+
+typedef TCUresult __stdcall (*TcuMemGetInfo)(unsigned &free, unsigned &total);
+
+typedef TCUresult __stdcall (*TcuMemAlloc)(TCUdeviceptr &dptr, unsigned bytesize);
+
+typedef TCUresult __stdcall (*TcuMemAllocPitch)(TCUdeviceptr &dptr, unsigned &pPitch, unsigned WidthInBytes, unsigned Height, unsigned ElementSizeBytes);
+
+typedef TCUresult __stdcall (*TcuMemFree)(TCUdeviceptr dptr);
+
+typedef TCUresult __stdcall (*TcuMemGetAddressRange)(TCUdeviceptr &pbase, unsigned &psize, TCUdeviceptr dptr);
+
+typedef TCUresult __stdcall (*TcuMemAllocHost)(void *pp, unsigned bytesize);
+
+typedef TCUresult __stdcall (*TcuMemFreeHost)(void * p);
+
+typedef TCUresult __stdcall (*TcuMemHostAlloc)(void * &pp, unsigned bytesize, unsigned Flags);
+
+typedef TCUresult __stdcall (*TcuMemHostGetDevicePointer)(TCUdeviceptr &pdptr, void * p, unsigned Flags);
+
+typedef TCUresult __stdcall (*TcuMemHostGetFlags)(unsigned &pFlags, void *p);
+
+typedef TCUresult __stdcall (*TcuMemcpyHtoD)(TCUdeviceptr dstDevice, const void * srcHost, unsigned ByteCount);
+
+typedef TCUresult __stdcall (*TcuMemcpyDtoH)(const void * dstHost, TCUdeviceptr srcDevice, unsigned ByteCount);
+
+typedef TCUresult __stdcall (*TcuMemcpyDtoD)(TCUdeviceptr dstDevice, TCUdeviceptr srcDevice, unsigned ByteCount);
+
+typedef TCUresult __stdcall (*TcuMemcpyDtoDAsync)(TCUdeviceptr dstDevice, TCUdeviceptr srcDevice, unsigned ByteCount, PCUstream hStream);
+
+typedef TCUresult __stdcall (*TcuMemcpyDtoA)(PCUarray dstArray, unsigned dstIndex, TCUdeviceptr srcDevice, unsigned ByteCount);
+
+typedef TCUresult __stdcall (*TcuMemcpyAtoD)(TCUdeviceptr dstDevice, PCUarray hSrc, unsigned SrcIndex, unsigned ByteCount);
+
+typedef TCUresult __stdcall (*TcuMemcpyHtoA)(PCUarray dstArray, unsigned dstIndex, void * pSrc, unsigned ByteCount);
+
+typedef TCUresult __stdcall (*TcuMemcpyAtoH)(void * dstHost, PCUarray srcArray, unsigned SrcIndex, unsigned ByteCount);
+
+typedef TCUresult __stdcall (*TcuMemcpyAtoA)(PCUarray dstArray, unsigned dstIndex, PCUarray srcArray, unsigned SrcIndex, unsigned ByteCount);
+
+typedef TCUresult __stdcall (*TcuMemcpy2D)(const PCUDA_MEMCPY2D pCopy);
+
+typedef TCUresult __stdcall (*TcuMemcpy2DUnaligned)(TCUDA_MEMCPY2D &pCopy);
+
+typedef TCUresult __stdcall (*TcuMemcpy3D)(TCUDA_MEMCPY3D &pCopy);
+
+typedef TCUresult __stdcall (*TcuMemcpyHtoDAsync)(TCUdeviceptr dstDevice, void *srcHost, unsigned ByteCount, PCUstream hStream);
+
+typedef TCUresult __stdcall (*TcuMemcpyDtoHAsync)(void *dstHost, TCUdeviceptr srcDevice, unsigned ByteCount, PCUstream hStream);
+
+typedef TCUresult __stdcall (*TcuMemcpyHtoAAsync)(PCUarray dstArray, unsigned dstIndex, void *pSrc, unsigned ByteCount, PCUstream hStream);
+
+typedef TCUresult __stdcall (*TcuMemcpyAtoHAsync)(void *dstHost, PCUstream srcArray, unsigned SrcIndex, unsigned ByteCount, PCUstream hStream);
+
+typedef TCUresult __stdcall (*TcuMemcpy2DAsync)(TCUDA_MEMCPY2D &pCopy, PCUstream hStream);
+
+typedef TCUresult __stdcall (*TcuMemcpy3DAsync)(TCUDA_MEMCPY3D &pCopy, PCUstream hStream);
+
+typedef TCUresult __stdcall (*TcuMemsetD8)(TCUdeviceptr dstDevice, System::Byte ub, unsigned N);
+
+typedef TCUresult __stdcall (*TcuMemsetD16)(TCUdeviceptr dstDevice, System::Word uw, unsigned N);
+
+typedef TCUresult __stdcall (*TcuMemsetD32)(TCUdeviceptr dstDevice, unsigned ui, unsigned N);
+
+typedef TCUresult __stdcall (*TcuMemsetD2D8)(TCUdeviceptr dstDevice, unsigned dstPitch, System::Byte ub, unsigned Width, unsigned Height);
+
+typedef TCUresult __stdcall (*TcuMemsetD2D16)(TCUdeviceptr dstDevice, unsigned dstPitch, System::Word uw, unsigned Width, unsigned Height);
+
+typedef TCUresult __stdcall (*TcuMemsetD2D32)(TCUdeviceptr dstDevice, unsigned dstPitch, unsigned ui, unsigned Width, unsigned Height);
+
+typedef TCUresult __stdcall (*TcuFuncSetBlockShape)(PCUfunction hfunc, int x, int y, int z);
+
+typedef TCUresult __stdcall (*TcuFuncSetSharedSize)(PCUfunction hfunc, unsigned bytes);
+
+typedef TCUresult __stdcall (*TcuFuncGetAttribute)(int &pi, TCUfunction_attribute attrib, PCUfunction hfunc);
+
+typedef TCUresult __stdcall (*TcuArrayCreate)(PCUarray &pHandle, TCUDA_ARRAY_DESCRIPTOR &pAllocateArray);
+
+typedef TCUresult __stdcall (*TcuArrayGetDescriptor)(TCUDA_ARRAY_DESCRIPTOR &pArrayDescriptor, PCUarray hArray);
+
+typedef TCUresult __stdcall (*TcuArrayDestroy)(PCUarray hArray);
+
+typedef TCUresult __stdcall (*TcuArray3DCreate)(PCUarray &pHandle, TCUDA_ARRAY3D_DESCRIPTOR &pAllocateArray);
+
+typedef TCUresult __stdcall (*TcuArray3DGetDescriptor)(TCUDA_ARRAY3D_DESCRIPTOR &pArrayDescriptor, PCUarray hArray);
+
+typedef TCUresult __stdcall (*TcuTexRefCreate)(PCUtexref &pTexRef);
+
+typedef TCUresult __stdcall (*TcuTexRefDestroy)(PCUtexref hTexRef);
+
+typedef TCUresult __stdcall (*TcuTexRefSetArray)(PCUtexref hTexRef, PCUarray hArray, unsigned Flags);
+
+typedef TCUresult __stdcall (*TcuTexRefSetAddress)(unsigned &ByteOffset, PCUtexref hTexRef, TCUdeviceptr dptr, unsigned bytes);
+
+typedef TCUresult __stdcall (*TcuTexRefSetAddress2D)(PCUtexref hTexRef, TCUDA_ARRAY_DESCRIPTOR &desc, TCUdeviceptr dptr, unsigned Pitch);
+
+typedef TCUresult __stdcall (*TcuTexRefSetFormat)(PCUtexref hTexRef, TCUarray_format fmt, int NumPackedComponents);
+
+typedef TCUresult __stdcall (*TcuTexRefSetAddressMode)(PCUtexref hTexRef, int dim, TCUaddress_mode am);
+
+typedef TCUresult __stdcall (*TcuTexRefSetFilterMode)(PCUtexref hTexRef, TCUfilter_mode fm);
+
+typedef TCUresult __stdcall (*TcuTexRefSetFlags)(PCUtexref hTexRef, unsigned Flags);
+
+typedef TCUresult __stdcall (*TcuTexRefGetAddress)(TCUdeviceptr &pdptr, PCUtexref hTexRef);
+
+typedef TCUresult __stdcall (*TcuTexRefGetArray)(PCUarray &phArray, PCUtexref hTexRef);
+
+typedef TCUresult __stdcall (*TcuTexRefGetAddressMode)(TCUaddress_mode &pam, PCUtexref hTexRef, int dim);
+
+typedef TCUresult __stdcall (*TcuTexRefGetFilterMode)(TCUfilter_mode &pfm, PCUtexref hTexRef);
+
+typedef TCUresult __stdcall (*TcuTexRefGetFormat)(TCUarray_format &pFormat, int &pNumChannels, PCUtexref hTexRef);
+
+typedef TCUresult __stdcall (*TcuTexRefGetFlags)(unsigned &pFlags, PCUtexref hTexRef);
+
+typedef TCUresult __stdcall (*TcuParamSetSize)(PCUfunction hfunc, unsigned numbytes);
+
+typedef TCUresult __stdcall (*TcuParamSeti)(PCUfunction hfunc, int offset, unsigned value);
+
+typedef TCUresult __stdcall (*TcuParamSetf)(PCUfunction hfunc, int offset, float value);
+
+typedef TCUresult __stdcall (*TcuParamSetv)(PCUfunction hfunc, int offset, void *ptr, unsigned numbytes);
+
+typedef TCUresult __stdcall (*TcuParamSetTexRef)(PCUfunction hfunc, int texunit, PCUtexref hTexRef);
+
+typedef TCUresult __stdcall (*TcuLaunch)(PCUfunction f);
+
+typedef TCUresult __stdcall (*TcuLaunchGrid)(PCUfunction f, int grid_width, int grid_height);
+
+typedef TCUresult __stdcall (*TcuLaunchGridAsync)(PCUfunction f, int grid_width, int grid_height, PCUstream hStream);
+
+typedef TCUresult __stdcall (*TcuEventCreate)(PCUevent &phEvent, unsigned Flags);
+
+typedef TCUresult __stdcall (*TcuEventRecord)(PCUevent hEvent, PCUstream hStream);
+
+typedef TCUresult __stdcall (*TcuEventQuery)(PCUevent hEvent);
+
+typedef TCUresult __stdcall (*TcuEventSynchronize)(PCUevent hEvent);
+
+typedef TCUresult __stdcall (*TcuEventDestroy)(PCUevent hEvent);
+
+typedef TCUresult __stdcall (*TcuEventElapsedTime)(float &pMilliseconds, PCUevent hStart, PCUevent hEnd);
+
+typedef TCUresult __stdcall (*TcuStreamCreate)(PCUstream &phStream, unsigned Flags);
+
+typedef TCUresult __stdcall (*TcuStreamQuery)(PCUstream hStream);
+
+typedef TCUresult __stdcall (*TcuStreamSynchronize)(PCUstream hStream);
+
+typedef TCUresult __stdcall (*TcuStreamDestroy)(PCUstream hStream);
+
+typedef TCUresult __stdcall (*TcuGLCtxCreate)(PCUcontext &pctx, unsigned Flags, TCUdevice device);
+
+typedef TCUresult __stdcall (*TcuGraphicsGLRegisterBuffer)(PCUgraphicsResource &pCudaResource, unsigned buffer, TCUgraphicsMapResourceFlags Flags);
+
+typedef TCUresult __stdcall (*TcuGraphicsGLRegisterImage)(PCUgraphicsResource &pCudaResource, unsigned image, unsigned target, TCUgraphicsMapResourceFlags Flags);
+
+typedef TCUresult __stdcall (*TcuWGLGetDevice)(TCUdevice &pDevice, HGPUNV hGpu);
+
+typedef TCUresult __stdcall (*TcuGraphicsUnregisterResource)(PCUgraphicsResource resource);
+
+typedef TCUresult __stdcall (*TcuGraphicsSubResourceGetMappedArray)(PCUarray &pArray, PCUgraphicsResource resource, unsigned arrayIndex, unsigned mipLevel);
+
+typedef TCUresult __stdcall (*TcuGraphicsResourceGetMappedPointer)(TCUdeviceptr &pDevPtr, /* out */ unsigned &psize, PCUgraphicsResource resource);
+
+typedef TCUresult __stdcall (*TcuGraphicsResourceSetMapFlags)(PCUgraphicsResource resource, unsigned Flags);
+
+typedef TCUresult __stdcall (*TcuGraphicsMapResources)(unsigned count, PPCUgraphicsResource resources, PCUstream hStream);
+
+typedef TCUresult __stdcall (*TcuGraphicsUnmapResources)(unsigned count, PPCUgraphicsResource resources, PCUstream hStream);
+
+typedef void __stdcall (*TcuGLInit)(void);
+
+typedef TCUresult __stdcall (*TcuGLRegisterBufferObject)(unsigned buffer);
+
+typedef TCUresult __stdcall (*TcuGLMapBufferObject)(TCUdeviceptr &dptr, unsigned &size, unsigned buffer);
+
+typedef TCUresult __stdcall (*TcuGLUnmapBufferObject)(unsigned buffer);
+
+typedef TCUresult __stdcall (*TcuGLUnregisterBufferObject)(unsigned buffer);
+
+typedef TCUresult __stdcall (*TcuGLSetBufferObjectMapFlags)(unsigned buffer, unsigned Flags);
+
+typedef TCUresult __stdcall (*TcuGLMapBufferObjectAsync)(TCUdeviceptr &dptr, unsigned &size, unsigned buffer, PCUstream hStream);
+
+typedef TCUresult __stdcall (*TcuGLUnmapBufferObjectAsync)(unsigned buffer, PCUstream hStream);
+
+//-- var, const, procedure ---------------------------------------------------
+#define CUDAAPIDLL L"nvcuda.dll"
+extern DELPHI_PACKAGE TCUresult CUDA_SUCCESS;
+static _DELPHI_CONST System::Int8 CUDA_ERROR_INVALID_VALUE = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 CUDA_ERROR_OUT_OF_MEMORY = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 CUDA_ERROR_NOT_INITIALIZED = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 CUDA_ERROR_DEINITIALIZED = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 CUDA_ERROR_NO_DEVICE = System::Int8(0x64);
+static _DELPHI_CONST System::Int8 CUDA_ERROR_INVALID_DEVICE = System::Int8(0x65);
+static _DELPHI_CONST System::Byte CUDA_ERROR_INVALID_IMAGE = System::Byte(0xc8);
+static _DELPHI_CONST System::Byte CUDA_ERROR_INVALID_CONTEXT = System::Byte(0xc9);
+static _DELPHI_CONST System::Byte CUDA_ERROR_CONTEXT_ALREADY_CURRENT = System::Byte(0xca);
+static _DELPHI_CONST System::Byte CUDA_ERROR_MAP_FAILED = System::Byte(0xcd);
+static _DELPHI_CONST System::Byte CUDA_ERROR_UNMAP_FAILED = System::Byte(0xce);
+static _DELPHI_CONST System::Byte CUDA_ERROR_ARRAY_IS_MAPPED = System::Byte(0xcf);
+static _DELPHI_CONST System::Byte CUDA_ERROR_ALREADY_MAPPED = System::Byte(0xd0);
+static _DELPHI_CONST System::Byte CUDA_ERROR_NO_BINARY_FOR_GPU = System::Byte(0xd1);
+static _DELPHI_CONST System::Byte CUDA_ERROR_ALREADY_ACQUIRED = System::Byte(0xd2);
+static _DELPHI_CONST System::Byte CUDA_ERROR_NOT_MAPPED = System::Byte(0xd3);
+static _DELPHI_CONST System::Byte CUDA_ERROR_NOT_MAPPED_AS_ARRAY = System::Byte(0xd4);
+static _DELPHI_CONST System::Byte CUDA_ERROR_NOT_MAPPED_AS_POINTER = System::Byte(0xd5);
+static _DELPHI_CONST System::Word CUDA_ERROR_INVALID_SOURCE = System::Word(0x12c);
+static _DELPHI_CONST System::Word CUDA_ERROR_FILE_NOT_FOUND = System::Word(0x12d);
+static _DELPHI_CONST System::Word CUDA_ERROR_INVALID_HANDLE = System::Word(0x190);
+static _DELPHI_CONST System::Word CUDA_ERROR_NOT_FOUND = System::Word(0x1f4);
+static _DELPHI_CONST System::Word CUDA_ERROR_NOT_READY = System::Word(0x258);
+static _DELPHI_CONST System::Word CUDA_ERROR_LAUNCH_FAILED = System::Word(0x2bc);
+static _DELPHI_CONST System::Word CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES = System::Word(0x2bd);
+static _DELPHI_CONST System::Word CUDA_ERROR_LAUNCH_TIMEOUT = System::Word(0x2be);
+static _DELPHI_CONST System::Word CUDA_ERROR_LAUNCH_INCOMPATIBLE_TEXTURING = System::Word(0x2bf);
+static _DELPHI_CONST System::Word CUDA_ERROR_POINTER_IS_64BIT = System::Word(0x320);
+static _DELPHI_CONST System::Word CUDA_ERROR_SIZE_IS_64BIT = System::Word(0x321);
+static _DELPHI_CONST System::Word CUDA_ERROR_UNKNOWN = System::Word(0x3e7);
+static _DELPHI_CONST System::Int8 CU_MEMHOSTALLOC_PORTABLE = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 CU_MEMHOSTALLOC_DEVICEMAP = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 CU_MEMHOSTALLOC_WRITECOMBINED = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 CU_TRSA_OVERRIDE_FORMAT = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 CU_TRSF_READ_AS_INTEGER = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 CU_TRSF_NORMALIZED_COORDINATES = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 CU_PARAM_TR_DEFAULT = System::Int8(-1);
+extern DELPHI_PACKAGE TcuInit cuInit;
+extern DELPHI_PACKAGE TcuDriverGetVersion cuDriverGetVersion;
+extern DELPHI_PACKAGE TcuDeviceGet cuDeviceGet;
+extern DELPHI_PACKAGE TcuDeviceGetCount cuDeviceGetCount;
+extern DELPHI_PACKAGE TcuDeviceGetName cuDeviceGetName;
+extern DELPHI_PACKAGE TcuDeviceComputeCapability cuDeviceComputeCapability;
+extern DELPHI_PACKAGE TcuDeviceTotalMem cuDeviceTotalMem;
+extern DELPHI_PACKAGE TcuDeviceGetProperties cuDeviceGetProperties;
+extern DELPHI_PACKAGE TcuDeviceGetAttribute cuDeviceGetAttribute;
+extern DELPHI_PACKAGE TcuCtxCreate cuCtxCreate;
+extern DELPHI_PACKAGE TcuCtxDestroy cuCtxDestroy;
+extern DELPHI_PACKAGE TcuCtxAttach cuCtxAttach;
+extern DELPHI_PACKAGE TcuCtxDetach cuCtxDetach;
+extern DELPHI_PACKAGE TcuCtxPushCurrent cuCtxPushCurrent;
+extern DELPHI_PACKAGE TcuCtxPopCurrent cuCtxPopCurrent;
+extern DELPHI_PACKAGE TcuCtxGetDevice cuCtxGetDevice;
+extern DELPHI_PACKAGE TcuCtxSynchronize cuCtxSynchronize;
+extern DELPHI_PACKAGE TcuModuleLoad cuModuleLoad;
+extern DELPHI_PACKAGE TcuModuleLoadData cuModuleLoadData;
+extern DELPHI_PACKAGE TcuModuleLoadDataEx cuModuleLoadDataEx;
+extern DELPHI_PACKAGE TcuModuleLoadFatBinary cuModuleLoadFatBinary;
+extern DELPHI_PACKAGE TcuModuleUnload cuModuleUnload;
+extern DELPHI_PACKAGE TcuModuleGetFunction cuModuleGetFunction;
+extern DELPHI_PACKAGE TcuModuleGetGlobal cuModuleGetGlobal;
+extern DELPHI_PACKAGE TcuModuleGetTexRef cuModuleGetTexRef;
+extern DELPHI_PACKAGE TcuMemGetInfo cuMemGetInfo;
+extern DELPHI_PACKAGE TcuMemAlloc cuMemAlloc;
+extern DELPHI_PACKAGE TcuMemAllocPitch cuMemAllocPitch;
+extern DELPHI_PACKAGE TcuMemFree cuMemFree;
+extern DELPHI_PACKAGE TcuMemGetAddressRange cuMemGetAddressRange;
+extern DELPHI_PACKAGE TcuMemAllocHost cuMemAllocHost;
+extern DELPHI_PACKAGE TcuMemFreeHost cuMemFreeHost;
+extern DELPHI_PACKAGE TcuMemHostAlloc cuMemHostAlloc;
+extern DELPHI_PACKAGE TcuMemHostGetDevicePointer cuMemHostGetDevicePointer;
+extern DELPHI_PACKAGE TcuMemHostGetFlags cuMemHostGetFlags;
+extern DELPHI_PACKAGE TcuMemcpyHtoD cuMemcpyHtoD;
+extern DELPHI_PACKAGE TcuMemcpyDtoH cuMemcpyDtoH;
+extern DELPHI_PACKAGE TcuMemcpyDtoD cuMemcpyDtoD;
+extern DELPHI_PACKAGE TcuMemcpyDtoDAsync cuMemcpyDtoDAsync;
+extern DELPHI_PACKAGE TcuMemcpyDtoA cuMemcpyDtoA;
+extern DELPHI_PACKAGE TcuMemcpyAtoD cuMemcpyAtoD;
+extern DELPHI_PACKAGE TcuMemcpyHtoA cuMemcpyHtoA;
+extern DELPHI_PACKAGE TcuMemcpyAtoH cuMemcpyAtoH;
+extern DELPHI_PACKAGE TcuMemcpyAtoA cuMemcpyAtoA;
+extern DELPHI_PACKAGE TcuMemcpy2D cuMemcpy2D;
+extern DELPHI_PACKAGE TcuMemcpy2DUnaligned cuMemcpy2DUnaligned;
+extern DELPHI_PACKAGE TcuMemcpy3D cuMemcpy3D;
+extern DELPHI_PACKAGE TcuMemcpyHtoDAsync cuMemcpyHtoDAsync;
+extern DELPHI_PACKAGE TcuMemcpyDtoHAsync cuMemcpyDtoHAsync;
+extern DELPHI_PACKAGE TcuMemcpyHtoAAsync cuMemcpyHtoAAsync;
+extern DELPHI_PACKAGE TcuMemcpyAtoHAsync cuMemcpyAtoHAsync;
+extern DELPHI_PACKAGE TcuMemcpy2DAsync cuMemcpy2DAsync;
+extern DELPHI_PACKAGE TcuMemcpy3DAsync cuMemcpy3DAsync;
+extern DELPHI_PACKAGE TcuMemsetD8 cuMemsetD8;
+extern DELPHI_PACKAGE TcuMemsetD16 cuMemsetD16;
+extern DELPHI_PACKAGE TcuMemsetD32 cuMemsetD32;
+extern DELPHI_PACKAGE TcuMemsetD2D8 cuMemsetD2D8;
+extern DELPHI_PACKAGE TcuMemsetD2D16 cuMemsetD2D16;
+extern DELPHI_PACKAGE TcuMemsetD2D32 cuMemsetD2D32;
+extern DELPHI_PACKAGE TcuFuncSetBlockShape cuFuncSetBlockShape;
+extern DELPHI_PACKAGE TcuFuncSetSharedSize cuFuncSetSharedSize;
+extern DELPHI_PACKAGE TcuFuncGetAttribute cuFuncGetAttribute;
+extern DELPHI_PACKAGE TcuArrayCreate cuArrayCreate;
+extern DELPHI_PACKAGE TcuArrayGetDescriptor cuArrayGetDescriptor;
+extern DELPHI_PACKAGE TcuArrayDestroy cuArrayDestroy;
+extern DELPHI_PACKAGE TcuArray3DCreate cuArray3DCreate;
+extern DELPHI_PACKAGE TcuArray3DGetDescriptor cuArray3DGetDescriptor;
+extern DELPHI_PACKAGE TcuTexRefCreate cuTexRefCreate;
+extern DELPHI_PACKAGE TcuTexRefDestroy cuTexRefDestroy;
+extern DELPHI_PACKAGE TcuTexRefSetArray cuTexRefSetArray;
+extern DELPHI_PACKAGE TcuTexRefSetAddress cuTexRefSetAddress;
+extern DELPHI_PACKAGE TcuTexRefSetAddress2D cuTexRefSetAddress2D;
+extern DELPHI_PACKAGE TcuTexRefSetFormat cuTexRefSetFormat;
+extern DELPHI_PACKAGE TcuTexRefSetAddressMode cuTexRefSetAddressMode;
+extern DELPHI_PACKAGE TcuTexRefSetFilterMode cuTexRefSetFilterMode;
+extern DELPHI_PACKAGE TcuTexRefSetFlags cuTexRefSetFlags;
+extern DELPHI_PACKAGE TcuTexRefGetAddress cuTexRefGetAddress;
+extern DELPHI_PACKAGE TcuTexRefGetArray cuTexRefGetArray;
+extern DELPHI_PACKAGE TcuTexRefGetAddressMode cuTexRefGetAddressMode;
+extern DELPHI_PACKAGE TcuTexRefGetFilterMode cuTexRefGetFilterMode;
+extern DELPHI_PACKAGE TcuTexRefGetFormat cuTexRefGetFormat;
+extern DELPHI_PACKAGE TcuTexRefGetFlags cuTexRefGetFlags;
+extern DELPHI_PACKAGE TcuParamSetSize cuParamSetSize;
+extern DELPHI_PACKAGE TcuParamSeti cuParamSeti;
+extern DELPHI_PACKAGE TcuParamSetf cuParamSetf;
+extern DELPHI_PACKAGE TcuParamSetv cuParamSetv;
+extern DELPHI_PACKAGE TcuParamSetTexRef cuParamSetTexRef;
+extern DELPHI_PACKAGE TcuLaunch cuLaunch;
+extern DELPHI_PACKAGE TcuLaunchGrid cuLaunchGrid;
+extern DELPHI_PACKAGE TcuLaunchGridAsync cuLaunchGridAsync;
+extern DELPHI_PACKAGE TcuEventCreate cuEventCreate;
+extern DELPHI_PACKAGE TcuEventRecord cuEventRecord;
+extern DELPHI_PACKAGE TcuEventQuery cuEventQuery;
+extern DELPHI_PACKAGE TcuEventSynchronize cuEventSynchronize;
+extern DELPHI_PACKAGE TcuEventDestroy cuEventDestroy;
+extern DELPHI_PACKAGE TcuEventElapsedTime cuEventElapsedTime;
+extern DELPHI_PACKAGE TcuStreamCreate cuStreamCreate;
+extern DELPHI_PACKAGE TcuStreamQuery cuStreamQuery;
+extern DELPHI_PACKAGE TcuStreamSynchronize cuStreamSynchronize;
+extern DELPHI_PACKAGE TcuStreamDestroy cuStreamDestroy;
+extern DELPHI_PACKAGE TcuGLInit cuGLInit;
+extern DELPHI_PACKAGE TcuGLCtxCreate cuGLCtxCreate;
+extern DELPHI_PACKAGE TcuGraphicsGLRegisterBuffer cuGraphicsGLRegisterBuffer;
+extern DELPHI_PACKAGE TcuGraphicsGLRegisterImage cuGraphicsGLRegisterImage;
+extern DELPHI_PACKAGE TcuWGLGetDevice cuWGLGetDevice;
+extern DELPHI_PACKAGE TcuGraphicsUnregisterResource cuGraphicsUnregisterResource;
+extern DELPHI_PACKAGE TcuGraphicsSubResourceGetMappedArray cuGraphicsSubResourceGetMappedArray;
+extern DELPHI_PACKAGE TcuGraphicsResourceGetMappedPointer cuGraphicsResourceGetMappedPointer;
+extern DELPHI_PACKAGE TcuGraphicsResourceSetMapFlags cuGraphicsResourceSetMapFlags;
+extern DELPHI_PACKAGE TcuGraphicsMapResources cuGraphicsMapResources;
+extern DELPHI_PACKAGE TcuGraphicsUnmapResources cuGraphicsUnmapResources;
+extern DELPHI_PACKAGE TcuGLRegisterBufferObject cuGLRegisterBufferObject;
+extern DELPHI_PACKAGE TcuGLMapBufferObject cuGLMapBufferObject;
+extern DELPHI_PACKAGE TcuGLUnmapBufferObject cuGLUnmapBufferObject;
+extern DELPHI_PACKAGE TcuGLUnregisterBufferObject cuGLUnregisterBufferObject;
+extern DELPHI_PACKAGE TcuGLSetBufferObjectMapFlags cuGLSetBufferObjectMapFlags;
+extern DELPHI_PACKAGE TcuGLMapBufferObjectAsync cuGLMapBufferObjectAsync;
+extern DELPHI_PACKAGE TcuGLUnmapBufferObjectAsync cuGLUnmapBufferObjectAsync;
+extern DELPHI_PACKAGE bool __fastcall InitCUDA(void);
+extern DELPHI_PACKAGE void __fastcall CloseCUDA(void);
+extern DELPHI_PACKAGE bool __fastcall InitCUDAFromLibrary(const System::WideString LibName);
+extern DELPHI_PACKAGE bool __fastcall IsCUDAInitialized(void);
+extern DELPHI_PACKAGE System::UnicodeString __fastcall Get_CUDA_API_Error_String(TCUresult AError);
+}	/* namespace Import */
+}	/* namespace Cuda */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CUDA_IMPORT)
+using namespace Cuda::Import;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CUDA)
+using namespace Cuda;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// CUDA_ImportHPP

+ 79 - 0
include/Win32/CUDA.ParallelPrimitives.hpp

@@ -0,0 +1,79 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'CUDA.ParallelPrimitives.pas' rev: 36.00 (Windows)
+
+#ifndef CUDA_ParallelPrimitivesHPP
+#define CUDA_ParallelPrimitivesHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Cuda
+{
+namespace Parallelprimitives
+{
+//-- forward type declarations -----------------------------------------------
+struct TCUDPPConfiguration;
+//-- type declarations -------------------------------------------------------
+enum DECLSPEC_DENUM TCUDPPResult : unsigned char { CUDPP_SUCCESS, CUDPP_ERROR_INVALID_HANDLE, CUDPP_ERROR_ILLEGAL_CONFIGURATION, CUDPP_ERROR_UNKNOWN };
+
+enum DECLSPEC_DENUM TCUDPPOption : unsigned char { CUDPP_OPTION_FORWARD, CUDPP_OPTION_BACKWARD, CUDPP_OPTION_EXCLUSIVE, CUDPP_OPTION_INCLUSIVE, CUDPP_OPTION_CTA_LOCAL, CUDPP_OPTION_KEYS_ONLY, CUDPP_OPTION_KEY_VALUE_PAIRS };
+
+enum DECLSPEC_DENUM TCUDPPDatatype : unsigned char { CUDPP_CHAR, CUDPP_UCHAR, CUDPP_INT, CUDPP_UINT, CUDPP_FLOAT };
+
+enum DECLSPEC_DENUM TCUDPPOperator : unsigned char { CUDPP_ADD, CUDPP_MULTIPLY, CUDPP_MIN, CUDPP_MAX };
+
+enum DECLSPEC_DENUM TCUDPPAlgorithm : unsigned char { CUDPP_SCAN, CUDPP_SEGMENTED_SCAN, CUDPP_COMPACT, CUDPP_REDUCE, CUDPP_SORT_RADIX, CUDPP_SPMVMULT, CUDPP_RAND_MD5, CUDPP_ALGORITHM_INVALID };
+
+struct DECLSPEC_DRECORD TCUDPPConfiguration
+{
+public:
+	TCUDPPAlgorithm algorithm;
+	TCUDPPOperator op;
+	TCUDPPDatatype datatype;
+	TCUDPPOption options;
+};
+
+
+typedef System::NativeUInt TCUDPPHandle;
+
+//-- var, const, procedure ---------------------------------------------------
+#define CUDPPDLL L"cudpp32.dll"
+static _DELPHI_CONST unsigned CUDPP_INVALID_HANDLE = unsigned(0xc0dabad1);
+extern "C" TCUDPPResult __stdcall cudppPlan(TCUDPPHandle &planHandle, TCUDPPConfiguration config, System::NativeUInt n, System::NativeUInt rows, System::NativeUInt rowPitch);
+extern "C" TCUDPPResult __stdcall cudppDestroyPlan(TCUDPPHandle plan);
+extern "C" TCUDPPResult __stdcall cudppScan(TCUDPPHandle planHandle, void *d_out, System::NativeUInt &d_in, System::NativeUInt &numElements);
+extern "C" TCUDPPResult __stdcall cudppMultiScan(TCUDPPHandle planHandle, void *d_out, void *d_in, System::NativeUInt numElements, System::NativeUInt numRows);
+extern "C" TCUDPPResult __stdcall cudppSegmentedScan(TCUDPPHandle planHandle, void *d_out, void *d_idata, const System::PCardinal d_iflags, System::NativeUInt numElements);
+extern "C" TCUDPPResult __stdcall cudppCompact(TCUDPPHandle planHandle, void *d_out, System::NativeUInt &d_numValidElements, void *d_in, const System::PCardinal d_isValid, System::NativeUInt numElements);
+extern "C" TCUDPPResult __stdcall cudppSort(TCUDPPHandle planHandle, void *d_keys, void *d_values, int keybits, System::NativeUInt numElements);
+extern "C" TCUDPPResult __stdcall cudppSparseMatrix(TCUDPPHandle &sparseMatrixHandle, TCUDPPConfiguration config, System::NativeUInt n, System::NativeUInt rows, void *A, const System::PCardinal h_rowIndices, const System::PCardinal h_indices);
+extern "C" TCUDPPResult __stdcall cudppDestroySparseMatrix(TCUDPPHandle sparseMatrixHandle);
+extern "C" TCUDPPResult __stdcall cudppSparseMatrixVectorMultiply(TCUDPPHandle sparseMatrixHandle, void *d_y, void *d_x);
+extern "C" TCUDPPResult __stdcall cudppRand(TCUDPPHandle planHandle, void *d_out, System::NativeUInt numElements);
+extern "C" TCUDPPResult __stdcall cudppRandSeed(const TCUDPPHandle planHandle, unsigned seed);
+}	/* namespace Parallelprimitives */
+}	/* namespace Cuda */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CUDA_PARALLELPRIMITIVES)
+using namespace Cuda::Parallelprimitives;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CUDA)
+using namespace Cuda;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// CUDA_ParallelPrimitivesHPP

+ 136 - 0
include/Win32/CUDA.Parser.hpp

@@ -0,0 +1,136 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'CUDA.Parser.pas' rev: 36.00 (Windows)
+
+#ifndef CUDA_ParserHPP
+#define CUDA_ParserHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <CUDA.Runtime.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Cuda
+{
+namespace Parser
+{
+//-- forward type declarations -----------------------------------------------
+struct TCUDATexRefInfo;
+struct TCUDAFuncArgInfo;
+struct TCUDAFuncInfo;
+struct TCUDAConstantInfo;
+class DELPHICLASS TCUDAModuleInfo;
+//-- type declarations -------------------------------------------------------
+enum DECLSPEC_DENUM TCUDAType : unsigned char { customType, char1, uchar1, char2, uchar2, char3, uchar3, char4, uchar4, short1, ushort1, short2, ushort2, short3, ushort3, short4, ushort4, int1, uint1, int2, uint2, int3, uint3, int4, uint4, long1, ulong1, long2, ulong2, long3, ulong3, long4, ulong4, float1, float2, float3, float4, longlong1, ulonglong1, longlong2, ulonglong2, longlong3, ulonglong3, longlong4, ulonglong4, double1, double2, double3, double4, int8, int16, int32, uint8, uint16, uint32 };
+
+struct DECLSPEC_DRECORD TCUDATexRefInfo
+{
+public:
+	System::UnicodeString Name;
+	TCUDAType DataType;
+	System::Byte Dim;
+	Cuda::Runtime::TcudaTextureReadMode ReadMode;
+};
+
+
+struct DECLSPEC_DRECORD TCUDAFuncArgInfo
+{
+public:
+	System::UnicodeString Name;
+	TCUDAType DataType;
+	System::UnicodeString CustomType;
+	bool Ref;
+};
+
+
+struct DECLSPEC_DRECORD TCUDAFuncInfo
+{
+	
+private:
+	typedef System::DynamicArray<TCUDAFuncArgInfo> _TCUDAFuncInfo__1;
+	
+	
+public:
+	System::UnicodeString Name;
+	System::UnicodeString KernelName;
+	_TCUDAFuncInfo__1 Args;
+};
+
+
+struct DECLSPEC_DRECORD TCUDAConstantInfo
+{
+public:
+	System::UnicodeString Name;
+	TCUDAType DataType;
+	System::UnicodeString CustomType;
+	bool Ref;
+	bool DefValue;
+};
+
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TCUDAModuleInfo : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+	
+private:
+	typedef System::DynamicArray<TCUDATexRefInfo> _TCUDAModuleInfo__1;
+	
+	typedef System::DynamicArray<TCUDAFuncInfo> _TCUDAModuleInfo__2;
+	
+	typedef System::DynamicArray<TCUDAConstantInfo> _TCUDAModuleInfo__3;
+	
+	
+private:
+	System::Classes::TStrings* ping;
+	System::Classes::TStrings* pong;
+	void __fastcall Reset();
+	void __fastcall BreakStrings(System::Classes::TStrings* inlist, System::Classes::TStrings* outlist);
+	void __fastcall RemoveComents(System::Classes::TStrings* inlist, System::Classes::TStrings* outlist);
+	void __fastcall RemoveSpaces(System::Classes::TStrings* inlist, System::Classes::TStrings* outlist);
+	void __fastcall ReplaceUnsigned(System::Classes::TStrings* inlist, System::Classes::TStrings* outlist);
+	void __fastcall FindTexRef(System::Classes::TStrings* inlist);
+	void __fastcall FindConst(System::Classes::TStrings* inlist);
+	void __fastcall FindFunc(System::Classes::TStrings* inlist);
+	void __fastcall FindFuncKernelName(System::Classes::TStrings* inlist);
+	
+public:
+	System::Classes::TComponent* Owner;
+	_TCUDAModuleInfo__1 TexRef;
+	_TCUDAModuleInfo__2 Func;
+	_TCUDAModuleInfo__3 Constant;
+	__fastcall TCUDAModuleInfo();
+	__fastcall virtual ~TCUDAModuleInfo();
+	void __fastcall ParseModule(System::Classes::TStrings* ASource, System::Classes::TStrings* AProduct);
+};
+
+#pragma pack(pop)
+
+//-- var, const, procedure ---------------------------------------------------
+}	/* namespace Parser */
+}	/* namespace Cuda */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CUDA_PARSER)
+using namespace Cuda::Parser;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CUDA)
+using namespace Cuda;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// CUDA_ParserHPP

+ 375 - 0
include/Win32/CUDA.Runtime.hpp

@@ -0,0 +1,375 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'CUDA.Runtime.pas' rev: 36.00 (Windows)
+
+#ifndef CUDA_RuntimeHPP
+#define CUDA_RuntimeHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+#include <CUDA.Import.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Cuda
+{
+namespace Runtime
+{
+//-- forward type declarations -----------------------------------------------
+struct TCudaChannelFormatDesc;
+struct DECLSPEC_DRECORD TcudaArray
+{
+};
+
+
+struct TcudaPitchedPtr;
+struct TcudaExtent;
+struct TcudaPos;
+struct TcudaMemcpy3DParms;
+struct TCudaDeviceProp;
+struct TTextureReference;
+//-- type declarations -------------------------------------------------------
+typedef System::StaticArray<System::UnicodeString, 10> Cuda_Runtime__1;
+
+enum DECLSPEC_DENUM TcudaError : unsigned char { cudaSuccess, cudaErrorMissingConfiguration, cudaErrorMemoryAllocation, cudaErrorInitializationError, cudaErrorLaunchFailure, cudaErrorPriorLaunchFailure, cudaErrorLaunchTimeout, cudaErrorLaunchOutOfResources, cudaErrorInvalidDeviceFunction, cudaErrorInvalidConfiguration, cudaErrorInvalidDevice, cudaErrorInvalidValue, cudaErrorInvalidPitchValue, cudaErrorInvalidSymbol, cudaErrorMapBufferObjectFailed, cudaErrorUnmapBufferObjectFailed, cudaErrorInvalidHostPointer, cudaErrorInvalidDevicePointer, cudaErrorInvalidTexture, cudaErrorInvalidTextureBinding, cudaErrorInvalidChannelDescriptor, cudaErrorInvalidMemcpyDirection, cudaErrorAddressOfConstant, cudaErrorTextureFetchFailed, cudaErrorTextureNotBound, 
+	cudaErrorSynchronizationError, cudaErrorInvalidFilterSetting, cudaErrorInvalidNormSetting, cudaErrorMixedDeviceExecution, cudaErrorCudartUnloading, cudaErrorUnknown, cudaErrorNotYetImplemented, cudaErrorMemoryValueTooLarge, cudaErrorInvalidResourceHandle, cudaErrorNotReady, cudaErrorStartupFailure, cudaErrorApiFailureBase };
+
+enum DECLSPEC_DENUM TCudaChannelFormatKind : unsigned char { cudaChannelFormatKindSigned, cudaChannelFormatKindUnsigned, cudaChannelFormatKindFloat };
+
+enum DECLSPEC_DENUM TCudaGLMapFlags : unsigned char { cudaGLMapFlagsNone, cudaGLMapFlagsReadOnly, cudaGLMapFlagsWriteDiscard };
+
+typedef TCudaChannelFormatDesc *PcudaChannelFormatDesc;
+
+struct DECLSPEC_DRECORD TCudaChannelFormatDesc
+{
+public:
+	int x;
+	int y;
+	int z;
+	int w;
+	TCudaChannelFormatKind f;
+};
+
+
+enum DECLSPEC_DENUM TcudaMemcpyKind : unsigned char { cudaMemcpyHostToHost, cudaMemcpyHostToDevice, cudaMemcpyDeviceToHost, cudaMemcpyDeviceToDevice };
+
+struct DECLSPEC_DRECORD TcudaPitchedPtr
+{
+public:
+	void *ptr;
+	System::NativeUInt pitch;
+	System::NativeUInt xsize;
+	System::NativeUInt ysize;
+};
+
+
+struct DECLSPEC_DRECORD TcudaExtent
+{
+public:
+	System::NativeUInt width;
+	System::NativeUInt height;
+	System::NativeUInt depth;
+};
+
+
+struct DECLSPEC_DRECORD TcudaPos
+{
+public:
+	System::NativeUInt x;
+	System::NativeUInt y;
+	System::NativeUInt z;
+};
+
+
+struct DECLSPEC_DRECORD TcudaMemcpy3DParms
+{
+public:
+	void *srcArray;
+	TcudaPos srcPos;
+	TcudaPitchedPtr srcPtr;
+	void *dstArray;
+	TcudaPos dstPos;
+	TcudaPitchedPtr dstPtr;
+	TcudaExtent extent;
+	TcudaMemcpyKind kind;
+};
+
+
+typedef TCudaDeviceProp *PCudaDeviceProp;
+
+struct DECLSPEC_DRECORD TCudaDeviceProp
+{
+public:
+	System::StaticArray<char, 256> name;
+	System::NativeUInt totalGlobalMem;
+	System::NativeUInt sharedMemPerBlock;
+	int regsPerBlock;
+	int warpSize;
+	System::NativeUInt memPitch;
+	int maxThreadsPerBlock;
+	System::StaticArray<int, 3> maxThreadsDim;
+	System::StaticArray<int, 3> maxGridSize;
+	int clockRate;
+	System::NativeUInt totalConstMem;
+	int major;
+	int minor;
+	System::NativeUInt textureAlignment;
+	int deviceOverlap;
+	int multiProcessorCount;
+	int kernelExecTimeoutEnabled;
+	int egrated;
+	int canMapHostMemory;
+	int computeMode;
+	int maxTexture1D;
+	System::StaticArray<int, 2> maxTexture2D;
+	System::StaticArray<int, 3> maxTexture3D;
+	System::StaticArray<int, 3> maxTexture2DArray;
+	System::NativeUInt surfaceAlignment;
+	int concurrentKernels;
+	int ECCEnabled;
+	int pciBusID;
+	int pciDeviceID;
+	int tccDriver;
+	System::StaticArray<int, 21> __cudaReserved;
+};
+
+
+enum DECLSPEC_DENUM TcudaTextureAddressMode : unsigned char { cudaAddressModeWrap, cudaAddressModeClamp, cudaAddressModeMirror };
+
+enum DECLSPEC_DENUM TcudaTextureFilterMode : unsigned char { cudaFilterModePoint, cudaFilterModeLinear };
+
+enum DECLSPEC_DENUM TcudaTextureReadMode : unsigned char { cudaReadModeElementType, cudaReadModeNormalizedFloat };
+
+typedef TTextureReference *PTextureReference;
+
+struct DECLSPEC_DRECORD TTextureReference
+{
+public:
+	int normalized;
+	TcudaTextureFilterMode filterMode;
+	System::StaticArray<TcudaTextureAddressMode, 3> addressMode;
+	TCudaChannelFormatDesc channelDesc;
+	System::StaticArray<int, 16> __cudaReserved;
+};
+
+
+typedef TcudaArray *PcudaArray;
+
+typedef TcudaError cudaError_t;
+
+typedef int cudaStream_t;
+
+typedef int cudaEvent_t;
+
+//-- var, const, procedure ---------------------------------------------------
+extern DELPHI_PACKAGE Cuda_Runtime__1 CUDARTDLLNAMES;
+extern DELPHI_PACKAGE float CUDART_INF_F;
+extern DELPHI_PACKAGE float CUDART_NAN_F;
+extern DELPHI_PACKAGE float CUDART_MIN_DENORM_F;
+extern DELPHI_PACKAGE float CUDART_MAX_NORMAL_F;
+extern DELPHI_PACKAGE float CUDART_NEG_ZERO_F;
+#define CUDART_ZERO_F  (0.000000E+00)
+#define CUDART_ONE_F  (1.000000E+00)
+static const System::Extended CUDART_SQRT_HALF_F = 7.071068E-01;
+static const System::Extended CUDART_SQRT_TWO_F = 1.414214E+00;
+static const System::Extended CUDART_THIRD_F = 3.333333E-01;
+static const System::Extended CUDART_PIO4_F = 7.853982E-01;
+static const System::Extended CUDART_PIO2_F = 1.570796E+00;
+static const System::Extended CUDART_3PIO4_F = 2.356194E+00;
+static const System::Extended CUDART_2_OVER_PI_F = 6.366198E-01;
+static const System::Extended CUDART_PI_F = 3.141593E+00;
+static const System::Extended CUDART_L2E_F = 1.442695E+00;
+static const System::Extended CUDART_L2T_F = 3.321928E+00;
+static const System::Extended CUDART_LG2_F = 3.010300E-01;
+static const System::Extended CUDART_LGE_F = 4.342945E-01;
+static const System::Extended CUDART_LN2_F = 6.931472E-01;
+static const System::Extended CUDART_LNT_F = 2.302585E+00;
+static const System::Extended CUDART_LNPI_F = 1.144730E+00;
+static const System::Extended CUDART_TWO_TO_M126_F = 1.175494E-38;
+static const System::Extended CUDART_TWO_TO_126_F = 8.507059E+37;
+static const System::Extended CUDART_NORM_HUGE_F = 3.402823E+38;
+#define CUDART_TWO_TO_23_F  (8.388608E+06)
+#define CUDART_TWO_TO_24_F  (1.677722E+07)
+#define CUDART_TWO_TO_31_F  (2.147484E+09)
+#define CUDART_TWO_TO_32_F  (4.294967E+09)
+static _DELPHI_CONST System::Int8 CUDART_REMQUO_BITS_F = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 CUDART_REMQUO_MASK_F = System::Int8(0x3);
+#define CUDART_TRIG_PLOSS_F  (4.803900E+04)
+extern DELPHI_PACKAGE double CUDART_INF;
+extern DELPHI_PACKAGE double CUDART_NAN;
+extern DELPHI_PACKAGE double CUDART_NEG_ZERO;
+extern DELPHI_PACKAGE double CUDART_MIN_DENORM;
+#define CUDART_ZERO  (0.000000E+00)
+#define CUDART_ONE  (1.000000E+00)
+static const System::Extended CUDART_SQRT_TWO = 1.414214E+00;
+static const System::Extended CUDART_SQRT_HALF = 7.071068E-01;
+static const System::Extended CUDART_THIRD = 3.333333E-01;
+static const System::Extended CUDART_TWOTHIRD = 6.666667E-01;
+static const System::Extended CUDART_PIO4 = 7.853982E-01;
+static const System::Extended CUDART_PIO4_HI = 7.853982E-01;
+static const System::Extended CUDART_PIO4_LO = 3.061617E-17;
+static const System::Extended CUDART_PIO2 = 1.570796E+00;
+static const System::Extended CUDART_PIO2_HI = 1.570796E+00;
+static const System::Extended CUDART_PIO2_LO = 6.123234E-17;
+static const System::Extended CUDART_3PIO4 = 2.356194E+00;
+static const System::Extended CUDART_2_OVER_PI = 6.366198E-01;
+static const System::Extended CUDART_PI = 3.141593E+00;
+static const System::Extended CUDART_PI_HI = 3.141593E+00;
+static const System::Extended CUDART_PI_LO = 1.224647E-16;
+static const System::Extended CUDART_SQRT_2PI_HI = 2.506628E+00;
+static const System::Extended CUDART_SQRT_2PI_LO = -1.832858E-16;
+static const System::Extended CUDART_SQRT_PIO2_HI = 1.253314E+00;
+static const System::Extended CUDART_SQRT_PIO2_LO = -9.164290E-17;
+static const System::Extended CUDART_L2E = 1.442695E+00;
+static const System::Extended CUDART_L2E_HI = 1.442695E+00;
+static const System::Extended CUDART_L2E_LO = 2.035527E-17;
+static const System::Extended CUDART_L2T = 3.321928E+00;
+static const System::Extended CUDART_LG2 = 3.010300E-01;
+static const System::Extended CUDART_LG2_HI = 3.010300E-01;
+static const System::Extended CUDART_LG2_LO = -2.803728E-18;
+static const System::Extended CUDART_LGE = 4.342945E-01;
+static const System::Extended CUDART_LGE_HI = 4.342945E-01;
+static const System::Extended CUDART_LGE_LO = 1.098320E-17;
+static const System::Extended CUDART_LN2 = 6.931472E-01;
+static const System::Extended CUDART_LN2_HI = 6.931472E-01;
+static const System::Extended CUDART_LN2_LO = 2.319047E-17;
+static const System::Extended CUDART_LNT = 2.302585E+00;
+static const System::Extended CUDART_LNT_HI = 2.302585E+00;
+static const System::Extended CUDART_LNT_LO = -2.170756E-16;
+static const System::Extended CUDART_LNPI = 1.144730E+00;
+static const System::Extended CUDART_LN2_X_1024 = 7.097827E+02;
+static const System::Extended CUDART_LN2_X_1025 = 7.104759E+02;
+static const System::Extended CUDART_LN2_X_1075 = 7.451332E+02;
+static const System::Extended CUDART_LG2_X_1024 = 3.082547E+02;
+static const System::Extended CUDART_LG2_X_1075 = 3.236072E+02;
+#define CUDART_TWO_TO_23  (8.388608E+06)
+static const System::Extended CUDART_TWO_TO_52 = 4.503600E+15;
+static const System::Extended CUDART_TWO_TO_54 = 1.801440E+16;
+static const System::Extended CUDART_TWO_TO_M54 = 5.551115E-17;
+static const System::Extended CUDART_TWO_TO_M1022 = 2.225074E-308;
+#define CUDART_TRIG_PLOSS  (2.147484E+09)
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaBindTexture)(System::NativeUInt &offset, const PTextureReference texref, void * &devPtr, TCudaChannelFormatDesc &desc, System::NativeUInt size);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaBindTexture2D)(System::NativeUInt &offset, const PTextureReference texref, const void * devPtr, TCudaChannelFormatDesc &desc, System::NativeUInt width, System::NativeUInt height, System::NativeUInt pitch);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaBindTextureToArray)(const PTextureReference texref, const PcudaArray cudaArray);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaUnbindTexture)(const PTextureReference texref);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGetTextureAlignmentOffset)(System::NativeUInt offset, const PTextureReference texref);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGetTextureReference)(const PTextureReference texref, const char * symbol);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGetChannelDesc)(TCudaChannelFormatDesc &desc, const void * array_);
+extern DELPHI_PACKAGE TCudaChannelFormatDesc __stdcall (*cudaCreateChannelDesc)(int x, int y, int z, int w, TCudaChannelFormatKind f);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMalloc3D)(TcudaPitchedPtr &pitchedDevPtr, TcudaExtent extent);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMalloc3DArray)(PcudaArray &arrayPtr, const TCudaChannelFormatDesc &desc, TcudaExtent extent, unsigned flags);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemset3D)(TcudaPitchedPtr pitchedDevPtr, int value, TcudaExtent extent);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpy3D)(const TcudaMemcpy3DParms &p);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpy3DAsync)(const TcudaMemcpy3DParms &p, cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMalloc)(void *devPtr, System::NativeUInt size);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMallocHost)(void * &ptr, System::NativeUInt size);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMallocPitch)(void *devPtr, System::NativeUInt &pitch, System::NativeUInt width, System::NativeUInt height);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMallocArray)(void * &aarray, TCudaChannelFormatDesc &desc, System::NativeUInt width, System::NativeUInt height);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaFree)(void * devPtr);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaFreeHost)(void * ptr);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaFreeArray)(const void * aarray);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaHostAlloc)(void * &pHost, System::NativeUInt bytes, unsigned flags);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaHostGetDevicePointer)(void * &pDevice, void * pHost, unsigned flags);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaHostGetFlags)(unsigned &pFlags, void * pHost);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemGetInfo)(System::NativeUInt &free, System::NativeUInt &total);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpy)(void * dst, void * src, System::NativeUInt count, TcudaMemcpyKind kind);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpyToArray)(PcudaArray &dst, System::NativeUInt wOffset, System::NativeUInt hOffset, void *src, System::NativeUInt count, TcudaMemcpyKind kind);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpyFromArray)(void *dst, const PcudaArray src, System::NativeUInt wOffset, System::NativeUInt hOffset, System::NativeUInt count, TcudaMemcpyKind kind);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpyArrayToArray)(PcudaArray dst, System::NativeUInt wOffsetDst, System::NativeUInt hOffsetDst, const PcudaArray src, System::NativeUInt wOffsetSrc, System::NativeUInt hOffsetSrc, System::NativeUInt count, const TcudaMemcpyKind kind/* = (TcudaMemcpyKind)(0x3)*/);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpy2D)(void *dst, System::NativeUInt dpitch, void *src, System::NativeUInt spitch, System::NativeUInt width, System::NativeUInt height, TcudaMemcpyKind kind);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpy2DToArray)(PcudaArray dst, System::NativeUInt wOffset, System::NativeUInt hOffset, void *src, System::NativeUInt spitch, System::NativeUInt width, System::NativeUInt height, TcudaMemcpyKind kind);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpy2DFromArray)(void *dst, System::NativeUInt dpitch, PcudaArray src, System::NativeUInt wOffset, System::NativeUInt hOffset, System::NativeUInt width, System::NativeUInt height, TcudaMemcpyKind kind);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpy2DArrayToArray)(PcudaArray dst, System::NativeUInt wOffsetDst, System::NativeUInt hOffsetDst, PcudaArray src, System::NativeUInt wOffsetSrc, System::NativeUInt hOffsetSrc, System::NativeUInt width, System::NativeUInt height, const TcudaMemcpyKind kind/* = (TcudaMemcpyKind)(0x3)*/);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpyToSymbol)(char * symbol, void *src, System::NativeUInt count, const System::NativeUInt offset/* = (unsigned)(0x0)*/, const TcudaMemcpyKind kind/* = (TcudaMemcpyKind)(0x1)*/);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpyFromSymbol)(void *dst, char * symbol, System::NativeUInt count, const System::NativeUInt offset/* = (unsigned)(0x0)*/, const TcudaMemcpyKind kind/* = (TcudaMemcpyKind)(0x2)*/);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpyAsync)(void *dst, const void *src, System::NativeUInt count, TcudaMemcpyKind kind, cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpyToArrayAsync)(PcudaArray dst, System::NativeUInt wOffset, System::NativeUInt hOffset, const void *src, System::NativeUInt count, TcudaMemcpyKind kind, cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpyFromArrayAsync)(void *dst, const PcudaArray src, System::NativeUInt wOffset, System::NativeUInt hOffset, System::NativeUInt count, TcudaMemcpyKind kind, cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpy2DAsync)(void *dst, System::NativeUInt dpitch, const void *src, System::NativeUInt spitch, System::NativeUInt width, System::NativeUInt height, TcudaMemcpyKind kind, cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpy2DToArrayAsync)(PcudaArray dst, System::NativeUInt wOffset, System::NativeUInt hOffset, const void *src, System::NativeUInt spitch, System::NativeUInt width, System::NativeUInt height, TcudaMemcpyKind kind, cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpy2DFromArrayAsync)(void *dst, System::NativeUInt dpitch, const PcudaArray src, System::NativeUInt wOffset, System::NativeUInt hOffset, System::NativeUInt width, System::NativeUInt height, TcudaMemcpyKind kind, cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpyToSymbolAsync)(const char * symbol, const void *src, System::NativeUInt count, System::NativeUInt offset, TcudaMemcpyKind kind, cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemcpyFromSymbolAsync)(void *dst, const char * symbol, System::NativeUInt count, System::NativeUInt offset, TcudaMemcpyKind kind, cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemset)(void *devPtr, int value, System::NativeUInt count);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaMemset2D)(void *devPtr, System::NativeUInt pitch, int value, System::NativeUInt width, System::NativeUInt height);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGetSymbolAddress)(void * &devPtr, const char * symbol);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGetSymbolSize)(System::NativeUInt &size, const char * symbol);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGetDeviceCount)(int &count);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGetDeviceProperties)(TCudaDeviceProp &prop, int device);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaChooseDevice)(int &device, const PCudaDeviceProp prop);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaSetDevice)(int device);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGetDevice)(int &device);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaSetDeviceFlags)(int flags);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaSetValidDevices)(System::PInteger device_arr, int len);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaConfigureCall)(const Cuda::Import::TDim3 &gridDim, const Cuda::Import::TDim3 &blockDim, System::NativeUInt sharedMem, cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaSetupArgument)(const void * arg, System::NativeUInt size, System::NativeUInt offset);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaFuncSetCacheConfig)(const char * func, Cuda::Import::TcudaFuncCache cacheConfig);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaLaunch)(const char * entry);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaFuncGetAttributes)(Cuda::Import::TcudaFuncAttributes &attr, const char * func);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGetLastError)(void);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGLSetGLDevice)(int device);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGLRegisterBufferObject)(unsigned bufObj);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGraphicsGLRegisterImage)(const Cuda::Import::PCUgraphicsResource resource, unsigned image, unsigned target, unsigned flags);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGraphicsGLRegisterBuffer)(const Cuda::Import::PCUgraphicsResource resource, unsigned buffer, unsigned flags);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGLMapBufferObject)(void * devPtr, unsigned bufObj);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGLUnmapBufferObject)(unsigned bufObj);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGLUnregisterBufferObject)(unsigned bufObj);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGLSetBufferObjectMapFlags)(unsigned bufObj, TCudaGLMapFlags flags);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGLMapBufferObjectAsync)(void * &devPtr, unsigned bufObj, cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGLUnmapBufferObjectAsync)(unsigned bufObj, cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGraphicsUnregisterResource)(Cuda::Import::PCUgraphicsResource resource);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGraphicsResourceSetMapFlags)(Cuda::Import::PCUgraphicsResource resource, unsigned flags);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGraphicsMapResources)(int count, const Cuda::Import::PCUgraphicsResource resources, cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGraphicsUnmapResources)(int count, const Cuda::Import::PCUgraphicsResource resources, cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGraphicsResourceGetMappedPointer)(Cuda::Import::TCUdeviceptr &pDevPtr, unsigned &pSize, Cuda::Import::PCUgraphicsResource resource);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaGraphicsSubResourceGetMappedArray)(Cuda::Import::PCUarray &pArray, Cuda::Import::PCUgraphicsResource resource, unsigned arrayIndex, unsigned mipLevel);
+extern DELPHI_PACKAGE char * __stdcall (*cudaGetErrorString)(cudaError_t error);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaDriverGetVersion)(/* out */ int &driverVersion);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaRuntimeGetVersion)(/* out */ int &runtimeVersion);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaSetDoubleForDevice)(double &d);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaSetDoubleForHost)(double &d);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaStreamCreate)(cudaStream_t &pStream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaStreamDestroy)(cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaStreamSynchronize)(cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaStreamQuery)(cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaEventCreate)(cudaEvent_t &event);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaEventCreateWithFlags)(cudaEvent_t &event, int flags);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaEventRecord)(cudaEvent_t event, cudaStream_t stream);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaEventQuery)(cudaEvent_t event);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaEventSynchronize)(cudaEvent_t event);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaEventDestroy)(cudaEvent_t event);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaEventElapsedTime)(float &ms, cudaEvent_t start, cudaEvent_t ending);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaWGLGetDevice)(int &device, Cuda::Import::HGPUNV hGpu);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaThreadExit)(void);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaThreadSynchronize)(void);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaThreadSetLimit)(Cuda::Import::TcudaLimit limit, System::NativeUInt value);
+extern DELPHI_PACKAGE TcudaError __stdcall (*cudaThreadGetLimit)(System::NativeUInt &value, Cuda::Import::TcudaLimit limit);
+extern DELPHI_PACKAGE System::UnicodeString __fastcall cudaGetLastErrorString(void);
+extern DELPHI_PACKAGE bool __fastcall InitCUDART(void);
+extern DELPHI_PACKAGE void __fastcall CloseCUDART(void);
+extern DELPHI_PACKAGE bool __fastcall InitCUDARTFromLibrary(const System::WideString LibName);
+extern DELPHI_PACKAGE bool __fastcall IsCUDARTInitialized(void);
+}	/* namespace Runtime */
+}	/* namespace Cuda */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CUDA_RUNTIME)
+using namespace Cuda::Runtime;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CUDA)
+using namespace Cuda;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// CUDA_RuntimeHPP

+ 78 - 0
include/Win32/CUDA.Utility.hpp

@@ -0,0 +1,78 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'CUDA.Utility.pas' rev: 36.00 (Windows)
+
+#ifndef CUDA_UtilityHPP
+#define CUDA_UtilityHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Cuda
+{
+namespace Utility
+{
+//-- forward type declarations -----------------------------------------------
+//-- type declarations -------------------------------------------------------
+//-- var, const, procedure ---------------------------------------------------
+#define CUTILDLL L"cutil32.dll"
+extern DELPHI_PACKAGE char * __stdcall (*cutFindFilePath)(const char * filename, const char * executablePath);
+extern DELPHI_PACKAGE bool __stdcall (*cutLoadPGMf)(const char * filename, System::PSingle &data, int &w, int &h);
+extern DELPHI_PACKAGE bool __stdcall (*cutSavePGMf)(const char * filename, System::PSingle data, int w, int h);
+extern DELPHI_PACKAGE bool __stdcall (*cutLoadPGMub)(const char * filename, Winapi::Windows::PByte &data, int &w, int &h);
+extern DELPHI_PACKAGE bool __stdcall (*cutLoadPPMub)(const char * filename, Winapi::Windows::PByte &data, int &w, int &h);
+extern DELPHI_PACKAGE bool __stdcall (*cutLoadPPM4ub)(const char * filename, Winapi::Windows::PByte &data, int &w, int &h);
+extern DELPHI_PACKAGE bool __stdcall (*cutLoadPGMi)(const char * filename, System::PInteger &data, int &w, int &h);
+extern DELPHI_PACKAGE bool __stdcall (*cutLoadPGMs)(const char * filename, PWORD &data, int &w, int &h);
+extern DELPHI_PACKAGE bool __stdcall (*cutSavePGMub)(const char * filename, Winapi::Windows::PByte data, int w, int h);
+extern DELPHI_PACKAGE bool __stdcall (*cutSavePPMub)(const char * filename, Winapi::Windows::PByte data, int w, int h);
+extern DELPHI_PACKAGE bool __stdcall (*cutSavePPM4ub)(const char * filename, Winapi::Windows::PByte data, int w, int h);
+extern DELPHI_PACKAGE bool __stdcall (*cutSavePGMi)(const char * filename, System::PInteger data, int w, int h);
+extern DELPHI_PACKAGE bool __stdcall (*cutSavePGMs)(const char * filename, PWORD data, int w, int h);
+extern DELPHI_PACKAGE bool __stdcall (*cutComparef)(const Winapi::Windows::PSingle reference, const Winapi::Windows::PSingle data, const unsigned len);
+extern DELPHI_PACKAGE bool __stdcall (*cutComparei)(const System::PInteger reference, const System::PInteger data, const unsigned len);
+extern DELPHI_PACKAGE bool __stdcall (*cutCompareuit)(const System::PInteger reference, const System::PInteger data, const unsigned len, const float epsilon, const float threshold);
+extern DELPHI_PACKAGE bool __stdcall (*cutCompareub)(const Winapi::Windows::PByte reference, const Winapi::Windows::PByte data, const unsigned len);
+extern DELPHI_PACKAGE bool __stdcall (*cutCompareubt)(const Winapi::Windows::PByte reference, const Winapi::Windows::PByte data, const unsigned len, const float epsilon, const float threshold);
+extern DELPHI_PACKAGE bool __stdcall (*cutCompareube)(const Winapi::Windows::PByte reference, const Winapi::Windows::PByte data, const unsigned len, const float epsilon);
+extern DELPHI_PACKAGE bool __stdcall (*cutComparefe)(const Winapi::Windows::PSingle reference, const Winapi::Windows::PSingle data, const unsigned len, const float epsilon);
+extern DELPHI_PACKAGE bool __stdcall (*cutComparefet)(const Winapi::Windows::PSingle reference, const Winapi::Windows::PSingle data, const unsigned len, const float epsilon, const float threshold);
+extern DELPHI_PACKAGE bool __stdcall (*cutCompareL2fe)(const Winapi::Windows::PSingle reference, const Winapi::Windows::PSingle data, const unsigned len, const float epsilon);
+extern DELPHI_PACKAGE bool __stdcall (*cutCreateTimer)(unsigned &name);
+extern DELPHI_PACKAGE bool __stdcall (*cutStartTimer)(const unsigned name);
+extern DELPHI_PACKAGE bool __stdcall (*cutStopTimer)(const unsigned name);
+extern DELPHI_PACKAGE bool __stdcall (*cutResetTimer)(const unsigned name);
+extern DELPHI_PACKAGE bool __stdcall (*cutDeleteTimer)(const unsigned name);
+extern DELPHI_PACKAGE float __stdcall (*cutGetTimerValue)(const unsigned name);
+extern DELPHI_PACKAGE float __stdcall (*cutGetAverageTimerValue)(const unsigned name);
+extern DELPHI_PACKAGE void __stdcall (*cutFree)(void * ptr);
+extern DELPHI_PACKAGE bool __fastcall InitCUTIL(void);
+extern DELPHI_PACKAGE void __fastcall CloseCUTIL(void);
+extern DELPHI_PACKAGE bool __fastcall InitCUTILFromLibrary(const System::WideString LibName);
+extern DELPHI_PACKAGE bool __fastcall IsCUTILInitialized(void);
+}	/* namespace Utility */
+}	/* namespace Cuda */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CUDA_UTILITY)
+using namespace Cuda::Utility;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CUDA)
+using namespace Cuda;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// CUDA_UtilityHPP

+ 136 - 0
include/Win32/Cg.GL.hpp

@@ -0,0 +1,136 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'Cg.GL.pas' rev: 36.00 (Windows)
+
+#ifndef Cg_GLHPP
+#define Cg_GLHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+#include <Cg.Import.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Cg
+{
+namespace Gl
+{
+//-- forward type declarations -----------------------------------------------
+//-- type declarations -------------------------------------------------------
+typedef unsigned TCGGLenum;
+
+typedef TCGGLenum CGGLenum;
+
+//-- var, const, procedure ---------------------------------------------------
+#define CgGLlibrary L"cgGL.dll"
+static _DELPHI_CONST System::Int8 CG_GL_MATRIX_IDENTITY = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 CG_GL_MATRIX_TRANSPOSE = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 CG_GL_MATRIX_INVERSE = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 CG_GL_MATRIX_INVERSE_TRANSPOSE = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 CG_GL_MODELVIEW_MATRIX = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 CG_GL_PROJECTION_MATRIX = System::Int8(0x5);
+static _DELPHI_CONST System::Int8 CG_GL_TEXTURE_MATRIX = System::Int8(0x6);
+static _DELPHI_CONST System::Int8 CG_GL_MODELVIEW_PROJECTION_MATRIX = System::Int8(0x7);
+static _DELPHI_CONST System::Int8 CG_GL_VERTEX = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 CG_GL_FRAGMENT = System::Int8(0x9);
+extern "C" Cg::Import::TCGbool __cdecl cgGLIsProfileSupported(Cg::Import::TCGprofile profile);
+extern "C" void __cdecl cgGLEnableProfile(Cg::Import::TCGprofile profile);
+extern "C" void __cdecl cgGLDisableProfile(Cg::Import::TCGprofile profile);
+extern "C" Cg::Import::TCGprofile __cdecl cgGLGetLatestProfile(TCGGLenum profile_type);
+extern "C" void __cdecl cgGLSetOptimalOptions(Cg::Import::TCGprofile profile);
+extern "C" void __cdecl cgGLLoadProgram(Cg::Import::PCGprogram _program);
+extern "C" Cg::Import::TCGbool __cdecl cgGLIsProgramLoaded(Cg::Import::PCGprogram _program);
+extern "C" void __cdecl cgGLBindProgram(Cg::Import::PCGprogram _program);
+extern "C" void __cdecl cgGLUnbindProgram(Cg::Import::TCGprofile profile);
+extern "C" unsigned __cdecl cgGLGetProgramID(Cg::Import::PCGprogram _program);
+extern "C" void __cdecl cgGLSetParameter1f(Cg::Import::PCGparameter param, float x);
+extern "C" void __cdecl cgGLSetParameter2f(Cg::Import::PCGparameter param, float x, float y);
+extern "C" void __cdecl cgGLSetParameter3f(Cg::Import::PCGparameter param, float x, float y, float z);
+extern "C" void __cdecl cgGLSetParameter4f(Cg::Import::PCGparameter param, float x, float y, float z, float w);
+extern "C" void __cdecl cgGLSetParameter1fv(Cg::Import::PCGparameter param, const Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgGLSetParameter2fv(Cg::Import::PCGparameter param, const Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgGLSetParameter3fv(Cg::Import::PCGparameter param, const Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgGLSetParameter4fv(Cg::Import::PCGparameter param, const Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgGLSetParameter1d(Cg::Import::PCGparameter param, double x);
+extern "C" void __cdecl cgGLSetParameter2d(Cg::Import::PCGparameter param, double x, double y);
+extern "C" void __cdecl cgGLSetParameter3d(Cg::Import::PCGparameter param, double x, double y, double z);
+extern "C" void __cdecl cgGLSetParameter4d(Cg::Import::PCGparameter param, double x, double y, double z, double w);
+extern "C" void __cdecl cgGLSetParameter1dv(Cg::Import::PCGparameter param, const System::PDouble v);
+extern "C" void __cdecl cgGLSetParameter2dv(Cg::Import::PCGparameter param, const System::PDouble v);
+extern "C" void __cdecl cgGLSetParameter3dv(Cg::Import::PCGparameter param, const System::PDouble v);
+extern "C" void __cdecl cgGLSetParameter4dv(Cg::Import::PCGparameter param, const System::PDouble v);
+extern "C" void __cdecl cgGLGetParameter1f(Cg::Import::PCGparameter param, Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgGLGetParameter2f(Cg::Import::PCGparameter param, Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgGLGetParameter3f(Cg::Import::PCGparameter param, Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgGLGetParameter4f(Cg::Import::PCGparameter param, Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgGLGetParameter1d(Cg::Import::PCGparameter param, System::PDouble v);
+extern "C" void __cdecl cgGLGetParameter2d(Cg::Import::PCGparameter param, System::PDouble v);
+extern "C" void __cdecl cgGLGetParameter3d(Cg::Import::PCGparameter param, System::PDouble v);
+extern "C" void __cdecl cgGLGetParameter4d(Cg::Import::PCGparameter param, System::PDouble v);
+extern "C" void __cdecl cgGLSetParameterArray1f(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, const Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgGLSetParameterArray2f(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, const Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgGLSetParameterArray3f(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, const Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgGLSetParameterArray4f(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, const Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgGLSetParameterArray1d(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, const System::PDouble v);
+extern "C" void __cdecl cgGLSetParameterArray2d(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, const System::PDouble v);
+extern "C" void __cdecl cgGLSetParameterArray3d(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, const System::PDouble v);
+extern "C" void __cdecl cgGLSetParameterArray4d(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, const System::PDouble v);
+extern "C" void __cdecl cgGLGetParameterArray1f(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgGLGetParameterArray2f(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgGLGetParameterArray3f(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgGLGetParameterArray4f(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgGLGetParameterArray1d(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, System::PDouble v);
+extern "C" void __cdecl cgGLGetParameterArray2d(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, System::PDouble v);
+extern "C" void __cdecl cgGLGetParameterArray3d(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, System::PDouble v);
+extern "C" void __cdecl cgGLGetParameterArray4d(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, System::PDouble v);
+extern "C" void __cdecl cgGLSetParameterPointer(Cg::Import::PCGparameter param, int fsize, unsigned _type, int stride, const void * _pointer);
+extern "C" void __cdecl cgGLEnableClientState(Cg::Import::PCGparameter param);
+extern "C" void __cdecl cgGLDisableClientState(Cg::Import::PCGparameter param);
+extern "C" void __cdecl cgGLSetMatrixParameterdr(Cg::Import::PCGparameter param, const System::PDouble matrix);
+extern "C" void __cdecl cgGLSetMatrixParameterfr(Cg::Import::PCGparameter param, const Winapi::Windows::PSingle matrix);
+extern "C" void __cdecl cgGLSetMatrixParameterdc(Cg::Import::PCGparameter param, const System::PDouble matrix);
+extern "C" void __cdecl cgGLSetMatrixParameterfc(Cg::Import::PCGparameter param, const Winapi::Windows::PSingle matrix);
+extern "C" void __cdecl cgGLGetMatrixParameterdr(Cg::Import::PCGparameter param, System::PDouble matrix);
+extern "C" void __cdecl cgGLGetMatrixParameterfr(Cg::Import::PCGparameter param, Winapi::Windows::PSingle matrix);
+extern "C" void __cdecl cgGLGetMatrixParameterdc(Cg::Import::PCGparameter param, System::PDouble matrix);
+extern "C" void __cdecl cgGLGetMatrixParameterfc(Cg::Import::PCGparameter param, Winapi::Windows::PSingle matrix);
+extern "C" void __cdecl cgGLSetStateMatrixParameter(Cg::Import::PCGparameter param, TCGGLenum matrix, TCGGLenum transform);
+extern "C" void __cdecl cgGLSetMatrixParameterArrayfc(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, const Winapi::Windows::PSingle matrices);
+extern "C" void __cdecl cgGLSetMatrixParameterArrayfr(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, const Winapi::Windows::PSingle matrices);
+extern "C" void __cdecl cgGLSetMatrixParameterArraydc(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, const System::PDouble matrices);
+extern "C" void __cdecl cgGLSetMatrixParameterArraydr(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, const System::PDouble matrices);
+extern "C" void __cdecl cgGLGetMatrixParameterArrayfc(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, Winapi::Windows::PSingle matrices);
+extern "C" void __cdecl cgGLGetMatrixParameterArrayfr(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, Winapi::Windows::PSingle matrices);
+extern "C" void __cdecl cgGLGetMatrixParameterArraydc(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, System::PDouble matrices);
+extern "C" void __cdecl cgGLGetMatrixParameterArraydr(Cg::Import::PCGparameter param, System::LongInt offset, System::LongInt nelements, System::PDouble matrices);
+extern "C" void __cdecl cgGLSetTextureParameter(Cg::Import::PCGparameter param, unsigned texobj);
+extern "C" unsigned __cdecl cgGLGetTextureParameter(Cg::Import::PCGparameter param);
+extern "C" void __cdecl cgGLEnableTextureParameter(Cg::Import::PCGparameter param);
+extern "C" void __cdecl cgGLDisableTextureParameter(Cg::Import::PCGparameter param);
+extern "C" unsigned __cdecl cgGLGetTextureEnum(Cg::Import::PCGparameter param);
+extern "C" void __cdecl cgGLSetManageTextureParameters(Cg::Import::PCGcontext ctx, Cg::Import::TCGbool flag);
+extern "C" Cg::Import::TCGbool __cdecl cgGLGetManageTextureParameters(Cg::Import::PCGcontext ctx);
+}	/* namespace Gl */
+}	/* namespace Cg */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CG_GL)
+using namespace Cg::Gl;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CG)
+using namespace Cg;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// Cg_GLHPP

+ 259 - 0
include/Win32/Cg.Import.hpp

@@ -0,0 +1,259 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'Cg.Import.pas' rev: 36.00 (Windows)
+
+#ifndef Cg_ImportHPP
+#define Cg_ImportHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Cg
+{
+namespace Import
+{
+//-- forward type declarations -----------------------------------------------
+struct DECLSPEC_DRECORD _CGcontext
+{
+};
+
+
+struct DECLSPEC_DRECORD _CGprogram
+{
+};
+
+
+struct DECLSPEC_DRECORD _CGparameter
+{
+};
+
+
+//-- type declarations -------------------------------------------------------
+typedef char * PCharCG;
+
+typedef char * *PPCharCG;
+
+typedef System::AnsiString StringCG;
+
+typedef int TCGbool;
+
+typedef TCGbool CGbool;
+
+typedef _CGcontext *PCGcontext;
+
+typedef PCGcontext CGcontext;
+
+typedef _CGprogram *PCGprogram;
+
+typedef PCGprogram CGprogram;
+
+typedef _CGparameter *PCGparameter;
+
+typedef PCGparameter CGparameter;
+
+enum DECLSPEC_DENUM TCGtype : unsigned int { CG_UNKNOWN_TYPE, CG_STRUCT, CG_ARRAY, CG_TYPE_START_ENUM = 1024, CG_HALF, CG_HALF2, CG_HALF3, CG_HALF4, CG_HALF1x1, CG_HALF1x2, CG_HALF1x3, CG_HALF1x4, CG_HALF2x1, CG_HALF2x2, CG_HALF2x3, CG_HALF2x4, CG_HALF3x1, CG_HALF3x2, CG_HALF3x3, CG_HALF3x4, CG_HALF4x1, CG_HALF4x2, CG_HALF4x3, CG_HALF4x4, CG_FLOAT, CG_FLOAT2, CG_FLOAT3, CG_FLOAT4, CG_FLOAT1x1, CG_FLOAT1x2, CG_FLOAT1x3, CG_FLOAT1x4, CG_FLOAT2x1, CG_FLOAT2x2, CG_FLOAT2x3, CG_FLOAT2x4, CG_FLOAT3x1, CG_FLOAT3x2, CG_FLOAT3x3, CG_FLOAT3x4, CG_FLOAT4x1, CG_FLOAT4x2, CG_FLOAT4x3, CG_FLOAT4x4, CG_SAMPLER1D, CG_SAMPLER2D, CG_SAMPLER3D, CG_SAMPLERRECT, CG_SAMPLERCUBE, CG_FIXED, CG_FIXED2, CG_FIXED3, CG_FIXED4, CG_FIXED1x1, CG_FIXED1x2, CG_FIXED1x3, CG_FIXED1x4, 
+	CG_FIXED2x1, CG_FIXED2x2, CG_FIXED2x3, CG_FIXED2x4, CG_FIXED3x1, CG_FIXED3x2, CG_FIXED3x3, CG_FIXED3x4, CG_FIXED4x1, CG_FIXED4x2, CG_FIXED4x3, CG_FIXED4x4, CG_HALF1, CG_FLOAT1, CG_FIXED1, CG_INT, CG_INT1, CG_INT2, CG_INT3, CG_INT4, CG_INT1x1, CG_INT1x2, CG_INT1x3, CG_INT1x4, CG_INT2x1, CG_INT2x2, CG_INT2x3, CG_INT2x4, CG_INT3x1, CG_INT3x2, CG_INT3x3, CG_INT3x4, CG_INT4x1, CG_INT4x2, CG_INT4x3, CG_INT4x4, CG_BOOL, CG_BOOL1, CG_BOOL2, CG_BOOL3, CG_BOOL4, CG_BOOL1x1, CG_BOOL1x2, CG_BOOL1x3, CG_BOOL1x4, CG_BOOL2x1, CG_BOOL2x2, CG_BOOL2x3, CG_BOOL2x4, CG_BOOL3x1, CG_BOOL3x2, CG_BOOL3x3, CG_BOOL3x4, CG_BOOL4x1, CG_BOOL4x2, CG_BOOL4x3, CG_BOOL4x4 };
+
+typedef TCGtype CGtype;
+
+enum DECLSPEC_DENUM TCGresource : unsigned int { CG_TEXUNIT0 = 2048, CG_TEXUNIT1, CG_TEXUNIT2, CG_TEXUNIT3, CG_TEXUNIT4, CG_TEXUNIT5, CG_TEXUNIT6, CG_TEXUNIT7, CG_TEXUNIT8, CG_TEXUNIT9, CG_TEXUNIT10, CG_TEXUNIT11, CG_TEXUNIT12, CG_TEXUNIT13, CG_TEXUNIT14, CG_TEXUNIT15, CG_ATTR0 = 2113, CG_ATTR1, CG_ATTR2, CG_ATTR3, CG_ATTR4, CG_ATTR5, CG_ATTR6, CG_ATTR7, CG_ATTR8, CG_ATTR9, CG_ATTR10, CG_ATTR11, CG_ATTR12, CG_ATTR13, CG_ATTR14, CG_ATTR15, CG_C = 2178, CG_TEX0, CG_TEX1, CG_TEX2, CG_TEX3 = 2192, CG_TEX4, CG_TEX5, CG_TEX6, CG_TEX7, CG_HPOS = 2243, CG_COL0 = 2245, CG_COL1, CG_COL2, CG_COL3, CG_PSIZ = 2309, CG_WPOS = 2373, CG_POSITION0 = 2437, CG_POSITION1, CG_POSITION2, CG_POSITION3, CG_POSITION4, CG_POSITION5, CG_POSITION6, CG_POSITION7, CG_POSITION8, 
+	CG_POSITION9, CG_POSITION10, CG_POSITION11, CG_POSITION12, CG_POSITION13, CG_POSITION14, CG_POSITION15, CG_DIFFUSE0 = 2501, CG_TANGENT0 = 2565, CG_TANGENT1, CG_TANGENT2, CG_TANGENT3, CG_TANGENT4, CG_TANGENT5, CG_TANGENT6, CG_TANGENT7, CG_TANGENT8, CG_TANGENT9, CG_TANGENT10, CG_TANGENT11, CG_TANGENT12, CG_TANGENT13, CG_TANGENT14, CG_TANGENT15, CG_SPECULAR0 = 2629, CG_BLENDINDICES0 = 2693, CG_BLENDINDICES1, CG_BLENDINDICES2, CG_BLENDINDICES3, CG_BLENDINDICES4, CG_BLENDINDICES5, CG_BLENDINDICES6, CG_BLENDINDICES7, CG_BLENDINDICES8, CG_BLENDINDICES9, CG_BLENDINDICES10, CG_BLENDINDICES11, CG_BLENDINDICES12, CG_BLENDINDICES13, CG_BLENDINDICES14, CG_BLENDINDICES15, CG_COLOR0 = 2757, CG_COLOR1, CG_COLOR2, CG_COLOR3, CG_COLOR4, CG_COLOR5, CG_COLOR6, CG_COLOR7, 
+	CG_COLOR8, CG_COLOR9, CG_COLOR10, CG_COLOR11, CG_COLOR12, CG_COLOR13, CG_COLOR14, CG_COLOR15, CG_PSIZE0 = 2821, CG_PSIZE1, CG_PSIZE2, CG_PSIZE3, CG_PSIZE4, CG_PSIZE5, CG_PSIZE6, CG_PSIZE7, CG_PSIZE8, CG_PSIZE9, CG_PSIZE10, CG_PSIZE11, CG_PSIZE12, CG_PSIZE13, CG_PSIZE14, CG_PSIZE15, CG_BINORMAL0 = 2885, CG_BINORMAL1, CG_BINORMAL2, CG_BINORMAL3, CG_BINORMAL4, CG_BINORMAL5, CG_BINORMAL6, CG_BINORMAL7, CG_BINORMAL8, CG_BINORMAL9, CG_BINORMAL10, CG_BINORMAL11, CG_BINORMAL12, CG_BINORMAL13, CG_BINORMAL14, CG_BINORMAL15, CG_FOG0 = 2917, CG_FOG1, CG_FOG2, CG_FOG3, CG_FOG4, CG_FOG5, CG_FOG6, CG_FOG7, CG_FOG8, CG_FOG9, CG_FOG10, CG_FOG11, CG_FOG12, CG_FOG13, CG_FOG14, CG_FOG15, CG_DEPTH0, CG_DEPTH1, CG_DEPTH2, CG_DEPTH3, CG_DEPTH4, CG_DEPTH5, CG_DEPTH6, CG_DEPTH7, 
+	CG_DEPTH8, CG_DEPTH9 = 29542, CG_DEPTH10 = 2943, CG_DEPTH11, CG_DEPTH12, CG_DEPTH13, CG_DEPTH14, CG_DEPTH15, CG_SAMPLE0, CG_SAMPLE1, CG_SAMPLE2, CG_SAMPLE3, CG_SAMPLE4, CG_SAMPLE5, CG_SAMPLE6, CG_SAMPLE7, CG_SAMPLE8, CG_SAMPLE9, CG_SAMPLE10, CG_SAMPLE11, CG_SAMPLE12, CG_SAMPLE13, CG_SAMPLE14, CG_SAMPLE15, CG_BLENDWEIGHT0 = 3028, CG_BLENDWEIGHT1, CG_BLENDWEIGHT2, CG_BLENDWEIGHT3, CG_BLENDWEIGHT4, CG_BLENDWEIGHT5, CG_BLENDWEIGHT6, CG_BLENDWEIGHT7, CG_BLENDWEIGHT8, CG_BLENDWEIGHT9, CG_BLENDWEIGHT10, CG_BLENDWEIGHT11, CG_BLENDWEIGHT12, CG_BLENDWEIGHT13, CG_BLENDWEIGHT14, CG_BLENDWEIGHT15, CG_NORMAL0 = 3092, CG_NORMAL1, CG_NORMAL2, CG_NORMAL3, CG_NORMAL4, CG_NORMAL5, CG_NORMAL6, CG_NORMAL7, CG_NORMAL8, CG_NORMAL9, CG_NORMAL10, CG_NORMAL11, CG_NORMAL12, 
+	CG_NORMAL13, CG_NORMAL14, CG_NORMAL15, CG_FOGCOORD = 3156, CG_TEXCOORD0 = 3220, CG_TEXCOORD1, CG_TEXCOORD2, CG_TEXCOORD3, CG_TEXCOORD4, CG_TEXCOORD5, CG_TEXCOORD6, CG_TEXCOORD7, CG_TEXCOORD8, CG_TEXCOORD9, CG_TEXCOORD10, CG_TEXCOORD11, CG_TEXCOORD12, CG_TEXCOORD13, CG_TEXCOORD14, CG_TEXCOORD15, CG_COMBINER_CONST0 = 3284, CG_COMBINER_CONST1, CG_COMBINER_STAGE_CONST0, CG_COMBINER_STAGE_CONST1, CG_OFFSET_TEXTURE_MATRIX, CG_OFFSET_TEXTURE_SCALE, CG_OFFSET_TEXTURE_BIAS, CG_CONST_EYE, CG_TESSFACTOR = 3255, CG_UNDEFINED };
+
+typedef TCGresource CGresource;
+
+enum DECLSPEC_DENUM TCGprofile : unsigned int { CG_PROFILE_START = 6144, CG_PROFILE_UNKNOWN, CG_PROFILE_VP20, CG_PROFILE_FP20, CG_PROFILE_VP30, CG_PROFILE_FP30, CG_PROFILE_ARBVP1, CG_PROFILE_ARBFP1 = 7000, CG_PROFILE_VP40, CG_PROFILE_FP40 = 6151, CG_PROFILE_VS_1_1 = 6153, CG_PROFILE_VS_2_0, CG_PROFILE_VS_2_X, CG_PROFILE_PS_1_1 = 6159, CG_PROFILE_PS_1_2, CG_PROFILE_PS_1_3, CG_PROFILE_PS_2_0, CG_PROFILE_PS_2_X, CG_PROFILE_MAX = 7100 };
+
+typedef TCGprofile CGprofile;
+
+typedef unsigned *PCGerror;
+
+typedef unsigned TCGerror;
+
+typedef TCGerror CGerror;
+
+enum DECLSPEC_DENUM TCGenum : unsigned int { CG_UNKNOWN = 4096, CG_IN, CG_OUT, CG_INOUT, CG_MIXED, CG_VARYING, CG_UNIFORM, CG_CONSTANT, CG_PROGRAM_SOURCE, CG_PROGRAM_ENTRY, CG_COMPILED_PROGRAM, CG_PROGRAM_PROFILE, CG_GLOBAL, CG_PROGRAM, CG_DEFAULT, CG_ERROR, CG_SOURCE, CG_OBJECT, CG_COMPILE_MANUAL, CG_COMPILE_IMMEDIATE, CG_COMPILE_LAZY, CG_CURRENT, CG_LITERAL, CG_VERSION };
+
+typedef TCGenum CGenum;
+
+typedef void __cdecl (*TCGerrorCallbackFunc)(void);
+
+typedef TCGerrorCallbackFunc CGerrorCallbackFunc;
+
+//-- var, const, procedure ---------------------------------------------------
+#define CgLibrary L"cg.dll"
+static _DELPHI_CONST System::Int8 CG_VERSION_1_2 = System::Int8(0x1);
+static _DELPHI_CONST System::Word CG_VERSION_NUM = System::Word(0x4b0);
+static _DELPHI_CONST int CG_FALSE = int(0);
+static _DELPHI_CONST int CG_TRUE = int(1);
+static _DELPHI_CONST System::Int8 CG_NO_ERROR = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 CG_COMPILER_ERROR = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 CG_INVALID_PARAMETER_ERROR = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 CG_INVALID_PROFILE_ERROR = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 CG_PROGRAM_LOAD_ERROR = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 CG_PROGRAM_BIND_ERROR = System::Int8(0x5);
+static _DELPHI_CONST System::Int8 CG_PROGRAM_NOT_LOADED_ERROR = System::Int8(0x6);
+static _DELPHI_CONST System::Int8 CG_UNSUPPORTED_GL_EXTENSION_ERROR = System::Int8(0x7);
+static _DELPHI_CONST System::Int8 CG_INVALID_VALUE_TYPE_ERROR = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 CG_NOT_MATRIX_PARAM_ERROR = System::Int8(0x9);
+static _DELPHI_CONST System::Int8 CG_INVALID_ENUMERANT_ERROR = System::Int8(0xa);
+static _DELPHI_CONST System::Int8 CG_NOT_4x4_MATRIX_ERROR = System::Int8(0xb);
+static _DELPHI_CONST System::Int8 CG_FILE_READ_ERROR = System::Int8(0xc);
+static _DELPHI_CONST System::Int8 CG_FILE_WRITE_ERROR = System::Int8(0xd);
+static _DELPHI_CONST System::Int8 CG_NVPARSE_ERROR = System::Int8(0xe);
+static _DELPHI_CONST System::Int8 CG_MEMORY_ALLOC_ERROR = System::Int8(0xf);
+static _DELPHI_CONST System::Int8 CG_INVALID_CONTEXT_HANDLE_ERROR = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 CG_INVALID_PROGRAM_HANDLE_ERROR = System::Int8(0x11);
+static _DELPHI_CONST System::Int8 CG_INVALID_PARAM_HANDLE_ERROR = System::Int8(0x12);
+static _DELPHI_CONST System::Int8 CG_UNKNOWN_PROFILE_ERROR = System::Int8(0x13);
+static _DELPHI_CONST System::Int8 CG_VAR_ARG_ERROR = System::Int8(0x14);
+static _DELPHI_CONST System::Int8 CG_INVALID_DIMENSION_ERROR = System::Int8(0x15);
+static _DELPHI_CONST System::Int8 CG_ARRAY_PARAM_ERROR = System::Int8(0x16);
+static _DELPHI_CONST System::Int8 CG_OUT_OF_ARRAY_BOUNDS_ERROR = System::Int8(0x17);
+static _DELPHI_CONST System::Int8 CG_CONFLICTING_TYPES_ERROR = System::Int8(0x18);
+static _DELPHI_CONST System::Int8 CG_CONFLICTING_PARAMETER_TYPES_ERROR = System::Int8(0x19);
+static _DELPHI_CONST System::Int8 CG_PARAMETER_IS_NOT_SHARED_ERROR = System::Int8(0x1a);
+static _DELPHI_CONST System::Int8 CG_INVALID_PARAMETER_VARIABILITY_ERROR = System::Int8(0x1b);
+static _DELPHI_CONST System::Int8 CG_CANNOT_DESTROY_PARAMETER_ERROR = System::Int8(0x1c);
+static _DELPHI_CONST System::Int8 CG_NOT_ROOT_PARAMETER_ERROR = System::Int8(0x1d);
+static _DELPHI_CONST System::Int8 CG_PARAMETERS_DO_NOT_MATCH_ERROR = System::Int8(0x1e);
+static _DELPHI_CONST System::Int8 CG_IS_NOT_PROGRAM_PARAMETER_ERROR = System::Int8(0x1f);
+static _DELPHI_CONST System::Int8 CG_INVALID_PARAMETER_TYPE_ERROR = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 CG_PARAMETER_IS_NOT_RESIZABLE_ARRAY_ERROR = System::Int8(0x21);
+static _DELPHI_CONST System::Int8 CG_INVALID_SIZE_ERROR = System::Int8(0x22);
+static _DELPHI_CONST System::Int8 CG_BIND_CREATES_CYCLE_ERROR = System::Int8(0x23);
+static _DELPHI_CONST System::Int8 CG_ARRAY_TYPES_DO_NOT_MATCH_ERROR = System::Int8(0x24);
+static _DELPHI_CONST System::Int8 CG_ARRAY_DIMENSIONS_DO_NOT_MATCH_ERROR = System::Int8(0x25);
+static _DELPHI_CONST System::Int8 CG_ARRAY_HAS_WRONG_DIMENSION_ERROR = System::Int8(0x26);
+static _DELPHI_CONST System::Int8 CG_TYPE_IS_NOT_DEFINED_IN_PROGRAM_ERROR = System::Int8(0x27);
+extern "C" PCGcontext __cdecl cgCreateContext(void);
+extern "C" void __cdecl cgDestroyContext(PCGcontext ctx);
+extern "C" TCGbool __cdecl cgIsContext(PCGcontext ctx);
+extern "C" System::WideChar * __cdecl cgGetLastListing(PCGcontext ctx);
+extern "C" void __cdecl cgSetAutoCompile(PCGcontext ctx, TCGenum flag);
+extern "C" PCGprogram __cdecl cgCreateProgram(PCGcontext ctx, TCGenum program_type, const PCharCG _program, TCGprofile profile, const PCharCG entry, const PPCharCG args);
+extern "C" PCGprogram __cdecl cgCreateProgramFromFile(PCGcontext ctx, TCGenum program_type, const PCharCG program_file, TCGprofile profile, const PCharCG entry, const PPCharCG args);
+extern "C" PCGprogram __cdecl cgCopyProgram(PCGprogram _program);
+extern "C" void __cdecl cgDestroyProgram(PCGprogram _program);
+extern "C" PCGprogram __cdecl cgGetFirstProgram(PCGcontext ctx);
+extern "C" PCGprogram __cdecl cgGetNextProgram(PCGprogram current);
+extern "C" PCGcontext __cdecl cgGetProgramContext(PCGprogram prog);
+extern "C" TCGbool __cdecl cgIsProgram(PCGprogram _program);
+extern "C" void __cdecl cgCompileProgram(PCGprogram _program);
+extern "C" TCGbool __cdecl cgIsProgramCompiled(PCGprogram _program);
+extern "C" PCharCG __cdecl cgGetProgramString(PCGprogram prog, TCGenum pname);
+extern "C" TCGprofile __cdecl cgGetProgramProfile(PCGprogram prog);
+extern "C" PCGparameter __cdecl cgCreateParameter(PCGcontext ctx, TCGtype type_);
+extern "C" PCGparameter __cdecl cgCreateParameterArray(PCGcontext ctx, TCGtype type_, int length);
+extern "C" PCGparameter __cdecl cgCreateParameterMultiDimArray(PCGcontext ctx, TCGtype type_, int dim, const System::PInteger lengths);
+extern "C" void __cdecl cgDestroyParameter(PCGparameter param);
+extern "C" void __cdecl cgConnectParameter(PCGparameter from, PCGparameter to_);
+extern "C" void __cdecl cgDisconnectParameter(PCGparameter param);
+extern "C" PCGparameter __cdecl cgGetConnectedParameter(PCGparameter param);
+extern "C" int __cdecl cgGetNumConnectedToParameters(PCGparameter param);
+extern "C" PCGparameter __cdecl cgGetConnectedToParameter(PCGparameter param, int index);
+extern "C" PCGparameter __cdecl cgGetNamedParameter(PCGprogram prog, const PCharCG name);
+extern "C" PCGparameter __cdecl cgGetNamedProgramParameter(PCGprogram prog, TCGenum name_space, const PCharCG name);
+extern "C" PCGparameter __cdecl cgGetFirstParameter(PCGprogram prog, TCGenum name_space);
+extern "C" PCGparameter __cdecl cgGetNextParameter(PCGparameter current);
+extern "C" PCGparameter __cdecl cgGetFirstLeafParameter(PCGprogram prog, TCGenum name_space);
+extern "C" PCGparameter __cdecl cgGetNextLeafParameter(PCGparameter current);
+extern "C" PCGparameter __cdecl cgGetFirstStructParameter(PCGparameter param);
+extern "C" PCGparameter __cdecl cgGetNamedStructParameter(PCGparameter param, const PCharCG name);
+extern "C" PCGparameter __cdecl cgGetFirstDependentParameter(PCGparameter param);
+extern "C" PCGparameter __cdecl cgGetArrayParameter(PCGparameter aparam, int index);
+extern "C" int __cdecl cgGetArrayDimension(PCGparameter param);
+extern "C" TCGtype __cdecl cgGetArrayType(PCGparameter param);
+extern "C" int __cdecl cgGetArraySize(PCGparameter param, int dimension);
+extern "C" void __cdecl cgSetArraySize(PCGparameter param, int size);
+extern "C" void __cdecl cgSetMultiDimArraySize(PCGparameter param, const System::PInteger sizes);
+extern "C" PCGprogram __cdecl cgGetParameterProgram(PCGparameter param);
+extern "C" PCGcontext __cdecl cgGetParameterContext(PCGparameter param);
+extern "C" TCGbool __cdecl cgIsParameter(PCGparameter param);
+extern "C" PCharCG __cdecl cgGetParameterName(PCGparameter param);
+extern "C" TCGtype __cdecl cgGetParameterType(PCGparameter param);
+extern "C" TCGtype __cdecl cgGetParameterNamedType(PCGparameter param);
+extern "C" PCharCG __cdecl cgGetParameterSemantic(PCGparameter param);
+extern "C" TCGresource __cdecl cgGetParameterResource(PCGparameter param);
+extern "C" TCGresource __cdecl cgGetParameterBaseResource(PCGparameter param);
+extern "C" System::LongWord __cdecl cgGetParameterResourceIndex(PCGparameter param);
+extern "C" TCGenum __cdecl cgGetParameterVariability(PCGparameter param);
+extern "C" TCGenum __cdecl cgGetParameterDirection(PCGparameter param);
+extern "C" TCGbool __cdecl cgIsParameterReferenced(PCGparameter param);
+extern "C" System::PDouble __cdecl cgGetParameterValues(PCGparameter param, TCGenum value_type, /* out */ int &nvalues);
+extern "C" int __cdecl cgGetParameterOrdinalNumber(PCGparameter param);
+extern "C" TCGbool __cdecl cgIsParameterGlobal(PCGparameter param);
+extern "C" int __cdecl cgGetParameterIndex(PCGparameter param);
+extern "C" void __cdecl cgSetParameterVariability(PCGparameter param, TCGenum vary);
+extern "C" void __cdecl cgSetParameterSemantic(PCGparameter param, const PCharCG semantic);
+extern "C" void __cdecl cgSetParameter1f(PCGparameter param, float x);
+extern "C" void __cdecl cgSetParameter2f(PCGparameter param, float x, float y);
+extern "C" void __cdecl cgSetParameter3f(PCGparameter param, float x, float y, float z);
+extern "C" void __cdecl cgSetParameter4f(PCGparameter param, float x, float y, float z, float w);
+extern "C" void __cdecl cgSetParameter1d(PCGparameter param, double x);
+extern "C" void __cdecl cgSetParameter2d(PCGparameter param, double x, double y);
+extern "C" void __cdecl cgSetParameter3d(PCGparameter param, double x, double y, double z);
+extern "C" void __cdecl cgSetParameter4d(PCGparameter param, double x, double y, double z, double w);
+extern "C" void __cdecl cgSetParameter1fv(PCGparameter param, const Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgSetParameter2fv(PCGparameter param, const Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgSetParameter3fv(PCGparameter param, const Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgSetParameter4fv(PCGparameter param, const Winapi::Windows::PSingle v);
+extern "C" void __cdecl cgSetParameter1dv(PCGparameter param, const System::PDouble x);
+extern "C" void __cdecl cgSetParameter2dv(PCGparameter param, const System::PDouble x);
+extern "C" void __cdecl cgSetParameter3dv(PCGparameter param, const System::PDouble x);
+extern "C" void __cdecl cgSetParameter4dv(PCGparameter param, const System::PDouble x);
+extern "C" void __cdecl cgSetMatrixParameterdr(PCGparameter param, const System::PDouble matrix);
+extern "C" void __cdecl cgSetMatrixParameterfr(PCGparameter param, const Winapi::Windows::PSingle matrix);
+extern "C" void __cdecl cgSetMatrixParameterdc(PCGparameter param, const System::PDouble matrix);
+extern "C" void __cdecl cgSetMatrixParameterfc(PCGparameter param, const Winapi::Windows::PSingle matrix);
+extern "C" PCharCG __cdecl cgGetTypeString(TCGtype _type);
+extern "C" TCGtype __cdecl cgGetType(const PCharCG type_string);
+extern "C" TCGtype __cdecl cgGetNamedUserType(CGprogram program_, const PCharCG name);
+extern "C" int __cdecl cgGetNumUserTypes(CGprogram program_);
+extern "C" TCGtype __cdecl cgGetUserType(CGprogram program_, int index);
+extern "C" int __cdecl cgGetNumParentTypes(TCGtype type_);
+extern "C" TCGtype __cdecl cgGetParentType(TCGtype type_, int index);
+extern "C" TCGbool __cdecl cgIsParentType(TCGtype parent, TCGtype child);
+extern "C" TCGbool __cdecl cgIsInterfaceType(TCGtype type_);
+extern "C" PCharCG __cdecl cgGetResourceString(TCGresource resource);
+extern "C" TCGresource __cdecl cgGetResource(const PCharCG resource_string);
+extern "C" PCharCG __cdecl cgGetEnumString(TCGenum en);
+extern "C" TCGenum __cdecl cgGetEnum(const PCharCG enum_string);
+extern "C" PCharCG __cdecl cgGetProfileString(TCGprofile profile);
+extern "C" TCGprofile __cdecl cgGetProfile(const PCharCG profile_string);
+extern "C" TCGerror __cdecl cgGetError(void);
+extern "C" PCharCG __cdecl cgGetErrorString(TCGerror error);
+extern "C" PCharCG __cdecl cgGetLastErrorString(PCGerror error);
+extern "C" void __cdecl cgSetErrorCallback(TCGerrorCallbackFunc func);
+extern "C" TCGerrorCallbackFunc __cdecl cgGetErrorCallback(void);
+extern "C" PCharCG __cdecl cgGetString(TCGenum sname);
+extern "C" PCGparameter __cdecl cgGetNextParameter_depr1_1(PCGparameter current);
+extern "C" PCGparameter __cdecl cgGetNextLeafParameter_depr1_1(PCGparameter current);
+}	/* namespace Import */
+}	/* namespace Cg */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CG_IMPORT)
+using namespace Cg::Import;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_CG)
+using namespace Cg;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// Cg_ImportHPP

+ 272 - 0
include/Win32/FMOD.Import.hpp

@@ -0,0 +1,272 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FMOD.Import.pas' rev: 36.00 (Windows)
+
+#ifndef FMOD_ImportHPP
+#define FMOD_ImportHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+#include <FMOD.types.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Fmod
+{
+namespace Import
+{
+//-- forward type declarations -----------------------------------------------
+//-- type declarations -------------------------------------------------------
+//-- var, const, procedure ---------------------------------------------------
+#define FMOD_DLL L"fmod32.dll"
+extern DELPHI_PACKAGE bool __fastcall FMOD_Load(System::WideChar * LibName);
+extern DELPHI_PACKAGE void __fastcall FMOD_Unload(void);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetOutput(Fmod::Types::TFSoundOutputTypes OutputType);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetDriver(int Driver);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetMixer(Fmod::Types::TFSoundMixerTypes Mixer);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetBufferSize(int LenMs);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetHWND(Winapi::Windows::THandle Hwnd);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetMinHardwareChannels(int Min);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetMaxHardwareChannels(int Max);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetMemorySystem(void * Pool, int PoolLen, Fmod::Types::TFSoundAllocCallback UserAlloc, Fmod::Types::TFSoundReallocCallback UserRealloc, Fmod::Types::TFSoundFreeCallback UserFree);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Init(int MixRate, int MaxSoftwareChannels, unsigned Flags);
+extern DELPHI_PACKAGE void __stdcall FSOUND_Close(void);
+extern DELPHI_PACKAGE void __stdcall FSOUND_Update(void);
+extern DELPHI_PACKAGE void __stdcall FSOUND_SetSpeakerMode(unsigned SpeakerMode);
+extern DELPHI_PACKAGE void __stdcall FSOUND_SetSFXMasterVolume(int Volume);
+extern DELPHI_PACKAGE void __stdcall FSOUND_SetPanSeperation(float PanSep);
+extern DELPHI_PACKAGE Fmod::Types::TFModErrors __stdcall FSOUND_GetError(void);
+extern DELPHI_PACKAGE float __stdcall FSOUND_GetVersion(void);
+extern DELPHI_PACKAGE Fmod::Types::TFSoundOutputTypes __stdcall FSOUND_GetOutput(void);
+extern DELPHI_PACKAGE void * __stdcall FSOUND_GetOutputHandle(void);
+extern DELPHI_PACKAGE int __stdcall FSOUND_GetDriver(void);
+extern DELPHI_PACKAGE Fmod::Types::TFSoundMixerTypes __stdcall FSOUND_GetMixer(void);
+extern DELPHI_PACKAGE int __stdcall FSOUND_GetNumDrivers(void);
+extern DELPHI_PACKAGE char * __stdcall FSOUND_GetDriverName(int Id);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_GetDriverCaps(int Id, unsigned &Caps);
+extern DELPHI_PACKAGE int __stdcall FSOUND_GetOutputRate(void);
+extern DELPHI_PACKAGE int __stdcall FSOUND_GetMaxChannels(void);
+extern DELPHI_PACKAGE int __stdcall FSOUND_GetMaxSamples(void);
+extern DELPHI_PACKAGE int __stdcall FSOUND_GetSFXMasterVolume(void);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_GetNumHWChannels(int &num2d, int &num3d, int &total);
+extern DELPHI_PACKAGE int __stdcall FSOUND_GetChannelsPlaying(void);
+extern DELPHI_PACKAGE float __stdcall FSOUND_GetCPUUsage(void);
+extern DELPHI_PACKAGE void __stdcall FSOUND_GetMemoryStats(unsigned &CurrentAlloced, unsigned &MaxAlloced);
+extern DELPHI_PACKAGE Fmod::Types::PFSoundSample __stdcall FSOUND_Sample_Load(int Index, const char * NameOrData, unsigned Mode, int Offset, int Length);
+extern DELPHI_PACKAGE Fmod::Types::PFSoundSample __stdcall FSOUND_Sample_Alloc(int Index, int Length, unsigned Mode, int DefFreq, int DefVol, int DefPan, int DefPri);
+extern DELPHI_PACKAGE void __stdcall FSOUND_Sample_Free(Fmod::Types::PFSoundSample Sptr);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Sample_Upload(Fmod::Types::PFSoundSample Sptr, void * SrcData, unsigned Mode);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Sample_Lock(Fmod::Types::PFSoundSample Sptr, int Offset, int Length, void * &Ptr1, void * &Ptr2, unsigned &Len1, unsigned &Len2);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Sample_Unlock(Fmod::Types::PFSoundSample Sptr, void * Ptr1, void * Ptr2, unsigned Len1, unsigned Len2);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Sample_SetMode(Fmod::Types::PFSoundSample Sptr, unsigned Mode);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Sample_SetLoopPoints(Fmod::Types::PFSoundSample Sptr, int LoopStart, int LoopEnd);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Sample_SetDefaults(Fmod::Types::PFSoundSample Sptr, int DefFreq, int DefVol, int DefPan, int DefPri);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Sample_SetDefaultsEx(Fmod::Types::PFSoundSample Sptr, int DefFreq, int DefVol, int DefPan, int DefPri, int VarFreq, int VarVol, int VarPan);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Sample_SetMinMaxDistance(Fmod::Types::PFSoundSample Sptr, float Min, float Max);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Sample_SetMaxPlaybacks(Fmod::Types::PFSoundSample Sptr, int Max);
+extern DELPHI_PACKAGE Fmod::Types::PFSoundSample __stdcall FSOUND_Sample_Get(int SampNo);
+extern DELPHI_PACKAGE char * __stdcall FSOUND_Sample_GetName(Fmod::Types::PFSoundSample Sptr);
+extern DELPHI_PACKAGE unsigned __stdcall FSOUND_Sample_GetLength(Fmod::Types::PFSoundSample Sptr);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Sample_GetLoopPoints(Fmod::Types::PFSoundSample Sptr, int &LoopStart, int &LoopEnd);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Sample_GetDefaults(Fmod::Types::PFSoundSample Sptr, int &DefFreq, int &DefVol, int &DefPan, int &DefPri);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Sample_GetDefaultsEx(Fmod::Types::PFSoundSample Sptr, int &DefFreq, int &DefVol, int &DefPan, int &DefPri, int &VarFreq, int &VarVol, int &VarPan);
+extern DELPHI_PACKAGE unsigned __stdcall FSOUND_Sample_GetMode(Fmod::Types::PFSoundSample Sptr);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Sample_GetMinMaxDistance(Fmod::Types::PFSoundSample Sptr, float &Min, float &Max);
+extern DELPHI_PACKAGE int __stdcall FSOUND_PlaySound(int Channel, Fmod::Types::PFSoundSample Sptr);
+extern DELPHI_PACKAGE int __stdcall FSOUND_PlaySoundEx(int Channel, Fmod::Types::PFSoundSample Sptr, Fmod::Types::PFSoundDSPUnit Dsp, System::ByteBool StartPaused);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_StopSound(int Channel);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetFrequency(int Channel, int Freq);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetVolume(int Channel, int Vol);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetVolumeAbsolute(int Channel, int Vol);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetPan(int Channel, int Pan);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetSurround(int Channel, System::ByteBool Surround);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetMute(int Channel, System::ByteBool Mute);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetPriority(int Channel, int Priority);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetReserved(int Channel, System::ByteBool Reserved);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetPaused(int Channel, System::ByteBool Paused);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetLoopMode(int Channel, unsigned LoopMode);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_SetCurrentPosition(int Channel, unsigned Offset);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_3D_SetAttributes(int Channel, Fmod::Types::PFSoundVector Pos, Fmod::Types::PFSoundVector Vel);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_3D_SetMinMaxDistance(int Channel, float Min, float Max);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_IsPlaying(int Channel);
+extern DELPHI_PACKAGE int __stdcall FSOUND_GetFrequency(int Channel);
+extern DELPHI_PACKAGE int __stdcall FSOUND_GetVolume(int Channel);
+extern DELPHI_PACKAGE int __stdcall FSOUND_GetAmplitude(int Channel);
+extern DELPHI_PACKAGE int __stdcall FSOUND_GetPan(int Channel);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_GetSurround(int Channel);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_GetMute(int Channel);
+extern DELPHI_PACKAGE int __stdcall FSOUND_GetPriority(int Channel);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_GetReserved(int Channel);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_GetPaused(int Channel);
+extern DELPHI_PACKAGE unsigned __stdcall FSOUND_GetLoopMode(int Channel);
+extern DELPHI_PACKAGE unsigned __stdcall FSOUND_GetCurrentPosition(int Channel);
+extern DELPHI_PACKAGE Fmod::Types::PFSoundSample __stdcall FSOUND_GetCurrentSample(int Channel);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_GetCurrentLevels(int Channel, Winapi::Windows::PSingle l, Winapi::Windows::PSingle r);
+extern DELPHI_PACKAGE int __stdcall FSOUND_GetNumSubChannels(int Channel);
+extern DELPHI_PACKAGE int __stdcall FSOUND_GetSubChannel(int Channel, int SubChannel);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_3D_GetAttributes(int Channel, Fmod::Types::PFSoundVector Pos, Fmod::Types::PFSoundVector Vel);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_3D_GetMinMaxDistance(int Channel, float &Min, float &Max);
+extern DELPHI_PACKAGE void __stdcall FSOUND_3D_Listener_SetCurrent(int current);
+extern DELPHI_PACKAGE void __stdcall FSOUND_3D_Listener_SetAttributes(Fmod::Types::PFSoundVector Pos, Fmod::Types::PFSoundVector Vel, float fx, float fy, float fz, float tx, float ty, float tz);
+extern DELPHI_PACKAGE void __stdcall FSOUND_3D_Listener_GetAttributes(Fmod::Types::PFSoundVector Pos, Fmod::Types::PFSoundVector Vel, Winapi::Windows::PSingle fx, Winapi::Windows::PSingle fy, Winapi::Windows::PSingle fz, Winapi::Windows::PSingle tx, Winapi::Windows::PSingle ty, Winapi::Windows::PSingle tz);
+extern DELPHI_PACKAGE void __stdcall FSOUND_3D_SetDopplerFactor(float Scale);
+extern DELPHI_PACKAGE void __stdcall FSOUND_3D_SetDistanceFactor(float Scale);
+extern DELPHI_PACKAGE void __stdcall FSOUND_3D_SetRolloffFactor(float Scale);
+extern DELPHI_PACKAGE int __stdcall FSOUND_FX_Enable(int Channel, Fmod::Types::TFSoundFXModes Fx);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_FX_Disable(int Channel);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_FX_SetChorus(int FXId, float WetDryMix, float Depth, float Feedback, float Frequency, int Waveform, float Delay, int Phase);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_FX_SetCompressor(int FXId, float Gain, float Attack, float Release, float Threshold, float Ratio, float Predelay);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_FX_SetDistortion(int FXId, float Gain, float Edge, float PostEQCenterFrequency, float PostEQBandwidth, float PreLowpassCutoff);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_FX_SetEcho(int FXId, float WetDryMix, float Feedback, float LeftDelay, float RightDelay, int PanDelay);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_FX_SetFlanger(int FXId, float WetDryMix, float Depth, float Feedback, float Frequency, int Waveform, float Delay, int Phase);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_FX_SetGargle(int FXId, int RateHz, int WaveShape);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_FX_SetI3DL2Reverb(int FXId, int Room, int RoomHF, float RoomRolloffFactor, float DecayTime, float DecayHFRatio, int Reflections, float ReflectionsDelay, int Reverb, float ReverbDelay, float Diffusion, float Density, float HFReference);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_FX_SetParamEQ(int FXId, float Center, float Bandwidth, float Gain);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_FX_SetWavesReverb(int FXId, float InGain, float ReverbMix, float ReverbTime, float HighFreqRTRatio);
+extern DELPHI_PACKAGE Fmod::Types::PFSoundStream __stdcall FSOUND_Stream_Open(const char * name_or_data, unsigned Mode, int Offset, int Length);
+extern DELPHI_PACKAGE Fmod::Types::PFSoundStream __stdcall FSOUND_Stream_Create(Fmod::Types::TFSoundStreamCallback Callback, int Length, unsigned Mode, int SampleRate, int UserData);
+extern DELPHI_PACKAGE int __stdcall FSOUND_Stream_Play(int Channel, Fmod::Types::PFSoundStream Stream);
+extern DELPHI_PACKAGE int __stdcall FSOUND_Stream_PlayEx(int Channel, Fmod::Types::PFSoundStream Stream, Fmod::Types::PFSoundDSPUnit Dsp, System::ByteBool StartPaused);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_Stop(Fmod::Types::PFSoundStream Stream);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_Close(Fmod::Types::PFSoundStream Stream);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_SetEndCallback(Fmod::Types::PFSoundStream Stream, Fmod::Types::TFSoundStreamCallback Callback, int UserData);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_SetSyncCallback(Fmod::Types::PFSoundStream Stream, Fmod::Types::TFSoundStreamCallback Callback, int UserData);
+extern DELPHI_PACKAGE Fmod::Types::PFSoundSample __stdcall FSOUND_Stream_GetSample(Fmod::Types::PFSoundStream Stream);
+extern DELPHI_PACKAGE Fmod::Types::PFSoundDSPUnit __stdcall FSOUND_Stream_CreateDSP(Fmod::Types::PFSoundStream Stream, Fmod::Types::TFSoundDSPCallback Callback, int Priority, int Param);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_SetBufferSize(int Ms);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_SetPosition(Fmod::Types::PFSoundStream Stream, unsigned Position);
+extern DELPHI_PACKAGE unsigned __stdcall FSOUND_Stream_GetPosition(Fmod::Types::PFSoundStream Stream);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_SetTime(Fmod::Types::PFSoundStream Stream, int Ms);
+extern DELPHI_PACKAGE int __stdcall FSOUND_Stream_GetTime(Fmod::Types::PFSoundStream Stream);
+extern DELPHI_PACKAGE int __stdcall FSOUND_Stream_GetLength(Fmod::Types::PFSoundStream Stream);
+extern DELPHI_PACKAGE int __stdcall FSOUND_Stream_GetLengthMs(Fmod::Types::PFSoundStream Stream);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_SetMode(Fmod::Types::PFSoundStream Stream, int mode);
+extern DELPHI_PACKAGE int __stdcall FSOUND_Stream_GetMode(Fmod::Types::PFSoundStream Stream);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_SetLoopPoints(Fmod::Types::PFSoundStream Stream, int LoopStartPCM, int LoopEndPCM);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_SetLoopCount(Fmod::Types::PFSoundStream Stream, int Count);
+extern DELPHI_PACKAGE Fmod::Types::PFSyncPoint __stdcall FSOUND_Stream_AddSyncPoint(Fmod::Types::PFSoundStream Stream, unsigned PCMOffset, char * Name);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_DeleteSyncPoint(Fmod::Types::PFSyncPoint Point);
+extern DELPHI_PACKAGE int __stdcall FSOUND_Stream_GetNumSyncPoints(Fmod::Types::PFSoundStream Stream);
+extern DELPHI_PACKAGE Fmod::Types::PFSyncPoint __stdcall FSOUND_Stream_GetSyncPoint(Fmod::Types::PFSoundStream Stream, int Index);
+extern DELPHI_PACKAGE char * __stdcall FSOUND_Stream_GetSyncPointInfo(Fmod::Types::PFSyncPoint Point, unsigned &PCMOffset);
+extern DELPHI_PACKAGE int __stdcall FSOUND_Stream_GetOpenState(Fmod::Types::PFSoundStream Stream);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_SetSubStream(Fmod::Types::PFSoundStream Stream, int Index);
+extern DELPHI_PACKAGE int __stdcall FSOUND_Stream_GetNumSubStreams(Fmod::Types::PFSoundStream Stream);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_SetSubStreamSentence(Fmod::Types::PFSoundStream Stream, unsigned &SentenceList, int NumItems);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_GetNumTagFields(Fmod::Types::PFSoundStream Stream, int &Num);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_GetTagField(Fmod::Types::PFSoundStream Stream, int Num, Fmod::Types::TFSoundTagFieldType &TagType, char * &Name, void * &Value, int &Length);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_FindTagField(Fmod::Types::PFSoundStream Stream, Fmod::Types::TFSoundTagFieldType TagType, char * Name, void * &Value, int &Length);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_Net_SetProxy(char * Proxy);
+extern DELPHI_PACKAGE char * __stdcall FSOUND_Stream_Net_GetLastServerStatus(void);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_Net_SetBufferProperties(int BufferSize, int PreBuffer_Percent, int ReBuffer_Percent);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_Net_GetBufferProperties(int &Buffersize, int &PreBuffer_Percent, int &ReBuffer_Percent);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_Net_SetMetadataCallback(Fmod::Types::PFSoundStream Stream, Fmod::Types::TFMetaDataCallback Callback, int UserData);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Stream_Net_GetStatus(Fmod::Types::PFSoundStream Stream, Fmod::Types::TFSoundStreamNetStatus &Status, int &BufferPercentUsed, int &BitRate, unsigned &Flags);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_CD_Play(System::Byte Drive, int Track);
+extern DELPHI_PACKAGE void __stdcall FSOUND_CD_SetPlayMode(System::Byte Drive, int Mode);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_CD_Stop(System::Byte Drive);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_CD_SetPaused(System::Byte Drive, System::ByteBool Paused);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_CD_SetVolume(System::Byte Drive, int Volume);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_CD_SetTrackTime(System::Byte Drive, int ms);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_CD_OpenTray(System::Byte Drive, System::Byte Open);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_CD_GetPaused(System::Byte Drive);
+extern DELPHI_PACKAGE int __stdcall FSOUND_CD_GetTrack(System::Byte Drive);
+extern DELPHI_PACKAGE int __stdcall FSOUND_CD_GetNumTracks(System::Byte Drive);
+extern DELPHI_PACKAGE int __stdcall FSOUND_CD_GetVolume(System::Byte Drive);
+extern DELPHI_PACKAGE int __stdcall FSOUND_CD_GetTrackLength(System::Byte Drive, int Track);
+extern DELPHI_PACKAGE int __stdcall FSOUND_CD_GetTrackTime(System::Byte Drive);
+extern DELPHI_PACKAGE Fmod::Types::PFSoundDSPUnit __stdcall FSOUND_DSP_Create(Fmod::Types::TFSoundDSPCallback Callback, int Priority, int Param);
+extern DELPHI_PACKAGE void __stdcall FSOUND_DSP_Free(Fmod::Types::PFSoundDSPUnit DSPUnit);
+extern DELPHI_PACKAGE void __stdcall FSOUND_DSP_SetPriority(Fmod::Types::PFSoundDSPUnit DSPUnit, int Priority);
+extern DELPHI_PACKAGE int __stdcall FSOUND_DSP_GetPriority(Fmod::Types::PFSoundDSPUnit DSPUnit);
+extern DELPHI_PACKAGE void __stdcall FSOUND_DSP_SetActive(Fmod::Types::PFSoundDSPUnit DSPUnit, System::ByteBool Active);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_DSP_GetActive(Fmod::Types::PFSoundDSPUnit DSPUnit);
+extern DELPHI_PACKAGE Fmod::Types::PFSoundDSPUnit __stdcall FSOUND_DSP_GetClearUnit(void);
+extern DELPHI_PACKAGE Fmod::Types::PFSoundDSPUnit __stdcall FSOUND_DSP_GetSFXUnit(void);
+extern DELPHI_PACKAGE Fmod::Types::PFSoundDSPUnit __stdcall FSOUND_DSP_GetMusicUnit(void);
+extern DELPHI_PACKAGE Fmod::Types::PFSoundDSPUnit __stdcall FSOUND_DSP_GetClipAndCopyUnit(void);
+extern DELPHI_PACKAGE Fmod::Types::PFSoundDSPUnit __stdcall FSOUND_DSP_GetFFTUnit(void);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_DSP_MixBuffers(void * DestBuffer, void * SrcBuffer, int Len, int Freq, int Vol, int Pan, unsigned Mode);
+extern DELPHI_PACKAGE void __stdcall FSOUND_DSP_ClearMixBuffer(void);
+extern DELPHI_PACKAGE int __stdcall FSOUND_DSP_GetBufferLength(void);
+extern DELPHI_PACKAGE int __stdcall FSOUND_DSP_GetBufferLengthTotal(void);
+extern DELPHI_PACKAGE Winapi::Windows::PSingle __stdcall FSOUND_DSP_GetSpectrum(void);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Reverb_SetProperties(Fmod::Types::TFSoundReverbProperties &Prop);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Reverb_GetProperties(Fmod::Types::TFSoundReverbProperties &Prop);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Reverb_SetChannelProperties(int Channel, Fmod::Types::TFSoundReverbChannelProperties &Prop);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Reverb_GetChannelProperties(int Channel, Fmod::Types::TFSoundReverbChannelProperties &Prop);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Record_SetDriver(int OutputType);
+extern DELPHI_PACKAGE int __stdcall FSOUND_Record_GetNumDrivers(void);
+extern DELPHI_PACKAGE char * __stdcall FSOUND_Record_GetDriverName(int Id);
+extern DELPHI_PACKAGE int __stdcall FSOUND_Record_GetDriver(void);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Record_StartSample(Fmod::Types::PFSoundSample Sptr, System::ByteBool Loop);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FSOUND_Record_Stop(void);
+extern DELPHI_PACKAGE int __stdcall FSOUND_Record_GetPosition(void);
+extern DELPHI_PACKAGE void __stdcall FSOUND_File_SetCallbacks(Fmod::Types::TFSoundOpenCallback OpenCallback, Fmod::Types::TFSoundCloseCallback CloseCallback, Fmod::Types::TFSoundReadCallback ReadCallback, Fmod::Types::TFSoundSeekCallback SeekCallback, Fmod::Types::TFSoundTellCallback TellCallback);
+extern DELPHI_PACKAGE Fmod::Types::PFMusicModule __stdcall FMUSIC_LoadSong(const char * Name);
+extern DELPHI_PACKAGE Fmod::Types::PFMusicModule __stdcall FMUSIC_LoadSongEx(void * Name_Or_Data, int Offset, int Length, unsigned Mode, int &SampleList, int SampleListNum);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetOpenState(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_FreeSong(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_PlaySong(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_StopSong(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE void __stdcall FMUSIC_StopAllSongs(void);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_SetZxxCallback(Fmod::Types::PFMusicModule Module, Fmod::Types::TFMusicCallback Callback);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_SetRowCallback(Fmod::Types::PFMusicModule Module, Fmod::Types::TFMusicCallback Callback, int RowStep);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_SetOrderCallback(Fmod::Types::PFMusicModule Module, Fmod::Types::TFMusicCallback Callback, int OrderStep);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_SetInstCallback(Fmod::Types::PFMusicModule Module, Fmod::Types::TFMusicCallback Callback, int Instrument);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_SetSample(Fmod::Types::PFMusicModule Module, int SampNo, Fmod::Types::PFSoundSample Sptr);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_SetUserData(Fmod::Types::PFMusicModule Module, int userdata);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_OptimizeChannels(Fmod::Types::PFMusicModule Module, int MaxChannels, int MinVolume);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_SetReverb(System::ByteBool Reverb);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_SetLooping(Fmod::Types::PFMusicModule Module, System::ByteBool Looping);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_SetOrder(Fmod::Types::PFMusicModule Module, int Order);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_SetPaused(Fmod::Types::PFMusicModule Module, System::ByteBool Pause);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_SetMasterVolume(Fmod::Types::PFMusicModule Module, int Volume);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_SetMasterSpeed(Fmod::Types::PFMusicModule Module, float speed);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_SetPanSeperation(Fmod::Types::PFMusicModule Module, float PanSep);
+extern DELPHI_PACKAGE char * __stdcall FMUSIC_GetName(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE Fmod::Types::TFMusicTypes __stdcall FMUSIC_GetType(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetNumOrders(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetNumPatterns(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetNumInstruments(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetNumSamples(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetNumChannels(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE Fmod::Types::PFSoundSample __stdcall FMUSIC_GetSample(Fmod::Types::PFMusicModule Module, int SampNo);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetPatternLength(Fmod::Types::PFMusicModule Module, int OrderNo);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_IsFinished(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_IsPlaying(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetMasterVolume(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetGlobalVolume(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetOrder(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetPattern(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetSpeed(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetBPM(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetRow(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE System::ByteBool __stdcall FMUSIC_GetPaused(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetTime(Fmod::Types::PFMusicModule Module);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetRealChannel(Fmod::Types::PFMusicModule Module, int modchannel);
+extern DELPHI_PACKAGE int __stdcall FMUSIC_GetUserData(Fmod::Types::PFMusicModule Module);
+}	/* namespace Import */
+}	/* namespace Fmod */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMOD_IMPORT)
+using namespace Fmod::Import;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMOD)
+using namespace Fmod;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FMOD_ImportHPP

+ 44 - 0
include/Win32/FMOD.errors.hpp

@@ -0,0 +1,44 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FMOD.errors.pas' rev: 36.00 (Windows)
+
+#ifndef FMOD_errorsHPP
+#define FMOD_errorsHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <FMOD.types.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Fmod
+{
+namespace Errors
+{
+//-- forward type declarations -----------------------------------------------
+//-- type declarations -------------------------------------------------------
+//-- var, const, procedure ---------------------------------------------------
+extern DELPHI_PACKAGE System::WideChar * __fastcall FMOD_ErrorString(Fmod::Types::TFModErrors ErrorCode);
+}	/* namespace Errors */
+}	/* namespace Fmod */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMOD_ERRORS)
+using namespace Fmod::Errors;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMOD)
+using namespace Fmod;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FMOD_errorsHPP

+ 70 - 0
include/Win32/FMOD.presets.hpp

@@ -0,0 +1,70 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FMOD.presets.pas' rev: 36.00 (Windows)
+
+#ifndef FMOD_presetsHPP
+#define FMOD_presetsHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <FMOD.types.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Fmod
+{
+namespace Presets
+{
+//-- forward type declarations -----------------------------------------------
+//-- type declarations -------------------------------------------------------
+//-- var, const, procedure ---------------------------------------------------
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_OFF;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_GENERIC;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_PADDEDCELL;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_ROOM;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_BATHROOM;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_LIVINGROOM;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_STONEROOM;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_AUDITORIUM;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_CONCERTHALL;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_CAVE;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_ARENA;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_HANGAR;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_CARPETTEDHALLWAY;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_HALLWAY;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_STONECORRIDOR;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_ALLEY;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_FOREST;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_CITY;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_MOUNTAINS;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_QUARRY;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_PLAIN;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_PARKINGLOT;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_SEWERPIPE;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_UNDERWATER;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_DRUGGED;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_DIZZY;
+extern DELPHI_PACKAGE Fmod::Types::TFSoundReverbProperties FSOUND_PRESET_PSYCHOTIC;
+}	/* namespace Presets */
+}	/* namespace Fmod */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMOD_PRESETS)
+using namespace Fmod::Presets;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMOD)
+using namespace Fmod;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FMOD_presetsHPP

+ 264 - 0
include/Win32/FMOD.types.hpp

@@ -0,0 +1,264 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FMOD.types.pas' rev: 36.00 (Windows)
+
+#ifndef FMOD_typesHPP
+#define FMOD_typesHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Fmod
+{
+namespace Types
+{
+//-- forward type declarations -----------------------------------------------
+struct TFSoundVector;
+struct TFSoundReverbProperties;
+struct TFSoundReverbChannelProperties;
+struct TFSoundTOCTag;
+//-- type declarations -------------------------------------------------------
+typedef void * PFSoundSample;
+
+typedef void * PFSoundStream;
+
+typedef void * PFSoundDSPUnit;
+
+typedef void * PFMusicModule;
+
+typedef void * PFSyncPoint;
+
+typedef TFSoundVector *PFSoundVector;
+
+struct DECLSPEC_DRECORD TFSoundVector
+{
+public:
+	float x;
+	float y;
+	float z;
+};
+
+
+typedef System::ByteBool __stdcall (*TFSoundStreamCallback)(PFSoundStream Stream, void * Buff, int Length, int Param);
+
+typedef void * __stdcall (*TFSoundDSPCallback)(void * OriginalBuffer, void * NewBuffer, int Length, int Param);
+
+typedef void __stdcall (*TFMusicCallback)(PFMusicModule Module, System::Byte Param);
+
+typedef unsigned __stdcall (*TFSoundOpenCallback)(System::WideChar * Name);
+
+typedef void __stdcall (*TFSoundCloseCallback)(unsigned Handle);
+
+typedef unsigned __stdcall (*TFSoundReadCallback)(void * Buffer, unsigned Size, unsigned Handle);
+
+typedef void __stdcall (*TFSoundSeekCallback)(unsigned Handle, unsigned Pos, System::Byte Mode);
+
+typedef unsigned __stdcall (*TFSoundTellCallback)(unsigned Handle);
+
+typedef void * __stdcall (*TFSoundAllocCallback)(unsigned Size);
+
+typedef void * __stdcall (*TFSoundReallocCallback)(void * Ptr, unsigned Size);
+
+typedef void __stdcall (*TFSoundFreeCallback)(void * Ptr);
+
+typedef System::ByteBool __stdcall (*TFMetaDataCallback)(System::WideChar * Name, System::WideChar * Value, int userdata);
+
+enum DECLSPEC_DENUM TFModErrors : unsigned int { FMOD_ERR_NONE, FMOD_ERR_BUSY, FMOD_ERR_UNINITIALIZED, FMOD_ERR_INIT, FMOD_ERR_ALLOCATED, FMOD_ERR_PLAY, FMOD_ERR_OUTPUT_FORMAT, FMOD_ERR_COOPERATIVELEVEL, FMOD_ERR_CREATEBUFFER, FMOD_ERR_FILE_NOTFOUND, FMOD_ERR_FILE_FORMAT, FMOD_ERR_FILE_BAD, FMOD_ERR_MEMORY, FMOD_ERR_VERSION, FMOD_ERR_INVALID_PARAM, FMOD_ERR_NO_EAX, FMOD_ERR_CHANNEL_ALLOC, FMOD_ERR_RECORD, FMOD_ERR_MEDIAPLAYER, FMOD_ERR_CDDEVICE };
+
+enum DECLSPEC_DENUM TFSoundOutputTypes : unsigned int { FSOUND_OUTPUT_NOSOUND, FSOUND_OUTPUT_WINMM, FSOUND_OUTPUT_DSOUND, FSOUND_OUTPUT_A3D, FSOUND_OUTPUT_OSS, FSOUND_OUTPUT_ESD, FSOUND_OUTPUT_ALSA, FSOUND_OUTPUT_ASIO, FSOUND_OUTPUT_XBOX, FSOUND_OUTPUT_PS2, FSOUND_OUTPUT_MAC, FSOUND_OUTPUT_GC, FSOUND_OUTPUT_PSP, FSOUND_OUTPUT_NOSOUND_NONREALTIME };
+
+enum DECLSPEC_DENUM TFSoundMixerTypes : unsigned int { FSOUND_MIXER_AUTODETECT, FSOUND_MIXER_BLENDMODE, FSOUND_MIXER_MMXP5, FSOUND_MIXER_MMXP6, FSOUND_MIXER_QUALITY_AUTODETECT, FSOUND_MIXER_QUALITY_FPU, FSOUND_MIXER_QUALITY_MMXP5, FSOUND_MIXER_QUALITY_MMXP6, FSOUND_MIXER_MONO, FSOUND_MIXER_QUALITY_MONO, FSOUND_MIXER_MAX };
+
+enum DECLSPEC_DENUM TFMusicTypes : unsigned int { FMUSIC_TYPE_NONE, FMUSIC_TYPE_MOD, FMUSIC_TYPE_S3M, FMUSIC_TYPE_XM, FMUSIC_TYPE_IT, FMUSIC_TYPE_MIDI, FMUSIC_TYPE_FSB };
+
+struct DECLSPEC_DRECORD TFSoundReverbProperties
+{
+public:
+	unsigned Environment;
+	float EnvSize;
+	float EnvDiffusion;
+	int Room;
+	int RoomHF;
+	int RoomLF;
+	float DecayTime;
+	float DecayHFRatio;
+	float DecayLFRatio;
+	int Reflections;
+	float ReflectionsDelay;
+	System::StaticArray<float, 3> ReflectionsPan;
+	int Reverb;
+	float ReverbDelay;
+	System::StaticArray<float, 3> ReverbPan;
+	float EchoTime;
+	float EchoDepth;
+	float ModulationTime;
+	float ModulationDepth;
+	float AirAbsorptionHF;
+	float HFReference;
+	float LFReference;
+	float RoomRolloffFactor;
+	float Diffusion;
+	float Density;
+	unsigned Flags;
+};
+
+
+struct DECLSPEC_DRECORD TFSoundReverbChannelProperties
+{
+public:
+	int Direct;
+	int DirectHF;
+	int Room;
+	int RoomHF;
+	int Obstruction;
+	float ObstructionLFRatio;
+	int Occlusion;
+	float OcclusionLFRatio;
+	float OcclusionRoomRatio;
+	float OcclusionDirectRatio;
+	int Exclusion;
+	float ExclusionLFRatio;
+	int OutsideVolumeHF;
+	float DopplerFactor;
+	float RolloffFactor;
+	float RoomRolloffFactor;
+	float AirAbsorptionFactor;
+	int Flags;
+};
+
+
+enum DECLSPEC_DENUM TFSoundFXModes : unsigned int { FSOUND_FX_CHORUS, FSOUND_FX_COMPRESSOR, FSOUND_FX_DISTORTION, FSOUND_FX_ECHO, FSOUND_FX_FLANGER, FSOUND_FX_GARGLE, FSOUND_FX_I3DL2REVERB, FSOUND_FX_PARAMEQ, FSOUND_FX_WAVES_REVERB, FSOUND_FX_MAX };
+
+enum DECLSPEC_DENUM TFSoundSpeakerModes : unsigned int { FSOUND_SPEAKERMODE_DOLBYDIGITAL, FSOUND_SPEAKERMODE_HEADPHONES, FSOUND_SPEAKERMODE_MONO, FSOUND_SPEAKERMODE_QUAD, FSOUND_SPEAKERMODE_STEREO, FSOUND_SPEAKERMODE_SURROUND, FSOUND_SPEAKERMODE_DTS };
+
+typedef TFSoundSpeakerModes FSOUND_SPEAKERMODES;
+
+enum DECLSPEC_DENUM TFSoundStreamNetStatus : unsigned int { FSOUND_STREAM_NET_NOTCONNECTED, FSOUND_STREAM_NET_CONNECTING, FSOUND_STREAM_NET_BUFFERING, FSOUND_STREAM_NET_READY, FSOUND_STREAM_NET_ERROR };
+
+enum DECLSPEC_DENUM TFSoundTagFieldType : unsigned int { FSOUND_TAGFIELD_VORBISCOMMENT, FSOUND_TAGFIELD_ID3V1, FSOUND_TAGFIELD_ID3V2, FSOUND_TAGFIELD_SHOUTCAST, FSOUND_TAGFIELD_ICECAST, FSOUND_TAGFIELD_ASF };
+
+struct DECLSPEC_DRECORD TFSoundTOCTag
+{
+public:
+	System::StaticArray<char, 4> Name;
+	int NumTracks;
+	System::StaticArray<int, 100> Min;
+	System::StaticArray<int, 100> Sec;
+	System::StaticArray<int, 100> Frame;
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+extern DELPHI_PACKAGE float FMOD_VERSION;
+static _DELPHI_CONST System::Int8 FSOUND_DSP_DEFAULTPRIORITY_CLEARUNIT = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 FSOUND_DSP_DEFAULTPRIORITY_SFXUNIT = System::Int8(0x64);
+static _DELPHI_CONST System::Byte FSOUND_DSP_DEFAULTPRIORITY_MUSICUNIT = System::Byte(0xc8);
+static _DELPHI_CONST System::Word FSOUND_DSP_DEFAULTPRIORITY_USER = System::Word(0x12c);
+static _DELPHI_CONST System::Word FSOUND_DSP_DEFAULTPRIORITY_FFTUNIT = System::Word(0x384);
+static _DELPHI_CONST System::Word FSOUND_DSP_DEFAULTPRIORITY_CLIPANDCOPYUNIT = System::Word(0x3e8);
+static _DELPHI_CONST System::Int8 FSOUND_CAPS_HARDWARE = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 FSOUND_CAPS_EAX2 = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 FSOUND_CAPS_EAX3 = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 FSOUND_LOOP_OFF = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 FSOUND_LOOP_NORMAL = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 FSOUND_LOOP_BIDI = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 FSOUND_8BITS = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 FSOUND_16BITS = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 FSOUND_MONO = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 FSOUND_STEREO = System::Int8(0x40);
+static _DELPHI_CONST System::Byte FSOUND_UNSIGNED = System::Byte(0x80);
+static _DELPHI_CONST System::Word FSOUND_SIGNED = System::Word(0x100);
+static _DELPHI_CONST System::Word FSOUND_DELTA = System::Word(0x200);
+static _DELPHI_CONST System::Word FSOUND_IT214 = System::Word(0x400);
+static _DELPHI_CONST System::Word FSOUND_IT215 = System::Word(0x800);
+static _DELPHI_CONST System::Word FSOUND_HW3D = System::Word(0x1000);
+static _DELPHI_CONST System::Word FSOUND_2D = System::Word(0x2000);
+static _DELPHI_CONST System::Word FSOUND_STREAMABLE = System::Word(0x4000);
+static _DELPHI_CONST System::Word FSOUND_LOADMEMORY = System::Word(0x8000);
+static _DELPHI_CONST int FSOUND_LOADRAW = int(0x10000);
+static _DELPHI_CONST int FSOUND_MPEGACCURATE = int(0x20000);
+static _DELPHI_CONST int FSOUND_FORCEMONO = int(0x40000);
+static _DELPHI_CONST int FSOUND_HW2D = int(0x80000);
+static _DELPHI_CONST int FSOUND_ENABLEFX = int(0x100000);
+static _DELPHI_CONST int FSOUND_MPEGHALFRATE = int(0x200000);
+static _DELPHI_CONST int FSOUND_XADPCM = int(0x400000);
+static _DELPHI_CONST int FSOUND_VAG = int(0x800000);
+static _DELPHI_CONST int FSOUND_NONBLOCKING = int(0x1000000);
+static _DELPHI_CONST int FSOUND_GCADPCM = int(0x2000000);
+static _DELPHI_CONST int FSOUND_MULTICHANNEL = int(0x4000000);
+static _DELPHI_CONST int FSOUND_USECORE0 = int(0x8000000);
+static _DELPHI_CONST int FSOUND_USECORE1 = int(0x10000000);
+static _DELPHI_CONST int FSOUND_LOADMEMORYIOP = int(0x20000000);
+static _DELPHI_CONST System::Word FSOUND_NORMAL = System::Word(0x130);
+static _DELPHI_CONST System::Int8 FSOUND_CD_PLAYCONTINUOUS = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 FSOUND_CD_PLAYONCE = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 FSOUND_CD_PLAYLOOPED = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 FSOUND_CD_PLAYRANDOM = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 FSOUND_FREE = System::Int8(-1);
+static _DELPHI_CONST System::Int8 FSOUND_UNMANAGED = System::Int8(-2);
+static _DELPHI_CONST System::Int8 FSOUND_ALL = System::Int8(-3);
+static _DELPHI_CONST System::Int8 FSOUND_STEREOPAN = System::Int8(-1);
+static _DELPHI_CONST short FSOUND_SYSTEMCHANNEL = short(-1000);
+static _DELPHI_CONST short FSOUND_SYSTEMSAMPLE = short(-1000);
+static _DELPHI_CONST System::Int8 FSOUND_REVERBFLAGS_DECAYTIMESCALE = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 FSOUND_REVERBFLAGS_REFLECTIONSSCALE = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 FSOUND_REVERBFLAGS_REFLECTIONSDELAYSCALE = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 FSOUND_REVERBFLAGS_REVERBSCALE = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 FSOUND_REVERBFLAGS_REVERBDELAYSCALE = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 FSOUND_REVERBFLAGS_DECAYHFLIMIT = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 FSOUND_REVERBFLAGS_ECHOTIMESCALE = System::Int8(0x40);
+static _DELPHI_CONST System::Byte FSOUND_REVERBFLAGS_MODULATIONTIMESCALE = System::Byte(0x80);
+static _DELPHI_CONST System::Word FSOUND_REVERB_FLAGS_CORE0 = System::Word(0x100);
+static _DELPHI_CONST System::Word FSOUND_REVERB_FLAGS_CORE1 = System::Word(0x200);
+static _DELPHI_CONST System::Word FSOUND_REVERBFLAGS_DEFAULT = System::Word(0x33f);
+static _DELPHI_CONST System::Int8 FSOUND_REVERB_CHANNELFLAGS_DIRECTHFAUTO = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 FSOUND_REVERB_CHANNELFLAGS_ROOMAUTO = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 FSOUND_REVERB_CHANNELFLAGS_ROOMHFAUTO = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 FSOUND_REVERB_CHANNELFLAGS_DEFAULT = System::Int8(0x7);
+static _DELPHI_CONST System::Int8 FSOUND_INIT_USEDEFAULTMIDISYNTH = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 FSOUND_INIT_GLOBALFOCUS = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 FSOUND_INIT_ENABLESYSTEMCHANNELFX = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 FSOUND_INIT_ACCURATEVULEVELS = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 FSOUND_INIT_PS2_DISABLECORE0REVERB = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 FSOUND_INIT_PS2_DISABLECORE1REVERB = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 FSOUND_INIT_PS2_SWAPDMACORES = System::Int8(0x40);
+static _DELPHI_CONST System::Byte FSOUND_INIT_DONTLATENCYADJUST = System::Byte(0x80);
+static _DELPHI_CONST System::Word FSOUND_INIT_GC_INITLIBS = System::Word(0x100);
+static _DELPHI_CONST System::Word FSOUND_INIT_STREAM_FROM_MAIN_THREAD = System::Word(0x200);
+static _DELPHI_CONST System::Word FSOUND_INIT_PS2_USEVOLUMERAMPING = System::Word(0x400);
+static _DELPHI_CONST System::Word FSOUND_INIT_DSOUND_DEFERRED = System::Word(0x800);
+static _DELPHI_CONST System::Word FSOUND_INIT_DSOUND_HRTF_LIGHT = System::Word(0x1000);
+static _DELPHI_CONST System::Word FSOUND_INIT_DSOUND_HRTF_FULL = System::Word(0x2000);
+static _DELPHI_CONST System::Word FSOUND_INIT_XBOX_REMOVEHEADROOM = System::Word(0x4000);
+static _DELPHI_CONST System::Word FSOUND_INIT_PSP_SILENCEONUNDERRUN = System::Word(0x8000);
+static _DELPHI_CONST System::Int8 FSOUND_PROTOCOL_SHOUTCAST = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 FSOUND_PROTOCOL_ICECAST = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 FSOUND_PROTOCOL_HTTP = System::Int8(0x4);
+static _DELPHI_CONST int FSOUND_FORMAT_MPEG = int(0x10000);
+static _DELPHI_CONST int FSOUND_FORMAT_OGGVORBIS = int(0x20000);
+}	/* namespace Types */
+}	/* namespace Fmod */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMOD_TYPES)
+using namespace Fmod::Types;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMOD)
+using namespace Fmod;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FMOD_typesHPP

+ 115 - 0
include/Win32/FRColorEditor.hpp

@@ -0,0 +1,115 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FRColorEditor.pas' rev: 36.00 (Windows)
+
+#ifndef FRColorEditorHPP
+#define FRColorEditorHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <System.Types.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.ComCtrls.hpp>
+#include <Vcl.ExtCtrls.hpp>
+#include <Vcl.Dialogs.hpp>
+#include <Vcl.Controls.hpp>
+#include <Vcl.Graphics.hpp>
+#include <Stage.VectorGeometry.hpp>
+#include <GLS.Color.hpp>
+#include <GLS.Texture.hpp>
+#include <Stage.VectorTypes.hpp>
+#include <System.UITypes.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Frcoloreditor
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TRColorEditor;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TRColorEditor : public Vcl::Forms::TFrame
+{
+	typedef Vcl::Forms::TFrame inherited;
+	
+	
+private:
+	enum DECLSPEC_DENUM _TRColorEditor__1 : unsigned char { None, Red, Green, Blue, Alpha };
+	
+	
+__published:
+	Vcl::Stdctrls::TLabel* Label1;
+	Vcl::Stdctrls::TLabel* Label2;
+	Vcl::Stdctrls::TLabel* Label3;
+	Vcl::Stdctrls::TLabel* Label4;
+	Vcl::Extctrls::TPanel* PAPreview;
+	Vcl::Dialogs::TColorDialog* ColorDialog;
+	Vcl::Extctrls::TPanel* Panel1;
+	Vcl::Extctrls::TPaintBox* ColorEditorPaintBox;
+	Vcl::Stdctrls::TEdit* RedEdit;
+	Vcl::Stdctrls::TEdit* GreenEdit;
+	Vcl::Stdctrls::TEdit* BlueEdit;
+	Vcl::Stdctrls::TEdit* AlphaEdit;
+	void __fastcall TBEChange(System::TObject* Sender);
+	void __fastcall PAPreviewDblClick(System::TObject* Sender);
+	void __fastcall ColorEditorPaintBoxPaint(System::TObject* Sender);
+	void __fastcall FrameResize(System::TObject* Sender);
+	void __fastcall ColorEditorPaintBoxMouseDown(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, int X, int Y);
+	void __fastcall ColorEditorPaintBoxMouseMove(System::TObject* Sender, System::Classes::TShiftState Shift, int X, int Y);
+	void __fastcall ColorEditorPaintBoxMouseUp(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, int X, int Y);
+	void __fastcall RedEditChange(System::TObject* Sender);
+	void __fastcall GreenEditChange(System::TObject* Sender);
+	void __fastcall BlueEditChange(System::TObject* Sender);
+	void __fastcall AlphaEditChange(System::TObject* Sender);
+	
+private:
+	System::Classes::TNotifyEvent FOnChange;
+	bool updating;
+	Vcl::Graphics::TBitmap* WorkBitmap;
+	int RedValue;
+	int GreenValue;
+	int BlueValue;
+	int AlphaVAlue;
+	_TRColorEditor__1 DraggingValue;
+	HIDESBASE void __fastcall SetColor(const Stage::Vectorgeometry::THomogeneousFltVector &val);
+	Stage::Vectorgeometry::THomogeneousFltVector __fastcall GetColor();
+	void __fastcall DrawContents();
+	void __fastcall DragColorSliderToPosition(int XPos);
+	void __fastcall ContentsChanged();
+	
+public:
+	__fastcall virtual TRColorEditor(System::Classes::TComponent* AOwner);
+	__fastcall virtual ~TRColorEditor();
+	__property Stage::Vectorgeometry::THomogeneousFltVector Color = {read=GetColor, write=SetColor};
+	
+__published:
+	__property System::Classes::TNotifyEvent OnChange = {read=FOnChange, write=FOnChange};
+public:
+	/* TWinControl.CreateParented */ inline __fastcall TRColorEditor(HWND ParentWindow) : Vcl::Forms::TFrame(ParentWindow) { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+}	/* namespace Frcoloreditor */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FRCOLOREDITOR)
+using namespace Frcoloreditor;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FRColorEditorHPP

+ 89 - 0
include/Win32/FRFaceEditor.hpp

@@ -0,0 +1,89 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FRFaceEditor.pas' rev: 36.00 (Windows)
+
+#ifndef FRFaceEditorHPP
+#define FRFaceEditorHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <System.ImageList.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.ComCtrls.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.ImgList.hpp>
+#include <Vcl.Controls.hpp>
+#include <Vcl.Graphics.hpp>
+#include <FRTrackBarEdit.hpp>
+#include <FRColorEditor.hpp>
+#include <GLS.Texture.hpp>
+#include <GLS.Material.hpp>
+#include <GLS.State.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Frfaceeditor
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TRFaceEditor;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TRFaceEditor : public Vcl::Forms::TFrame
+{
+	typedef Vcl::Forms::TFrame inherited;
+	
+__published:
+	Vcl::Comctrls::TPageControl* PageControl;
+	Vcl::Comctrls::TTabSheet* TSAmbient;
+	Vcl::Comctrls::TTabSheet* TSDiffuse;
+	Vcl::Comctrls::TTabSheet* TSEmission;
+	Vcl::Comctrls::TTabSheet* TSSpecular;
+	Frcoloreditor::TRColorEditor* CEAmbiant;
+	Vcl::Stdctrls::TLabel* Label1;
+	Frtrackbaredit::TRTrackBarEdit* TBEShininess;
+	Vcl::Controls::TImageList* ImageList;
+	Frcoloreditor::TRColorEditor* CEDiffuse;
+	Frcoloreditor::TRColorEditor* CEEmission;
+	Frcoloreditor::TRColorEditor* CESpecular;
+	void __fastcall TBEShininessTrackBarChange(System::TObject* Sender);
+	
+private:
+	System::Classes::TNotifyEvent FOnChange;
+	bool Updating;
+	Gls::Material::TGLFaceProperties* FFaceProperties;
+	void __fastcall SetGLFaceProperties(Gls::Material::TGLFaceProperties* const val);
+	void __fastcall OnColorChange(System::TObject* Sender);
+	
+public:
+	__fastcall virtual TRFaceEditor(System::Classes::TComponent* AOwner);
+	__fastcall virtual ~TRFaceEditor();
+	__property System::Classes::TNotifyEvent OnChange = {read=FOnChange, write=FOnChange};
+	__property Gls::Material::TGLFaceProperties* FaceProperties = {read=FFaceProperties, write=SetGLFaceProperties};
+public:
+	/* TWinControl.CreateParented */ inline __fastcall TRFaceEditor(HWND ParentWindow) : Vcl::Forms::TFrame(ParentWindow) { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+}	/* namespace Frfaceeditor */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FRFACEEDITOR)
+using namespace Frfaceeditor;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FRFaceEditorHPP

+ 101 - 0
include/Win32/FRMaterialPreview.hpp

@@ -0,0 +1,101 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FRMaterialPreview.pas' rev: 36.00 (Windows)
+
+#ifndef FRMaterialPreviewHPP
+#define FRMaterialPreviewHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.Types.hpp>
+#include <System.Classes.hpp>
+#include <Vcl.Graphics.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.ComCtrls.hpp>
+#include <Vcl.Controls.hpp>
+#include <GLS.Scene.hpp>
+#include <Stage.VectorTypes.hpp>
+#include <GLS.Objects.hpp>
+#include <GLS.Texture.hpp>
+#include <GLS.HUDObjects.hpp>
+#include <GLS.SceneViewer.hpp>
+#include <GLS.GeomObjects.hpp>
+#include <GLS.Color.hpp>
+#include <GLS.Coordinates.hpp>
+#include <GLS.BaseClasses.hpp>
+#include <GLS.Material.hpp>
+#include <System.UITypes.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Frmaterialpreview
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TRMaterialPreview;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TRMaterialPreview : public Vcl::Forms::TFrame
+{
+	typedef Vcl::Forms::TFrame inherited;
+	
+__published:
+	Gls::Scene::TGLScene* GLScene;
+	Gls::Sceneviewer::TGLSceneViewer* GLSceneViewer;
+	Vcl::Stdctrls::TComboBox* CBObject;
+	Gls::Scene::TGLCamera* Camera;
+	Gls::Objects::TGLCube* Cube;
+	Gls::Objects::TGLSphere* Sphere;
+	Gls::Scene::TGLLightSource* LightSource;
+	Vcl::Stdctrls::TComboBox* CBBackground;
+	Gls::Hudobjects::TGLHUDSprite* BackGroundSprite;
+	Gls::Geomobjects::TGLTeapot* Teapot;
+	Gls::Objects::TGLDummyCube* World;
+	Gls::Objects::TGLDummyCube* Light;
+	Gls::Objects::TGLSphere* FireSphere;
+	Gls::Material::TGLMaterialLibrary* GLMaterialLibrary;
+	void __fastcall CBObjectChange(System::TObject* Sender);
+	void __fastcall CBBackgroundChange(System::TObject* Sender);
+	void __fastcall SceneViewerMouseMove(System::TObject* Sender, System::Classes::TShiftState Shift, int X, int Y);
+	void __fastcall SceneViewerMouseDown(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, int X, int Y);
+	void __fastcall SceneViewerMouseWheel(System::TObject* Sender, System::Classes::TShiftState Shift, int WheelDelta, const System::Types::TPoint &MousePos, bool &Handled);
+	
+private:
+	Gls::Material::TGLAbstractLibMaterial* FLibMaterial;
+	Gls::Material::TGLMaterial* __fastcall GetMaterial();
+	void __fastcall SetMaterial(Gls::Material::TGLMaterial* const Value);
+	Gls::Material::TGLAbstractLibMaterial* __fastcall GetLibMaterial();
+	void __fastcall SetLibMaterial(Gls::Material::TGLAbstractLibMaterial* const Value);
+	
+public:
+	__fastcall virtual TRMaterialPreview(System::Classes::TComponent* AOwner);
+	__property Gls::Material::TGLMaterial* Material = {read=GetMaterial, write=SetMaterial};
+	__property Gls::Material::TGLAbstractLibMaterial* LibMaterial = {read=GetLibMaterial, write=SetLibMaterial};
+public:
+	/* TScrollingWinControl.Destroy */ inline __fastcall virtual ~TRMaterialPreview() { }
+	
+public:
+	/* TWinControl.CreateParented */ inline __fastcall TRMaterialPreview(HWND ParentWindow) : Vcl::Forms::TFrame(ParentWindow) { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+}	/* namespace Frmaterialpreview */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FRMATERIALPREVIEW)
+using namespace Frmaterialpreview;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FRMaterialPreviewHPP

+ 100 - 0
include/Win32/FRTextureEdit.hpp

@@ -0,0 +1,100 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FRTextureEdit.pas' rev: 36.00 (Windows)
+
+#ifndef FRTextureEditHPP
+#define FRTextureEditHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <System.TypInfo.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.Buttons.hpp>
+#include <Vcl.Controls.hpp>
+#include <GLS.Graphics.hpp>
+#include <Stage.TextureFormat.hpp>
+#include <GLS.Texture.hpp>
+#include <GLS.State.hpp>
+#include <GLS.TextureImageEditors.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Frtextureedit
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TRTextureEdit;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TRTextureEdit : public Vcl::Forms::TFrame
+{
+	typedef Vcl::Forms::TFrame inherited;
+	
+__published:
+	Vcl::Stdctrls::TLabel* Label2;
+	Vcl::Buttons::TSpeedButton* SBEditImage;
+	Vcl::Stdctrls::TComboBox* CBMagFilter;
+	Vcl::Stdctrls::TLabel* Label3;
+	Vcl::Stdctrls::TLabel* Label4;
+	Vcl::Stdctrls::TComboBox* CBMinFilter;
+	Vcl::Stdctrls::TComboBox* CBTextureMode;
+	Vcl::Stdctrls::TLabel* Label1;
+	Vcl::Stdctrls::TLabel* Label5;
+	Vcl::Stdctrls::TComboBox* CBTextureWrap;
+	Vcl::Stdctrls::TCheckBox* CBDisabled;
+	Vcl::Stdctrls::TComboBox* CBImageClass;
+	Vcl::Stdctrls::TComboBox* CBImageAlpha;
+	Vcl::Stdctrls::TLabel* Label6;
+	Vcl::Stdctrls::TComboBox* CBFilteringQuality;
+	Vcl::Stdctrls::TLabel* Label7;
+	void __fastcall CBMagFilterChange(System::TObject* Sender);
+	void __fastcall CBMinFilterChange(System::TObject* Sender);
+	void __fastcall CBTextureModeChange(System::TObject* Sender);
+	void __fastcall CBTextureWrapChange(System::TObject* Sender);
+	void __fastcall CBDisabledClick(System::TObject* Sender);
+	void __fastcall SBEditImageClick(System::TObject* Sender);
+	void __fastcall CBImageClassChange(System::TObject* Sender);
+	void __fastcall CBImageAlphaChange(System::TObject* Sender);
+	void __fastcall CBFilteringQualityChange(System::TObject* Sender);
+	
+private:
+	Gls::Texture::TGLTexture* FTexture;
+	System::Classes::TNotifyEvent FOnChange;
+	bool Changeing;
+	
+protected:
+	void __fastcall SetTexture(Gls::Texture::TGLTexture* const val);
+	virtual void __fastcall DoOnChange();
+	
+public:
+	__fastcall virtual TRTextureEdit(System::Classes::TComponent* AOwner);
+	__fastcall virtual ~TRTextureEdit();
+	__property Gls::Texture::TGLTexture* Texture = {read=FTexture, write=SetTexture};
+	__property System::Classes::TNotifyEvent OnChange = {read=FOnChange, write=FOnChange};
+public:
+	/* TWinControl.CreateParented */ inline __fastcall TRTextureEdit(HWND ParentWindow) : Vcl::Forms::TFrame(ParentWindow) { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+}	/* namespace Frtextureedit */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FRTEXTUREEDIT)
+using namespace Frtextureedit;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FRTextureEditHPP

+ 77 - 0
include/Win32/FRTrackBarEdit.hpp

@@ -0,0 +1,77 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FRTrackBarEdit.pas' rev: 36.00 (Windows)
+
+#ifndef FRTrackBarEditHPP
+#define FRTrackBarEditHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.ComCtrls.hpp>
+#include <Vcl.Controls.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Frtrackbaredit
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TRTrackBarEdit;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TRTrackBarEdit : public Vcl::Forms::TFrame
+{
+	typedef Vcl::Forms::TFrame inherited;
+	
+__published:
+	Vcl::Comctrls::TTrackBar* TrackBar;
+	Vcl::Stdctrls::TEdit* Edit;
+	void __fastcall TrackBarChange(System::TObject* Sender);
+	void __fastcall EditChange(System::TObject* Sender);
+	
+private:
+	void __fastcall SetValue(const int val);
+	int __fastcall GetValue();
+	void __fastcall SetValueMin(const int val);
+	int __fastcall GetValueMin();
+	void __fastcall SetValueMax(const int val);
+	int __fastcall GetValueMax();
+	
+public:
+	__property int Value = {read=GetValue, write=SetValue, nodefault};
+	__property int ValueMin = {read=GetValueMin, write=SetValueMin, nodefault};
+	__property int ValueMax = {read=GetValueMax, write=SetValueMax, nodefault};
+public:
+	/* TCustomFrame.Create */ inline __fastcall virtual TRTrackBarEdit(System::Classes::TComponent* AOwner) : Vcl::Forms::TFrame(AOwner) { }
+	
+public:
+	/* TScrollingWinControl.Destroy */ inline __fastcall virtual ~TRTrackBarEdit() { }
+	
+public:
+	/* TWinControl.CreateParented */ inline __fastcall TRTrackBarEdit(HWND ParentWindow) : Vcl::Forms::TFrame(ParentWindow) { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+}	/* namespace Frtrackbaredit */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FRTRACKBAREDIT)
+using namespace Frtrackbaredit;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FRTrackBarEditHPP

+ 103 - 0
include/Win32/FmCUDAEditor.hpp

@@ -0,0 +1,103 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FmCUDAEditor.pas' rev: 36.00 (Windows)
+
+#ifndef FmCUDAEditorHPP
+#define FmCUDAEditorHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+#include <Winapi.Messages.hpp>
+#include <System.SysUtils.hpp>
+#include <System.Variants.hpp>
+#include <System.Classes.hpp>
+#include <System.Win.Registry.hpp>
+#include <System.ImageList.hpp>
+#include <Vcl.Graphics.hpp>
+#include <Vcl.Controls.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.Dialogs.hpp>
+#include <Vcl.ImgList.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.ComCtrls.hpp>
+#include <Vcl.ToolWin.hpp>
+#include <DesignIntf.hpp>
+#include <VCLEditors.hpp>
+#include <Stage.Strings.hpp>
+#include <GLS.CUDA.APIComps.hpp>
+#include <GLS.CUDA.FFTPlan.hpp>
+#include <GLS.CUDA.Graphics.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Fmcudaeditor
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TGLCUDAEditorForm;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TGLCUDAEditorForm : public Vcl::Forms::TForm
+{
+	typedef Vcl::Forms::TForm inherited;
+	
+__published:
+	Vcl::Comctrls::TToolBar* ToolBar1;
+	Vcl::Comctrls::TToolButton* AddModuleButton;
+	Vcl::Comctrls::TToolButton* DeleteButton;
+	Vcl::Stdctrls::TListBox* ListBox1;
+	Vcl::Controls::TImageList* ImageList1;
+	Vcl::Comctrls::TToolButton* AddMemDataButton;
+	Vcl::Comctrls::TToolButton* AddFFTPlanButton;
+	Vcl::Comctrls::TToolButton* AddGeometryResButton;
+	Vcl::Comctrls::TToolButton* AddImageResButton;
+	void __fastcall AddItemButtonClick(System::TObject* Sender);
+	void __fastcall DeleteButtonClick(System::TObject* Sender);
+	void __fastcall FormCreate(System::TObject* Sender);
+	void __fastcall ListBox1Click(System::TObject* Sender);
+	void __fastcall FormDestroy(System::TObject* Sender);
+	
+private:
+	System::Classes::TList* FClassList;
+	Gls::Cuda::Apicomps::TGLCUDA* FCUDA;
+	Designintf::_di_IDesigner FCurrentDesigner;
+	
+protected:
+	virtual void __fastcall Notification(System::Classes::TComponent* AComponent, System::Classes::TOperation Operation);
+	void __fastcall OnCUDAComponentNameChanged(System::TObject* Sender);
+	
+public:
+	void __fastcall SetCUDAEditorClient(Gls::Cuda::Apicomps::TGLCUDA* Client, Designintf::_di_IDesigner Designer);
+public:
+	/* TCustomForm.Create */ inline __fastcall virtual TGLCUDAEditorForm(System::Classes::TComponent* AOwner) : Vcl::Forms::TForm(AOwner) { }
+	/* TCustomForm.CreateNew */ inline __fastcall virtual TGLCUDAEditorForm(System::Classes::TComponent* AOwner, int Dummy) : Vcl::Forms::TForm(AOwner, Dummy) { }
+	/* TCustomForm.CreateScaledNew */ inline __fastcall virtual TGLCUDAEditorForm(System::Classes::TComponent* AOwner, int ADPI, int Dummy) : Vcl::Forms::TForm(AOwner, ADPI, Dummy) { }
+	/* TCustomForm.Destroy */ inline __fastcall virtual ~TGLCUDAEditorForm() { }
+	
+public:
+	/* TWinControl.CreateParented */ inline __fastcall TGLCUDAEditorForm(HWND ParentWindow) : Vcl::Forms::TForm(ParentWindow) { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+extern DELPHI_PACKAGE TGLCUDAEditorForm* __fastcall GLCUDAEditorForm(void);
+extern DELPHI_PACKAGE void __fastcall ReleaseGLCUDAEditorForm(void);
+}	/* namespace Fmcudaeditor */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMCUDAEDITOR)
+using namespace Fmcudaeditor;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FmCUDAEditorHPP

+ 140 - 0
include/Win32/FmGuiLayoutEditor.hpp

@@ -0,0 +1,140 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FmGuiLayoutEditor.pas' rev: 36.00 (Windows)
+
+#ifndef FmGuiLayoutEditorHPP
+#define FmGuiLayoutEditorHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+#include <Winapi.ShellAPI.hpp>
+#include <System.SysUtils.hpp>
+#include <System.Variants.hpp>
+#include <System.Classes.hpp>
+#include <Vcl.Graphics.hpp>
+#include <Vcl.Controls.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.Dialogs.hpp>
+#include <Vcl.Buttons.hpp>
+#include <Vcl.ExtDlgs.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.ExtCtrls.hpp>
+#include <Vcl.Samples.Spin.hpp>
+#include <Vcl.Grids.hpp>
+#include <GLS.BaseClasses.hpp>
+#include <GLS.ImageUtils.hpp>
+#include <GLS.Gui.hpp>
+#include <Stage.Strings.hpp>
+#include <System.UITypes.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Fmguilayouteditor
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TGLLayoutEditorForm;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TGLLayoutEditorForm : public Vcl::Forms::TForm
+{
+	typedef Vcl::Forms::TForm inherited;
+	
+__published:
+	Vcl::Extctrls::TPanel* Panel1;
+	Vcl::Extctrls::TPanel* Panel2;
+	Vcl::Stdctrls::TListBox* items_list;
+	Vcl::Stdctrls::TLabel* x_label;
+	Vcl::Stdctrls::TLabel* y_label;
+	Vcl::Buttons::TBitBtn* open_image_button;
+	Vcl::Buttons::TBitBtn* open_button;
+	Vcl::Buttons::TBitBtn* save_button;
+	Vcl::Dialogs::TOpenDialog* OpenDialog1;
+	Vcl::Dialogs::TSaveDialog* SaveDialog1;
+	Vcl::Buttons::TBitBtn* delete_item_button;
+	Vcl::Buttons::TBitBtn* add_button;
+	Vcl::Stdctrls::TLabel* Label1;
+	Vcl::Stdctrls::TLabel* Label2;
+	Vcl::Samples::Spin::TSpinEdit* left_edit;
+	Vcl::Samples::Spin::TSpinEdit* top_edit;
+	Vcl::Stdctrls::TLabel* Label3;
+	Vcl::Stdctrls::TLabel* Label4;
+	Vcl::Samples::Spin::TSpinEdit* height_edit;
+	Vcl::Samples::Spin::TSpinEdit* width_edit;
+	Vcl::Stdctrls::TLabel* Label5;
+	Vcl::Stdctrls::TEdit* name_edit;
+	Vcl::Grids::TStringGrid* elements_grid;
+	Vcl::Extctrls::TPanel* Panel3;
+	Vcl::Buttons::TBitBtn* BitBtn4;
+	Vcl::Buttons::TBitBtn* BitBtn5;
+	Vcl::Forms::TScrollBox* ScrollBox1;
+	Vcl::Extctrls::TImage* Image2;
+	Vcl::Extctrls::TPaintBox* PaintBox1;
+	Vcl::Extctrls::TImage* Image1;
+	Vcl::Buttons::TBitBtn* BitBtn6;
+	Vcl::Buttons::TBitBtn* BitBtn1;
+	Gls::Gui::TGLGuiLayout* GLGuiLayout1;
+	void __fastcall open_image_buttonClick(System::TObject* Sender);
+	void __fastcall open_buttonClick(System::TObject* Sender);
+	void __fastcall save_buttonClick(System::TObject* Sender);
+	void __fastcall FormCreate(System::TObject* Sender);
+	void __fastcall Image1MouseMove(System::TObject* Sender, System::Classes::TShiftState Shift, int X, int Y);
+	void __fastcall Image1MouseDown(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, int X, int Y);
+	void __fastcall Image1MouseUp(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, int X, int Y);
+	void __fastcall add_buttonClick(System::TObject* Sender);
+	void __fastcall delete_item_buttonClick(System::TObject* Sender);
+	void __fastcall items_listClick(System::TObject* Sender);
+	void __fastcall name_editExit(System::TObject* Sender);
+	void __fastcall name_editKeyPress(System::TObject* Sender, System::WideChar &Key);
+	void __fastcall elements_gridClick(System::TObject* Sender);
+	void __fastcall left_editChange(System::TObject* Sender);
+	void __fastcall top_editChange(System::TObject* Sender);
+	void __fastcall width_editChange(System::TObject* Sender);
+	void __fastcall height_editChange(System::TObject* Sender);
+	void __fastcall BitBtn4Click(System::TObject* Sender);
+	void __fastcall BitBtn6Click(System::TObject* Sender);
+	void __fastcall elements_gridDblClick(System::TObject* Sender);
+	
+private:
+	void __fastcall SyncImages();
+	void __fastcall DrawCurrentElement();
+	void __fastcall RefreshComponentBox();
+	bool __fastcall GetEnabledSpins();
+	void __fastcall SetEnabledSpins(bool Value);
+	
+public:
+	void __fastcall Execute(Gls::Gui::TGLGuiLayout* AGUILayout);
+	__property bool EnabledSpins = {read=GetEnabledSpins, write=SetEnabledSpins, nodefault};
+public:
+	/* TCustomForm.Create */ inline __fastcall virtual TGLLayoutEditorForm(System::Classes::TComponent* AOwner) : Vcl::Forms::TForm(AOwner) { }
+	/* TCustomForm.CreateNew */ inline __fastcall virtual TGLLayoutEditorForm(System::Classes::TComponent* AOwner, int Dummy) : Vcl::Forms::TForm(AOwner, Dummy) { }
+	/* TCustomForm.CreateScaledNew */ inline __fastcall virtual TGLLayoutEditorForm(System::Classes::TComponent* AOwner, int ADPI, int Dummy) : Vcl::Forms::TForm(AOwner, ADPI, Dummy) { }
+	/* TCustomForm.Destroy */ inline __fastcall virtual ~TGLLayoutEditorForm() { }
+	
+public:
+	/* TWinControl.CreateParented */ inline __fastcall TGLLayoutEditorForm(HWND ParentWindow) : Vcl::Forms::TForm(ParentWindow) { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+extern DELPHI_PACKAGE TGLLayoutEditorForm* __fastcall GUILayoutEditorForm(void);
+extern DELPHI_PACKAGE void __fastcall ReleaseGUILayoutEditorForm(void);
+}	/* namespace Fmguilayouteditor */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMGUILAYOUTEDITOR)
+using namespace Fmguilayouteditor;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FmGuiLayoutEditorHPP

+ 206 - 0
include/Win32/FmGuiSkinEditor.hpp

@@ -0,0 +1,206 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FmGuiSkinEditor.pas' rev: 36.00 (Windows)
+
+#ifndef FmGuiSkinEditorHPP
+#define FmGuiSkinEditorHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+#include <Winapi.Messages.hpp>
+#include <System.SysUtils.hpp>
+#include <System.Classes.hpp>
+#include <Vcl.Graphics.hpp>
+#include <Vcl.Controls.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.Dialogs.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.ComCtrls.hpp>
+#include <Vcl.ExtCtrls.hpp>
+#include <Vcl.Menus.hpp>
+#include <GLS.Texture.hpp>
+#include <GLS.Scene.hpp>
+#include <GLS.Objects.hpp>
+#include <GLS.Windows.hpp>
+#include <GLS.HUDObjects.hpp>
+#include <GLS.SceneViewer.hpp>
+#include <GLS.Gui.hpp>
+#include <GLS.Graphics.hpp>
+#include <Stage.Utils.hpp>
+#include <GLS.Coordinates.hpp>
+#include <GLS.BaseClasses.hpp>
+#include <GLS.Material.hpp>
+#include <System.Types.hpp>
+#include <System.UITypes.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Fmguiskineditor
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TGLSkinEditorForm;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TGLSkinEditorForm : public Vcl::Forms::TForm
+{
+	typedef Vcl::Forms::TForm inherited;
+	
+__published:
+	Gls::Scene::TGLScene* GLScene1;
+	Gls::Scene::TGLCamera* GLCamera1;
+	Gls::Windows::TGLPanel* GLPanel1;
+	Gls::Hudobjects::TGLHUDSprite* HUDSprite1;
+	Gls::Scene::TGLMemoryViewer* GLMemoryViewer1;
+	Gls::Scene::TGLLightSource* GLLightSource1;
+	Vcl::Comctrls::TStatusBar* StatusBar;
+	Vcl::Extctrls::TPanel* panBottom;
+	Vcl::Extctrls::TPanel* panZoomImage;
+	Vcl::Extctrls::TImage* imgFull;
+	Vcl::Stdctrls::TScrollBar* sbarHorizontal;
+	Vcl::Stdctrls::TScrollBar* sbarVertical;
+	Vcl::Stdctrls::TButton* Button5;
+	Vcl::Stdctrls::TButton* Button6;
+	Vcl::Extctrls::TPanel* panImageProperties;
+	Vcl::Stdctrls::TLabel* Label5;
+	Vcl::Stdctrls::TLabel* Label6;
+	Vcl::Extctrls::TPanel* Panel2;
+	Vcl::Extctrls::TImage* imgPreview;
+	Vcl::Extctrls::TPanel* Panel3;
+	Vcl::Stdctrls::TLabel* Label2;
+	Vcl::Stdctrls::TLabel* Label1;
+	Vcl::Stdctrls::TButton* Button3;
+	Vcl::Stdctrls::TButton* Button4;
+	Vcl::Stdctrls::TCheckBox* CheckBox1;
+	Vcl::Stdctrls::TEdit* WidthEdit;
+	Vcl::Stdctrls::TEdit* HeightEdit;
+	Vcl::Extctrls::TPanel* panElements;
+	Vcl::Extctrls::TBevel* Bevel2;
+	Vcl::Extctrls::TBevel* Bevel1;
+	Vcl::Stdctrls::TLabel* Label3;
+	Vcl::Stdctrls::TLabel* Label4;
+	Vcl::Stdctrls::TLabel* Label11;
+	Vcl::Stdctrls::TLabel* Label12;
+	Vcl::Stdctrls::TLabel* Label13;
+	Vcl::Stdctrls::TLabel* Label9;
+	Vcl::Stdctrls::TLabel* Label10;
+	Vcl::Stdctrls::TLabel* Label14;
+	Vcl::Stdctrls::TListBox* lbElements;
+	Vcl::Stdctrls::TButton* btnAdd;
+	Vcl::Stdctrls::TButton* btnDelete;
+	Vcl::Stdctrls::TComboBox* ComboBox1;
+	Vcl::Stdctrls::TEdit* LeftEdit;
+	Vcl::Stdctrls::TEdit* TopEdit;
+	Vcl::Stdctrls::TEdit* RightEdit;
+	Vcl::Stdctrls::TEdit* BottomEdit;
+	Vcl::Stdctrls::TEdit* ScaleXEdit;
+	Vcl::Stdctrls::TEdit* ScaleYEdit;
+	Vcl::Menus::TPopupMenu* popElements;
+	Vcl::Menus::TMenuItem* mnuTopLeft;
+	Vcl::Menus::TMenuItem* mnuTop;
+	Vcl::Menus::TMenuItem* mnuTopRight;
+	Vcl::Menus::TMenuItem* mnuLeft;
+	Vcl::Menus::TMenuItem* mnuCenter;
+	Vcl::Menus::TMenuItem* mnuRight;
+	Vcl::Menus::TMenuItem* mnuBottomLeft;
+	Vcl::Menus::TMenuItem* mnuBottom;
+	Vcl::Menus::TMenuItem* mnuBottomRight;
+	Vcl::Menus::TMenuItem* N1;
+	Vcl::Menus::TMenuItem* mnuAddAll;
+	Vcl::Menus::TMenuItem* N2;
+	Vcl::Menus::TMenuItem* mnuAllTop;
+	Vcl::Menus::TMenuItem* mnuAllMiddle;
+	Vcl::Menus::TMenuItem* mnuAllBottom;
+	void __fastcall FormCreate(System::TObject* Sender);
+	void __fastcall FormDestroy(System::TObject* Sender);
+	void __fastcall Button3Click(System::TObject* Sender);
+	void __fastcall Button4Click(System::TObject* Sender);
+	void __fastcall ScrollBarScroll(System::TObject* Sender, System::Uitypes::TScrollCode ScrollCode, int &ScrollPos);
+	void __fastcall ScrollbarChange(System::TObject* Sender);
+	void __fastcall WidthEditChange(System::TObject* Sender);
+	void __fastcall HeightEditChange(System::TObject* Sender);
+	void __fastcall btnAddClick(System::TObject* Sender);
+	void __fastcall lbElementsClick(System::TObject* Sender);
+	void __fastcall ComboBox1Change(System::TObject* Sender);
+	void __fastcall btnDeleteClick(System::TObject* Sender);
+	void __fastcall imgFullMouseDown(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, int X, int Y);
+	void __fastcall imgFullMouseUp(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, int X, int Y);
+	void __fastcall imgFullMouseMove(System::TObject* Sender, System::Classes::TShiftState Shift, int X, int Y);
+	void __fastcall lbElementsKeyDown(System::TObject* Sender, System::Word &Key, System::Classes::TShiftState Shift);
+	void __fastcall CheckBox1Click(System::TObject* Sender);
+	void __fastcall ScaleXEditChange(System::TObject* Sender);
+	void __fastcall ScaleYEditChange(System::TObject* Sender);
+	void __fastcall LeftEditChange(System::TObject* Sender);
+	void __fastcall TopEditChange(System::TObject* Sender);
+	void __fastcall RightEditChange(System::TObject* Sender);
+	void __fastcall BottomEditChange(System::TObject* Sender);
+	void __fastcall EditKeyPress(System::TObject* Sender, System::WideChar &Key);
+	void __fastcall FormResize(System::TObject* Sender);
+	void __fastcall MenuItemClick(System::TObject* Sender);
+	void __fastcall mnuAddAllClick(System::TObject* Sender);
+	void __fastcall mnuAllTopClick(System::TObject* Sender);
+	void __fastcall mnuAllMiddleClick(System::TObject* Sender);
+	void __fastcall mnuAllBottomClick(System::TObject* Sender);
+	void __fastcall imgPreviewMouseDown(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, int X, int Y);
+	void __fastcall imgPreviewMouseMove(System::TObject* Sender, System::Classes::TShiftState Shift, int X, int Y);
+	
+private:
+	System::Classes::TWndMethod FOriginalWndProc;
+	Winapi::Windows::TRect FFocusRect;
+	Winapi::Windows::TRect VisibleRect;
+	Winapi::Windows::TPoint PreviewMousePoint;
+	int PreviewWidth;
+	int PreviewHeight;
+	Winapi::Windows::TPoint FullMousePoint;
+	bool MouseDown;
+	void __fastcall ImageWndProc(Winapi::Messages::TMessage &Message);
+	void __fastcall DrawImageFocusRect(const Winapi::Windows::TRect &ARect);
+	void __fastcall AlignZoomPanel();
+	void __fastcall UpdateRegionEdits();
+	void __fastcall SetEditState(Vcl::Controls::TControl* Parent, bool Enabled);
+	void __fastcall AddElement(int Index);
+	void __fastcall DrawCrossair(const Winapi::Windows::TPoint &Point);
+	
+public:
+	Gls::Gui::TGLGuiElementList* TheGuiComponent;
+	Gls::Gui::TGLGuiElement* SelectedElement;
+	Gls::Texture::TGLTexture* Tex;
+	float Zoom;
+	int Width;
+	int Height;
+	bool __fastcall Edit(Gls::Gui::TGLGuiElementList* GuiComponent);
+	void __fastcall Render();
+	void __fastcall SetMax(Vcl::Stdctrls::TScrollBar* Scrollbar, int Val);
+public:
+	/* TCustomForm.Create */ inline __fastcall virtual TGLSkinEditorForm(System::Classes::TComponent* AOwner) : Vcl::Forms::TForm(AOwner) { }
+	/* TCustomForm.CreateNew */ inline __fastcall virtual TGLSkinEditorForm(System::Classes::TComponent* AOwner, int Dummy) : Vcl::Forms::TForm(AOwner, Dummy) { }
+	/* TCustomForm.CreateScaledNew */ inline __fastcall virtual TGLSkinEditorForm(System::Classes::TComponent* AOwner, int ADPI, int Dummy) : Vcl::Forms::TForm(AOwner, ADPI, Dummy) { }
+	/* TCustomForm.Destroy */ inline __fastcall virtual ~TGLSkinEditorForm() { }
+	
+public:
+	/* TWinControl.CreateParented */ inline __fastcall TGLSkinEditorForm(HWND ParentWindow) : Vcl::Forms::TForm(ParentWindow) { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+extern DELPHI_PACKAGE TGLSkinEditorForm* GLSkinEditorForm;
+extern DELPHI_PACKAGE bool __fastcall GUIComponentDialog(Gls::Gui::TGLGuiElementList* GuiComponent);
+}	/* namespace Fmguiskineditor */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMGUISKINEDITOR)
+using namespace Fmguiskineditor;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FmGuiSkinEditorHPP

+ 168 - 0
include/Win32/FmInfo.hpp

@@ -0,0 +1,168 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FmInfo.pas' rev: 36.00 (Windows)
+
+#ifndef FmInfoHPP
+#define FmInfoHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.OpenGL.hpp>
+#include <Winapi.Windows.hpp>
+#include <System.SysUtils.hpp>
+#include <System.Classes.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.Controls.hpp>
+#include <Vcl.Buttons.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.ComCtrls.hpp>
+#include <Vcl.ExtCtrls.hpp>
+#include <Vcl.Graphics.hpp>
+#include <Vcl.Menus.hpp>
+#include <Vcl.Imaging.jpeg.hpp>
+#include <Stage.OpenGLTokens.hpp>
+#include <GLS.OpenGLAdapter.hpp>
+#include <GLS.Scene.hpp>
+#include <GLS.SceneViewer.hpp>
+#include <GLS.Context.hpp>
+#include <Stage.Utils.hpp>
+#include <System.UITypes.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Fminfo
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TGLInfoForm;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TGLInfoForm : public Vcl::Forms::TForm
+{
+	typedef Vcl::Forms::TForm inherited;
+	
+__published:
+	Vcl::Stdctrls::TLabel* AccLabel;
+	Vcl::Stdctrls::TLabel* AccumLabel;
+	Vcl::Stdctrls::TLabel* AuxLabel;
+	Vcl::Stdctrls::TLabel* ClipLabel;
+	Vcl::Stdctrls::TLabel* ColorLabel;
+	Vcl::Stdctrls::TLabel* CopyLabel;
+	Vcl::Stdctrls::TLabel* DepthLabel;
+	Vcl::Stdctrls::TLabel* DoubleLabel;
+	Vcl::Stdctrls::TLabel* EvalLabel;
+	Vcl::Extctrls::TImage* Image;
+	Vcl::Stdctrls::TLabel* Label1;
+	Vcl::Stdctrls::TLabel* Label10;
+	Vcl::Stdctrls::TLabel* Label11;
+	Vcl::Stdctrls::TLabel* Label12;
+	Vcl::Stdctrls::TLabel* Label13;
+	Vcl::Stdctrls::TLabel* Label14;
+	Vcl::Stdctrls::TLabel* Label15;
+	Vcl::Stdctrls::TLabel* Label16;
+	Vcl::Stdctrls::TLabel* Label17;
+	Vcl::Stdctrls::TLabel* Label18;
+	Vcl::Stdctrls::TLabel* Label2;
+	Vcl::Stdctrls::TLabel* Label20;
+	Vcl::Stdctrls::TLabel* Label23;
+	Vcl::Stdctrls::TLabel* Label25;
+	Vcl::Stdctrls::TLabel* Label26;
+	Vcl::Stdctrls::TLabel* Label27;
+	Vcl::Stdctrls::TLabel* Label28;
+	Vcl::Stdctrls::TLabel* Label29;
+	Vcl::Stdctrls::TLabel* Label3;
+	Vcl::Stdctrls::TLabel* Label30;
+	Vcl::Stdctrls::TLabel* LabelCommon;
+	Vcl::Stdctrls::TLabel* LabelDepths;
+	Vcl::Stdctrls::TLabel* LabelMaxValues;
+	Vcl::Stdctrls::TLabel* Label34;
+	Vcl::Stdctrls::TLabel* Label35;
+	Vcl::Stdctrls::TLabel* Label37;
+	Vcl::Stdctrls::TLabel* Label4;
+	Vcl::Stdctrls::TLabel* Label5;
+	Vcl::Stdctrls::TLabel* Label6;
+	Vcl::Stdctrls::TLabel* Label7;
+	Vcl::Stdctrls::TLabel* Label8;
+	Vcl::Stdctrls::TLabel* Label9;
+	Vcl::Stdctrls::TLabel* LightLabel;
+	Vcl::Stdctrls::TLabel* ListLabel;
+	Vcl::Stdctrls::TMemo* MemoAbout;
+	Vcl::Stdctrls::TMemo* MemoContributors;
+	Vcl::Stdctrls::TLabel* ModelLabel;
+	Vcl::Stdctrls::TLabel* NameLabel;
+	Vcl::Stdctrls::TLabel* OverlayLabel;
+	Vcl::Comctrls::TPageControl* PageControl;
+	Vcl::Stdctrls::TLabel* PixelLabel;
+	Vcl::Stdctrls::TLabel* ProjLabel;
+	Vcl::Stdctrls::TLabel* RendererLabel;
+	Vcl::Forms::TScrollBox* ScrollBoxInfo;
+	Vcl::Comctrls::TTabSheet* TabSheetInformation;
+	Vcl::Stdctrls::TLabel* StencilLabel;
+	Vcl::Stdctrls::TLabel* StereoLabel;
+	Vcl::Stdctrls::TLabel* SubLabel;
+	Vcl::Comctrls::TTabSheet* TabSheetAbout;
+	Vcl::Comctrls::TTabSheet* TabSheetContributors;
+	Vcl::Stdctrls::TLabel* TexSizeLabel;
+	Vcl::Stdctrls::TLabel* TexStackLabel;
+	Vcl::Stdctrls::TLabel* TexUnitsLabel;
+	Vcl::Stdctrls::TLabel* UnderlayLabel;
+	Vcl::Stdctrls::TLabel* VendorLabel;
+	Vcl::Stdctrls::TLabel* VersionLabel;
+	Vcl::Comctrls::TTabSheet* TabSheetExtensions;
+	Vcl::Stdctrls::TListBox* ListBoxExtensions;
+	Vcl::Menus::TPopupMenu* PMWebLink;
+	Vcl::Menus::TMenuItem* MIRegistryLink;
+	Vcl::Menus::TMenuItem* MIDelphi3D;
+	Vcl::Comctrls::TTabSheet* TabSheetGLScene;
+	Vcl::Stdctrls::TButton* CloseButton;
+	Vcl::Stdctrls::TLabel* VersionLbl;
+	Vcl::Stdctrls::TLabel* ViewLabel;
+	Vcl::Stdctrls::TLabel* lblSfGLScene;
+	Vcl::Stdctrls::TLabel* lblGithubGLScene;
+	void __fastcall CloseButtonClick(System::TObject* Sender);
+	void __fastcall FormCreate(System::TObject* Sender);
+	void __fastcall FormKeyPress(System::TObject* Sender, System::WideChar &Key);
+	void __fastcall FormClose(System::TObject* Sender, System::Uitypes::TCloseAction &Action);
+	void __fastcall ListBoxExtensionsDblClick(System::TObject* Sender);
+	void __fastcall ListBoxExtensionsClick(System::TObject* Sender);
+	void __fastcall ListBoxExtensionsKeyPress(System::TObject* Sender, System::WideChar &Key);
+	void __fastcall FormShow(System::TObject* Sender);
+	void __fastcall MIDelphi3DClick(System::TObject* Sender);
+	void __fastcall lblSfGLSceneClick(System::TObject* Sender);
+	void __fastcall lblGithubGLSceneClick(System::TObject* Sender);
+	
+protected:
+	System::UnicodeString __fastcall GetSceneVersion();
+	
+public:
+	void __fastcall GetInfoFrom(Gls::Scene::TGLSceneBuffer* aSceneBuffer);
+public:
+	/* TCustomForm.Create */ inline __fastcall virtual TGLInfoForm(System::Classes::TComponent* AOwner) : Vcl::Forms::TForm(AOwner) { }
+	/* TCustomForm.CreateNew */ inline __fastcall virtual TGLInfoForm(System::Classes::TComponent* AOwner, int Dummy) : Vcl::Forms::TForm(AOwner, Dummy) { }
+	/* TCustomForm.CreateScaledNew */ inline __fastcall virtual TGLInfoForm(System::Classes::TComponent* AOwner, int ADPI, int Dummy) : Vcl::Forms::TForm(AOwner, ADPI, Dummy) { }
+	/* TCustomForm.Destroy */ inline __fastcall virtual ~TGLInfoForm() { }
+	
+public:
+	/* TWinControl.CreateParented */ inline __fastcall TGLInfoForm(HWND ParentWindow) : Vcl::Forms::TForm(ParentWindow) { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+}	/* namespace Fminfo */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMINFO)
+using namespace Fminfo;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FmInfoHPP

+ 116 - 0
include/Win32/FmLibMaterialPicker.hpp

@@ -0,0 +1,116 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FmLibMaterialPicker.pas' rev: 36.00 (Windows)
+
+#ifndef FmLibMaterialPickerHPP
+#define FmLibMaterialPickerHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.Classes.hpp>
+#include <System.Types.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.Buttons.hpp>
+#include <Vcl.Controls.hpp>
+#include <Vcl.Graphics.hpp>
+#include <GLS.Scene.hpp>
+#include <GLS.Objects.hpp>
+#include <GLS.SceneViewer.hpp>
+#include <GLS.Material.hpp>
+#include <GLS.Color.hpp>
+#include <GLS.Coordinates.hpp>
+#include <GLS.BaseClasses.hpp>
+#include <GLS.HUDObjects.hpp>
+#include <GLS.GeomObjects.hpp>
+#include <System.UITypes.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Fmlibmaterialpicker
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TGLLibMaterialPickerForm;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TGLLibMaterialPickerForm : public Vcl::Forms::TForm
+{
+	typedef Vcl::Forms::TForm inherited;
+	
+__published:
+	Vcl::Stdctrls::TListBox* ListBoxMaterials;
+	Vcl::Stdctrls::TLabel* Label1;
+	Vcl::Stdctrls::TLabel* Label2;
+	Vcl::Buttons::TBitBtn* BitBtnOk;
+	Vcl::Buttons::TBitBtn* BitBtnCancel;
+	Gls::Scene::TGLScene* GLScene1;
+	Gls::Sceneviewer::TGLSceneViewer* GLSceneViewer1;
+	Gls::Scene::TGLLightSource* LightSource1;
+	Gls::Objects::TGLDummyCube* dcLight1;
+	Gls::Objects::TGLDummyCube* dcWorld1;
+	Gls::Scene::TGLCamera* Camera1;
+	Gls::Objects::TGLCube* Cube1;
+	Gls::Objects::TGLSphere* Sphere1;
+	Gls::Objects::TGLSphere* FireSphere1;
+	Gls::Geomobjects::TGLTeapot* Teapot1;
+	Gls::Material::TGLMaterialLibrary* GLMaterialLibrary1;
+	Vcl::Stdctrls::TComboBox* ComboBoxObject1;
+	Vcl::Stdctrls::TComboBox* ComboBoxBackGround1;
+	Gls::Hudobjects::TGLHUDSprite* BackGroundSprite1;
+	Gls::Scene::TGLLightSource* LightSource2;
+	void __fastcall ListBoxMaterialsClick(System::TObject* Sender);
+	void __fastcall ListBoxMaterialsKeyPress(System::TObject* Sender, System::WideChar &Key);
+	void __fastcall ListBoxMaterialsDblClick(System::TObject* Sender);
+	void __fastcall ComboBoxObject1Change(System::TObject* Sender);
+	void __fastcall ComboBoxBackGround1Change(System::TObject* Sender);
+	void __fastcall FormCreate(System::TObject* Sender);
+	void __fastcall GLSceneViewer1MouseMove(System::TObject* Sender, System::Classes::TShiftState Shift, int X, int Y);
+	void __fastcall GLSceneViewer1MouseWheel(System::TObject* Sender, System::Classes::TShiftState Shift, int WheelDelta, const System::Types::TPoint &MousePos, bool &Handled);
+	void __fastcall GLSceneViewer1MouseDown(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, int X, int Y);
+	
+private:
+	int mx;
+	int my;
+	Gls::Material::TGLAbstractLibMaterial* FLibMaterial1;
+	Gls::Material::TGLMaterial* __fastcall GetMaterial1();
+	void __fastcall SetMaterial1(Gls::Material::TGLMaterial* const Value);
+	Gls::Material::TGLAbstractLibMaterial* __fastcall GetLibMaterial1();
+	void __fastcall SetLibMaterial1(Gls::Material::TGLAbstractLibMaterial* const Value);
+	
+public:
+	bool __fastcall Execute(Gls::Material::TGLLibMaterialName &MaterialName, Gls::Material::TGLAbstractMaterialLibrary* MaterialLibrary);
+	__property Gls::Material::TGLMaterial* Material1 = {read=GetMaterial1, write=SetMaterial1};
+	__property Gls::Material::TGLAbstractLibMaterial* LibMaterial1 = {read=GetLibMaterial1, write=SetLibMaterial1};
+public:
+	/* TCustomForm.Create */ inline __fastcall virtual TGLLibMaterialPickerForm(System::Classes::TComponent* AOwner) : Vcl::Forms::TForm(AOwner) { }
+	/* TCustomForm.CreateNew */ inline __fastcall virtual TGLLibMaterialPickerForm(System::Classes::TComponent* AOwner, int Dummy) : Vcl::Forms::TForm(AOwner, Dummy) { }
+	/* TCustomForm.CreateScaledNew */ inline __fastcall virtual TGLLibMaterialPickerForm(System::Classes::TComponent* AOwner, int ADPI, int Dummy) : Vcl::Forms::TForm(AOwner, ADPI, Dummy) { }
+	/* TCustomForm.Destroy */ inline __fastcall virtual ~TGLLibMaterialPickerForm() { }
+	
+public:
+	/* TWinControl.CreateParented */ inline __fastcall TGLLibMaterialPickerForm(HWND ParentWindow) : Vcl::Forms::TForm(ParentWindow) { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+extern DELPHI_PACKAGE TGLLibMaterialPickerForm* __fastcall GLLibMaterialPickerForm(void);
+extern DELPHI_PACKAGE void __fastcall ReleaseLibMaterialPickerForm(void);
+}	/* namespace Fmlibmaterialpicker */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMLIBMATERIALPICKER)
+using namespace Fmlibmaterialpicker;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FmLibMaterialPickerHPP

+ 92 - 0
include/Win32/FmMaterialEditor.hpp

@@ -0,0 +1,92 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FmMaterialEditor.pas' rev: 36.00 (Windows)
+
+#ifndef FmMaterialEditorHPP
+#define FmMaterialEditorHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+#include <System.Classes.hpp>
+#include <System.TypInfo.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.ComCtrls.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.Controls.hpp>
+#include <Vcl.Buttons.hpp>
+#include <GLS.SceneViewer.hpp>
+#include <GLS.State.hpp>
+#include <GLS.Material.hpp>
+#include <GLS.Texture.hpp>
+#include <FRTrackBarEdit.hpp>
+#include <FRMaterialPreview.hpp>
+#include <FRColorEditor.hpp>
+#include <FRFaceEditor.hpp>
+#include <FRTextureEdit.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Fmmaterialeditor
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TGLMaterialEditorForm;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TGLMaterialEditorForm : public Vcl::Forms::TForm
+{
+	typedef Vcl::Forms::TForm inherited;
+	
+__published:
+	Vcl::Comctrls::TPageControl* PageControl1;
+	Vcl::Comctrls::TTabSheet* TSFront;
+	Vcl::Comctrls::TTabSheet* TSBack;
+	Vcl::Comctrls::TTabSheet* TSTexture;
+	Frfaceeditor::TRFaceEditor* FEFront;
+	Frfaceeditor::TRFaceEditor* FEBack;
+	Vcl::Stdctrls::TGroupBox* GroupBox1;
+	Frmaterialpreview::TRMaterialPreview* MPPreview;
+	Vcl::Buttons::TBitBtn* BBOk;
+	Vcl::Buttons::TBitBtn* BBCancel;
+	Frtextureedit::TRTextureEdit* RTextureEdit;
+	Vcl::Stdctrls::TComboBox* CBBlending;
+	Vcl::Stdctrls::TLabel* Label1;
+	Vcl::Stdctrls::TLabel* Label2;
+	Vcl::Stdctrls::TComboBox* CBPolygonMode;
+	void __fastcall OnMaterialChanged(System::TObject* Sender);
+	
+public:
+	__fastcall virtual TGLMaterialEditorForm(System::Classes::TComponent* AOwner);
+	bool __fastcall Execute(Gls::Material::TGLMaterial* AMaterial);
+public:
+	/* TCustomForm.CreateNew */ inline __fastcall virtual TGLMaterialEditorForm(System::Classes::TComponent* AOwner, int Dummy) : Vcl::Forms::TForm(AOwner, Dummy) { }
+	/* TCustomForm.CreateScaledNew */ inline __fastcall virtual TGLMaterialEditorForm(System::Classes::TComponent* AOwner, int ADPI, int Dummy) : Vcl::Forms::TForm(AOwner, ADPI, Dummy) { }
+	/* TCustomForm.Destroy */ inline __fastcall virtual ~TGLMaterialEditorForm() { }
+	
+public:
+	/* TWinControl.CreateParented */ inline __fastcall TGLMaterialEditorForm(HWND ParentWindow) : Vcl::Forms::TForm(ParentWindow) { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+extern DELPHI_PACKAGE TGLMaterialEditorForm* __fastcall GLMaterialEditorForm(void);
+extern DELPHI_PACKAGE void __fastcall ReleaseMaterialEditorForm(void);
+}	/* namespace Fmmaterialeditor */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMMATERIALEDITOR)
+using namespace Fmmaterialeditor;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FmMaterialEditorHPP

+ 233 - 0
include/Win32/FmSceneEditor.hpp

@@ -0,0 +1,233 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FmSceneEditor.pas' rev: 36.00 (Windows)
+
+#ifndef FmSceneEditorHPP
+#define FmSceneEditorHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <System.Win.Registry.hpp>
+#include <System.ImageList.hpp>
+#include <System.Actions.hpp>
+#include <Vcl.ActnList.hpp>
+#include <Vcl.Controls.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.ComCtrls.hpp>
+#include <Vcl.ImgList.hpp>
+#include <Vcl.Dialogs.hpp>
+#include <Vcl.Menus.hpp>
+#include <Vcl.ToolWin.hpp>
+#include <Vcl.ExtCtrls.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.Clipbrd.hpp>
+#include <DesignIntf.hpp>
+#include <VCLEditors.hpp>
+#include <GLS.Scene.hpp>
+#include <GLS.SceneViewer.hpp>
+#include <Stage.Strings.hpp>
+#include <FmInfo.hpp>
+#include <GLS.XCollection.hpp>
+#include <Stage.Utils.hpp>
+#include <GLS.SceneRegister.hpp>
+#include <System.Types.hpp>
+#include <System.UITypes.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Fmsceneeditor
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TGLSceneEditorForm;
+//-- type declarations -------------------------------------------------------
+typedef void __fastcall (__closure *TSetSubItemsEvent)(System::TObject* Sender);
+
+class PASCALIMPLEMENTATION TGLSceneEditorForm : public Vcl::Forms::TForm
+{
+	typedef Vcl::Forms::TForm inherited;
+	
+__published:
+	Vcl::Menus::TPopupMenu* PopupMenu;
+	Vcl::Menus::TMenuItem* MIAddObject;
+	Vcl::Menus::TMenuItem* N1;
+	Vcl::Menus::TMenuItem* MIDelObject;
+	Vcl::Comctrls::TToolBar* ToolBar;
+	Vcl::Actnlist::TActionList* ActionList;
+	Vcl::Comctrls::TToolButton* TBAddObjects;
+	Vcl::Comctrls::TToolButton* TBMoveUp;
+	Vcl::Menus::TPopupMenu* pmToolBar;
+	Vcl::Comctrls::TToolButton* TBDeleteObject;
+	Vcl::Comctrls::TToolButton* TBMoveDown;
+	Vcl::Actnlist::TAction* acAddObject;
+	Vcl::Controls::TImageList* ImageList;
+	Vcl::Actnlist::TAction* acDeleteObject;
+	Vcl::Actnlist::TAction* acMoveUp;
+	Vcl::Actnlist::TAction* acMoveDown;
+	Vcl::Menus::TMenuItem* N2;
+	Vcl::Menus::TMenuItem* MIMoveUp;
+	Vcl::Menus::TMenuItem* MIMoveDown;
+	Vcl::Actnlist::TAction* acSaveScene;
+	Vcl::Actnlist::TAction* acLoadScene;
+	Vcl::Dialogs::TOpenDialog* OpenDialog;
+	Vcl::Dialogs::TSaveDialog* SaveDialog;
+	Vcl::Comctrls::TToolButton* TBLoadScene;
+	Vcl::Comctrls::TToolButton* TBSaveScene;
+	Vcl::Actnlist::TAction* acInfo;
+	Vcl::Actnlist::TAction* acCopy;
+	Vcl::Actnlist::TAction* acCut;
+	Vcl::Actnlist::TAction* acPaste;
+	Vcl::Menus::TMenuItem* MICopy;
+	Vcl::Menus::TMenuItem* MIPaste;
+	Vcl::Menus::TMenuItem* MICut;
+	Vcl::Comctrls::TToolButton* TBCut;
+	Vcl::Comctrls::TToolButton* TBCopy;
+	Vcl::Comctrls::TToolButton* TBPaste;
+	Vcl::Menus::TPopupMenu* pmBehavioursToolbar;
+	Vcl::Actnlist::TAction* acAddBehaviour;
+	Vcl::Menus::TMenuItem* MIAddBehaviour;
+	Vcl::Menus::TMenuItem* MIAddEffect;
+	Vcl::Menus::TMenuItem* MIBehaviourSeparator;
+	Vcl::Actnlist::TAction* acDeleteBehaviour;
+	Vcl::Menus::TPopupMenu* pmBehaviours;
+	Vcl::Menus::TMenuItem* Delete1;
+	Vcl::Menus::TMenuItem* MoveUp1;
+	Vcl::Menus::TMenuItem* MoveDown1;
+	Vcl::Menus::TMenuItem* N4;
+	Vcl::Menus::TPopupMenu* pmEffectsToolbar;
+	Vcl::Actnlist::TAction* acAddEffect;
+	Vcl::Comctrls::TToolButton* TBCharacterPanels;
+	Vcl::Comctrls::TToolButton* TBStayOnTop;
+	Vcl::Actnlist::TAction* acStayOnTop;
+	Vcl::Comctrls::TToolButton* TBSeparator4;
+	Vcl::Comctrls::TToolButton* TBExpand;
+	Vcl::Actnlist::TAction* acExpand;
+	Vcl::Extctrls::TPanel* PATreeAll;
+	Vcl::Extctrls::TPanel* PATree;
+	Vcl::Comctrls::TTreeView* Tree;
+	Vcl::Comctrls::TToolButton* TBInfo;
+	Vcl::Extctrls::TPanel* PABehaviours;
+	Vcl::Comctrls::TToolBar* ToolBarBehaviours;
+	Vcl::Comctrls::TToolButton* TBAddBehaviours;
+	Vcl::Comctrls::TListView* BehavioursListView;
+	Vcl::Extctrls::TPanel* PAEffects;
+	Vcl::Comctrls::TListView* EffectsListView;
+	Vcl::Comctrls::TToolBar* ToolBarEffects;
+	Vcl::Comctrls::TToolButton* TBAddEffects;
+	Vcl::Comctrls::TToolButton* TBGalleryPanel;
+	Vcl::Comctrls::TTreeView* TreeAll;
+	void __fastcall FormCreate(System::TObject* Sender);
+	void __fastcall TreeEditing(System::TObject* Sender, Vcl::Comctrls::TTreeNode* Node, bool &AllowEdit);
+	void __fastcall TreeDragOver(System::TObject* Sender, System::TObject* Source, int X, int Y, System::Uitypes::TDragState State, bool &Accept);
+	void __fastcall TreeDragDrop(System::TObject* Sender, System::TObject* Source, int X, int Y);
+	void __fastcall TreeAllChange(System::TObject* Sender, Vcl::Comctrls::TTreeNode* Node);
+	void __fastcall TreeChange(System::TObject* Sender, Vcl::Comctrls::TTreeNode* Node);
+	void __fastcall TreeMouseDown(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, int X, int Y);
+	void __fastcall TreeEnter(System::TObject* Sender);
+	void __fastcall TreeMouseMove(System::TObject* Sender, System::Classes::TShiftState Shift, int X, int Y);
+	void __fastcall acDeleteObjectExecute(System::TObject* Sender);
+	void __fastcall acMoveUpExecute(System::TObject* Sender);
+	void __fastcall acMoveDownExecute(System::TObject* Sender);
+	void __fastcall acAddObjectExecute(System::TObject* Sender);
+	void __fastcall acSaveSceneExecute(System::TObject* Sender);
+	void __fastcall acLoadSceneExecute(System::TObject* Sender);
+	void __fastcall FormDestroy(System::TObject* Sender);
+	void __fastcall acInfoExecute(System::TObject* Sender);
+	void __fastcall acCopyExecute(System::TObject* Sender);
+	void __fastcall acCutExecute(System::TObject* Sender);
+	void __fastcall acPasteExecute(System::TObject* Sender);
+	void __fastcall BehavioursListViewEnter(System::TObject* Sender);
+	void __fastcall EffectsListViewEnter(System::TObject* Sender);
+	void __fastcall acAddBehaviourExecute(System::TObject* Sender);
+	void __fastcall DeleteBaseBehaviour(Vcl::Comctrls::TListView* ListView);
+	void __fastcall pmBehavioursToolbarPopup(System::TObject* Sender);
+	void __fastcall pmEffectsToolbarPopup(System::TObject* Sender);
+	void __fastcall BehavioursListViewSelectItem(System::TObject* Sender, Vcl::Comctrls::TListItem* Item, bool Selected);
+	void __fastcall acAddEffectExecute(System::TObject* Sender);
+	void __fastcall PopupMenuPopup(System::TObject* Sender);
+	void __fastcall TBCharacterPanelsClick(System::TObject* Sender);
+	void __fastcall TreeKeyDown(System::TObject* Sender, System::Word &Key, System::Classes::TShiftState Shift);
+	void __fastcall acStayOnTopExecute(System::TObject* Sender);
+	void __fastcall FormKeyDown(System::TObject* Sender, System::Word &Key, System::Classes::TShiftState Shift);
+	void __fastcall acExpandExecute(System::TObject* Sender);
+	
+private:
+	int FSelectedItems;
+	Gls::Scene::TGLScene* FScene;
+	Vcl::Comctrls::TTreeNode* FObjectNode;
+	Vcl::Comctrls::TTreeNode* FSceneObjects;
+	Designintf::_di_IDesigner FCurrentDesigner;
+	Winapi::Windows::TPoint FLastMouseDownPos;
+	System::Classes::TComponent* FPasteOwner;
+	Designintf::_di_IDesignerSelections FPasteSelection;
+	void __fastcall ReadScene();
+	void __fastcall ResetTree();
+	Vcl::Comctrls::TTreeNode* __fastcall AddNodesAll(Vcl::Comctrls::TTreeNode* ANode, Gls::Scene::TGLBaseSceneObject* AObject);
+	Vcl::Comctrls::TTreeNode* __fastcall AddNodes(Vcl::Comctrls::TTreeNode* ANode, Gls::Scene::TGLBaseSceneObject* AObject);
+	void __fastcall AddObjectClick(System::TObject* Sender);
+	void __fastcall AddBehaviourClick(System::TObject* Sender);
+	void __fastcall AddEffectClick(System::TObject* Sender);
+	void __fastcall SetObjectsSubItems(Vcl::Menus::TMenuItem* parent);
+	void __fastcall SetXCollectionSubItems(Vcl::Menus::TMenuItem* parent, Gls::Xcollection::TXCollection* XCollection, TSetSubItemsEvent Event);
+	void __fastcall SetBehavioursSubItems(Vcl::Menus::TMenuItem* parent, Gls::Xcollection::TXCollection* XCollection);
+	void __fastcall SetEffectsSubItems(Vcl::Menus::TMenuItem* parent, Gls::Xcollection::TXCollection* XCollection);
+	void __fastcall OnBaseSceneObjectNameChanged(System::TObject* Sender);
+	bool __fastcall IsValidClipBoardNode();
+	bool __fastcall IsPastePossible();
+	void __fastcall ShowBehaviours(Gls::Scene::TGLBaseSceneObject* BaseSceneObject);
+	void __fastcall ShowEffects(Gls::Scene::TGLBaseSceneObject* BaseSceneObject);
+	void __fastcall ShowBehavioursAndEffects(Gls::Scene::TGLBaseSceneObject* BaseSceneObject);
+	void __fastcall EnableAndDisableActions();
+	bool __fastcall CanPaste(Gls::Scene::TGLBaseSceneObject* obj, Gls::Scene::TGLBaseSceneObject* destination);
+	void __fastcall CopyComponents(System::Classes::TComponent* Root, const Designintf::_di_IDesignerSelections Components);
+	void __fastcall MethodError(System::Classes::TReader* Reader, const System::UnicodeString MethodName, void * &Address, bool &Error);
+	bool __fastcall PasteComponents(System::Classes::TComponent* AOwner, System::Classes::TComponent* AParent, const Designintf::_di_IDesignerSelections Components);
+	void __fastcall ReaderSetName(System::Classes::TReader* Reader, System::Classes::TComponent* Component, System::UnicodeString &Name);
+	void __fastcall ComponentRead(System::Classes::TComponent* Component);
+	System::UnicodeString __fastcall UniqueName(System::Classes::TComponent* Component);
+	void __fastcall TreeEdited(System::TObject* Sender, Vcl::Comctrls::TTreeNode* Node, System::UnicodeString &S);
+	
+protected:
+	virtual void __fastcall Notification(System::Classes::TComponent* AComponent, System::Classes::TOperation Operation);
+	
+public:
+	void __fastcall SetScene(Gls::Scene::TGLScene* Scene, Designintf::_di_IDesigner Designer);
+public:
+	/* TCustomForm.Create */ inline __fastcall virtual TGLSceneEditorForm(System::Classes::TComponent* AOwner) : Vcl::Forms::TForm(AOwner) { }
+	/* TCustomForm.CreateNew */ inline __fastcall virtual TGLSceneEditorForm(System::Classes::TComponent* AOwner, int Dummy) : Vcl::Forms::TForm(AOwner, Dummy) { }
+	/* TCustomForm.CreateScaledNew */ inline __fastcall virtual TGLSceneEditorForm(System::Classes::TComponent* AOwner, int ADPI, int Dummy) : Vcl::Forms::TForm(AOwner, ADPI, Dummy) { }
+	/* TCustomForm.Destroy */ inline __fastcall virtual ~TGLSceneEditorForm() { }
+	
+public:
+	/* TWinControl.CreateParented */ inline __fastcall TGLSceneEditorForm(HWND ParentWindow) : Vcl::Forms::TForm(ParentWindow) { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+static _DELPHI_CONST System::Int8 SCENE_SELECTED = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 BEHAVIOURS_SELECTED = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 EFFECTS_SELECTED = System::Int8(0x2);
+extern DELPHI_PACKAGE TGLSceneEditorForm* __fastcall GLSceneEditorForm(void);
+extern DELPHI_PACKAGE void __fastcall ReleaseGLSceneEditorForm(void);
+}	/* namespace Fmsceneeditor */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMSCENEEDITOR)
+using namespace Fmsceneeditor;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FmSceneEditorHPP

+ 136 - 0
include/Win32/FmShaderMemo.hpp

@@ -0,0 +1,136 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FmShaderMemo.pas' rev: 36.00 (Windows)
+
+#ifndef FmShaderMemoHPP
+#define FmShaderMemoHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+#include <Winapi.Messages.hpp>
+#include <System.SysUtils.hpp>
+#include <System.Variants.hpp>
+#include <System.Classes.hpp>
+#include <System.Win.Registry.hpp>
+#include <Vcl.Controls.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.ComCtrls.hpp>
+#include <Vcl.ImgList.hpp>
+#include <Vcl.Dialogs.hpp>
+#include <Vcl.Menus.hpp>
+#include <Vcl.ActnList.hpp>
+#include <Vcl.ToolWin.hpp>
+#include <Vcl.ExtCtrls.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.Graphics.hpp>
+#include <GLS.Memo.hpp>
+#include <System.Types.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Fmshadermemo
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TShaderMemoForm;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TShaderMemoForm : public Vcl::Forms::TForm
+{
+	typedef Vcl::Forms::TForm inherited;
+	
+__published:
+	Vcl::Controls::TImageList* ImageList;
+	Vcl::Comctrls::TToolBar* ToolBar;
+	Vcl::Comctrls::TToolButton* TBOpen;
+	Vcl::Comctrls::TToolButton* TBSave;
+	Vcl::Comctrls::TToolButton* TBStayOnTop;
+	Vcl::Comctrls::TToolButton* TBHelp;
+	Vcl::Comctrls::TToolButton* ToolButton2;
+	Vcl::Comctrls::TToolButton* TBCopy;
+	Vcl::Comctrls::TToolButton* TBPaste;
+	Vcl::Comctrls::TToolButton* TBCut;
+	Vcl::Comctrls::TToolButton* ToolButton10;
+	Vcl::Comctrls::TToolButton* TBTemplate;
+	Vcl::Comctrls::TToolButton* TBUndo;
+	Vcl::Comctrls::TToolButton* TBRedo;
+	Vcl::Comctrls::TToolButton* ToolButton4;
+	Gls::Memo::TGLSSynHiMemo* GLSLMemo;
+	Vcl::Dialogs::TOpenDialog* OpenDialog;
+	Vcl::Dialogs::TSaveDialog* SaveDialog;
+	Vcl::Menus::TPopupMenu* TemplateMenu;
+	Vcl::Menus::TMenuItem* GLSL120;
+	Vcl::Menus::TMenuItem* GLSL330;
+	Vcl::Menus::TMenuItem* GLSL400;
+	Vcl::Menus::TMenuItem* N1;
+	Vcl::Menus::TMenuItem* N2;
+	Vcl::Stdctrls::TMemo* CompilatorLog;
+	Vcl::Comctrls::TToolButton* TBIncIndent;
+	Vcl::Comctrls::TToolButton* TBDecIndent;
+	Vcl::Comctrls::TToolButton* TBComment;
+	Vcl::Comctrls::TToolButton* TBUncoment;
+	Vcl::Comctrls::TToolButton* ToolButton1;
+	Vcl::Extctrls::TPanel* Panel1;
+	Vcl::Stdctrls::TButton* CancelButton;
+	Vcl::Stdctrls::TButton* OKButton;
+	Vcl::Stdctrls::TButton* CheckButton;
+	void __fastcall FormCreate(System::TObject* Sender);
+	void __fastcall FormDestroy(System::TObject* Sender);
+	void __fastcall GLSLMemoGutterClick(System::TObject* Sender, int LineNo);
+	void __fastcall GLSLMemoGutterDraw(System::TObject* Sender, Vcl::Graphics::TCanvas* ACanvas, int LineNo, const Winapi::Windows::TRect &rct);
+	void __fastcall TBOpenClick(System::TObject* Sender);
+	void __fastcall TBSaveClick(System::TObject* Sender);
+	void __fastcall TBStayOnTopClick(System::TObject* Sender);
+	void __fastcall TBUndoClick(System::TObject* Sender);
+	void __fastcall GLSLMemoUndoChange(System::TObject* Sender, bool CanUndo, bool CanRedo);
+	void __fastcall TBRedoClick(System::TObject* Sender);
+	void __fastcall TBCopyClick(System::TObject* Sender);
+	void __fastcall TBPasteClick(System::TObject* Sender);
+	void __fastcall TBCutClick(System::TObject* Sender);
+	void __fastcall CheckButtonClick(System::TObject* Sender);
+	void __fastcall TBIncIndentClick(System::TObject* Sender);
+	void __fastcall TBDecIndentClick(System::TObject* Sender);
+	void __fastcall TBCommentClick(System::TObject* Sender);
+	void __fastcall TBUncomentClick(System::TObject* Sender);
+	void __fastcall FormShow(System::TObject* Sender);
+	
+private:
+	int FLightLineStyle;
+	System::Classes::TNotifyEvent FOnCheck;
+	void __fastcall OnTemplateClick(System::TObject* Sender);
+	
+public:
+	__property System::Classes::TNotifyEvent OnCheck = {read=FOnCheck, write=FOnCheck};
+public:
+	/* TCustomForm.Create */ inline __fastcall virtual TShaderMemoForm(System::Classes::TComponent* AOwner) : Vcl::Forms::TForm(AOwner) { }
+	/* TCustomForm.CreateNew */ inline __fastcall virtual TShaderMemoForm(System::Classes::TComponent* AOwner, int Dummy) : Vcl::Forms::TForm(AOwner, Dummy) { }
+	/* TCustomForm.CreateScaledNew */ inline __fastcall virtual TShaderMemoForm(System::Classes::TComponent* AOwner, int ADPI, int Dummy) : Vcl::Forms::TForm(AOwner, ADPI, Dummy) { }
+	/* TCustomForm.Destroy */ inline __fastcall virtual ~TShaderMemoForm() { }
+	
+public:
+	/* TWinControl.CreateParented */ inline __fastcall TShaderMemoForm(HWND ParentWindow) : Vcl::Forms::TForm(ParentWindow) { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+extern DELPHI_PACKAGE TShaderMemoForm* __fastcall GLShaderEditorForm(void);
+extern DELPHI_PACKAGE void __fastcall ReleaseGLShaderEditor(void);
+}	/* namespace Fmshadermemo */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMSHADERMEMO)
+using namespace Fmshadermemo;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FmShaderMemoHPP

+ 107 - 0
include/Win32/FmShaderUniformEditor.hpp

@@ -0,0 +1,107 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FmShaderUniformEditor.pas' rev: 36.00 (Windows)
+
+#ifndef FmShaderUniformEditorHPP
+#define FmShaderUniformEditorHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.SysUtils.hpp>
+#include <System.Variants.hpp>
+#include <System.Classes.hpp>
+#include <Vcl.Graphics.hpp>
+#include <Vcl.Controls.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.Dialogs.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.ExtCtrls.hpp>
+#include <Vcl.Buttons.hpp>
+#include <Stage.Strings.hpp>
+#include <GLSL.ShaderParameter.hpp>
+#include <Stage.TextureFormat.hpp>
+#include <Stage.VectorGeometry.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Fmshaderuniformeditor
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TGLShaderUniformEditor;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TGLShaderUniformEditor : public Vcl::Forms::TForm
+{
+	typedef Vcl::Forms::TForm inherited;
+	
+	
+private:
+	typedef System::DynamicArray<Glsl::Shaderparameter::_di_IShaderParameter> _TGLShaderUniformEditor__1;
+	
+	
+__published:
+	Vcl::Stdctrls::TListBox* LBUniforms;
+	Vcl::Stdctrls::TLabel* Labe1;
+	Vcl::Stdctrls::TComboBox* AutoSetBox;
+	Vcl::Stdctrls::TComboBox* SamplerBox;
+	Vcl::Extctrls::TPanel* Panel1;
+	Vcl::Extctrls::TRadioGroup* RedGroup;
+	Vcl::Extctrls::TRadioGroup* GreenGroup;
+	Vcl::Extctrls::TRadioGroup* BlueGroup;
+	Vcl::Extctrls::TRadioGroup* AlphaGroup;
+	Vcl::Stdctrls::TLabel* Label1;
+	Vcl::Stdctrls::TLabel* Label2;
+	Vcl::Stdctrls::TLabel* Label3;
+	Vcl::Stdctrls::TLabel* Label4;
+	Vcl::Stdctrls::TComboBox* TextureBox;
+	Vcl::Stdctrls::TButton* Button1;
+	void __fastcall FormDestroy(System::TObject* Sender);
+	void __fastcall LBUniformsClick(System::TObject* Sender);
+	void __fastcall ColorGroupClick(System::TObject* Sender);
+	void __fastcall AutoSetBoxChange(System::TObject* Sender);
+	void __fastcall TextureBoxChange(System::TObject* Sender);
+	void __fastcall SamplerBoxChange(System::TObject* Sender);
+	void __fastcall LBUniformsKeyPress(System::TObject* Sender, System::WideChar &Key);
+	
+private:
+	_TGLShaderUniformEditor__1 FUniformList;
+	
+public:
+	void __fastcall Clear();
+	void __fastcall AddTextureName(const System::UnicodeString S);
+	void __fastcall AddSamplerName(const System::UnicodeString S);
+	void __fastcall AddUniform(Glsl::Shaderparameter::_di_IShaderParameter AValue);
+	void __fastcall Execute();
+public:
+	/* TCustomForm.Create */ inline __fastcall virtual TGLShaderUniformEditor(System::Classes::TComponent* AOwner) : Vcl::Forms::TForm(AOwner) { }
+	/* TCustomForm.CreateNew */ inline __fastcall virtual TGLShaderUniformEditor(System::Classes::TComponent* AOwner, int Dummy) : Vcl::Forms::TForm(AOwner, Dummy) { }
+	/* TCustomForm.CreateScaledNew */ inline __fastcall virtual TGLShaderUniformEditor(System::Classes::TComponent* AOwner, int ADPI, int Dummy) : Vcl::Forms::TForm(AOwner, ADPI, Dummy) { }
+	/* TCustomForm.Destroy */ inline __fastcall virtual ~TGLShaderUniformEditor() { }
+	
+public:
+	/* TWinControl.CreateParented */ inline __fastcall TGLShaderUniformEditor(HWND ParentWindow) : Vcl::Forms::TForm(ParentWindow) { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+extern DELPHI_PACKAGE TGLShaderUniformEditor* __fastcall GLShaderUniformEditor(void);
+extern DELPHI_PACKAGE void __fastcall ReleaseShaderUniformEditor(void);
+}	/* namespace Fmshaderuniformeditor */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMSHADERUNIFORMEDITOR)
+using namespace Fmshaderuniformeditor;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FmShaderUniformEditorHPP

+ 113 - 0
include/Win32/FmVectorEditor.hpp

@@ -0,0 +1,113 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FmVectorEditor.pas' rev: 36.00 (Windows)
+
+#ifndef FmVectorEditorHPP
+#define FmVectorEditorHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.ComCtrls.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.ToolWin.hpp>
+#include <Vcl.ExtCtrls.hpp>
+#include <Vcl.Buttons.hpp>
+#include <Vcl.Graphics.hpp>
+#include <Vcl.Controls.hpp>
+#include <Stage.VectorGeometry.hpp>
+#include <Stage.Utils.hpp>
+#include <Stage.VectorTypes.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Fmvectoreditor
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TGLVectorEditorForm;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TGLVectorEditorForm : public Vcl::Forms::TForm
+{
+	typedef Vcl::Forms::TForm inherited;
+	
+__published:
+	Vcl::Stdctrls::TEdit* EDx;
+	Vcl::Stdctrls::TLabel* Label1;
+	Vcl::Stdctrls::TLabel* Label2;
+	Vcl::Stdctrls::TLabel* Label3;
+	Vcl::Stdctrls::TEdit* EDy;
+	Vcl::Stdctrls::TEdit* EDz;
+	Vcl::Buttons::TBitBtn* BBok;
+	Vcl::Buttons::TBitBtn* BBcancel;
+	Vcl::Extctrls::TImage* IMx;
+	Vcl::Extctrls::TImage* IMy;
+	Vcl::Extctrls::TImage* IMz;
+	Vcl::Buttons::TSpeedButton* SpeedButton1;
+	Vcl::Buttons::TSpeedButton* SBmX;
+	Vcl::Buttons::TSpeedButton* SpeedButton3;
+	Vcl::Buttons::TSpeedButton* SBmY;
+	Vcl::Buttons::TSpeedButton* SpeedButton5;
+	Vcl::Buttons::TSpeedButton* SBmZ;
+	Vcl::Buttons::TSpeedButton* SpeedButton7;
+	Vcl::Buttons::TSpeedButton* SBUnit;
+	Vcl::Buttons::TSpeedButton* SpeedButton9;
+	Vcl::Extctrls::TBevel* Bevel1;
+	Vcl::Buttons::TSpeedButton* SBInvert;
+	void __fastcall TBxClick(System::TObject* Sender);
+	void __fastcall TByClick(System::TObject* Sender);
+	void __fastcall TBzClick(System::TObject* Sender);
+	void __fastcall TBnullClick(System::TObject* Sender);
+	void __fastcall EDxChange(System::TObject* Sender);
+	void __fastcall EDyChange(System::TObject* Sender);
+	void __fastcall EDzChange(System::TObject* Sender);
+	void __fastcall SBmXClick(System::TObject* Sender);
+	void __fastcall SBmYClick(System::TObject* Sender);
+	void __fastcall SBmZClick(System::TObject* Sender);
+	void __fastcall SBUnitClick(System::TObject* Sender);
+	void __fastcall SpeedButton9Click(System::TObject* Sender);
+	void __fastcall SBInvertClick(System::TObject* Sender);
+	
+private:
+	float vx;
+	float vy;
+	float vz;
+	void __fastcall TestInput(Vcl::Stdctrls::TEdit* edit, Vcl::Extctrls::TImage* imError, float &dest);
+	
+public:
+	bool __fastcall Execute(float &x, float &y, float &z);
+public:
+	/* TCustomForm.Create */ inline __fastcall virtual TGLVectorEditorForm(System::Classes::TComponent* AOwner) : Vcl::Forms::TForm(AOwner) { }
+	/* TCustomForm.CreateNew */ inline __fastcall virtual TGLVectorEditorForm(System::Classes::TComponent* AOwner, int Dummy) : Vcl::Forms::TForm(AOwner, Dummy) { }
+	/* TCustomForm.CreateScaledNew */ inline __fastcall virtual TGLVectorEditorForm(System::Classes::TComponent* AOwner, int ADPI, int Dummy) : Vcl::Forms::TForm(AOwner, ADPI, Dummy) { }
+	/* TCustomForm.Destroy */ inline __fastcall virtual ~TGLVectorEditorForm() { }
+	
+public:
+	/* TWinControl.CreateParented */ inline __fastcall TGLVectorEditorForm(HWND ParentWindow) : Vcl::Forms::TForm(ParentWindow) { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+extern DELPHI_PACKAGE TGLVectorEditorForm* __fastcall GLVectorEditorForm(void);
+extern DELPHI_PACKAGE void __fastcall ReleaseVectorEditorForm(void);
+}	/* namespace Fmvectoreditor */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMVECTOREDITOR)
+using namespace Fmvectoreditor;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FmVectorEditorHPP

+ 120 - 0
include/Win32/FmXCollectionEditor.hpp

@@ -0,0 +1,120 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'FmXCollectionEditor.pas' rev: 36.00 (Windows)
+
+#ifndef FmXCollectionEditorHPP
+#define FmXCollectionEditorHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <System.Actions.hpp>
+#include <System.ImageList.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.ImgList.hpp>
+#include <Vcl.Controls.hpp>
+#include <Vcl.ActnList.hpp>
+#include <Vcl.Menus.hpp>
+#include <Vcl.ComCtrls.hpp>
+#include <Vcl.ToolWin.hpp>
+#include <Vcl.Dialogs.hpp>
+#include <DesignIntf.hpp>
+#include <Stage.Strings.hpp>
+#include <GLS.Scene.hpp>
+#include <GLS.Behaviours.hpp>
+#include <GLS.MaterialEx.hpp>
+#include <GLS.XCollection.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Fmxcollectioneditor
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TXCollectionEditorForm;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TXCollectionEditorForm : public Vcl::Forms::TForm
+{
+	typedef Vcl::Forms::TForm inherited;
+	
+__published:
+	Vcl::Comctrls::TListView* ListView;
+	Vcl::Menus::TPopupMenu* PMListView;
+	Vcl::Actnlist::TActionList* ActionList;
+	Vcl::Actnlist::TAction* ACRemove;
+	Vcl::Actnlist::TAction* ACMoveUp;
+	Vcl::Actnlist::TAction* ACMoveDown;
+	Vcl::Controls::TImageList* ImageList;
+	Vcl::Menus::TMenuItem* MIAdd;
+	Vcl::Menus::TMenuItem* N1;
+	Vcl::Menus::TMenuItem* N2;
+	Vcl::Menus::TMenuItem* Moveup1;
+	Vcl::Menus::TMenuItem* Movedown1;
+	Vcl::Comctrls::TToolBar* ToolBar1;
+	Vcl::Comctrls::TToolButton* TBAdd;
+	Vcl::Comctrls::TToolButton* ToolButton2;
+	Vcl::Comctrls::TToolButton* ToolButton3;
+	Vcl::Comctrls::TToolButton* ToolButton4;
+	Vcl::Comctrls::TToolButton* ToolButton5;
+	Vcl::Comctrls::TToolButton* ToolButton6;
+	Vcl::Menus::TPopupMenu* PMToolBar;
+	void __fastcall TBAddClick(System::TObject* Sender);
+	void __fastcall ListViewChange(System::TObject* Sender, Vcl::Comctrls::TListItem* Item, Vcl::Comctrls::TItemChange Change);
+	void __fastcall ACRemoveExecute(System::TObject* Sender);
+	void __fastcall ACMoveUpExecute(System::TObject* Sender);
+	void __fastcall ACMoveDownExecute(System::TObject* Sender);
+	void __fastcall PMToolBarPopup(System::TObject* Sender);
+	void __fastcall PMListViewPopup(System::TObject* Sender);
+	void __fastcall FormCreate(System::TObject* Sender);
+	void __fastcall FormDestroy(System::TObject* Sender);
+	void __fastcall FormHide(System::TObject* Sender);
+	
+private:
+	Gls::Xcollection::TXCollection* FXCollection;
+	Designintf::_di_IDesigner FDesigner;
+	bool UpdatingListView;
+	void __fastcall PrepareListView();
+	void __fastcall PrepareXCollectionItemPopup(Vcl::Menus::TMenuItem* parent);
+	void __fastcall OnAddXCollectionItemClick(System::TObject* Sender);
+	void __fastcall OnNameChanged(System::TObject* Sender);
+	void __fastcall OnXCollectionDestroyed(System::TObject* Sender);
+	
+protected:
+	virtual void __fastcall Notification(System::Classes::TComponent* AComponent, System::Classes::TOperation Operation);
+	
+public:
+	void __fastcall SetXCollection(Gls::Xcollection::TXCollection* aXCollection, Designintf::_di_IDesigner designer);
+public:
+	/* TCustomForm.Create */ inline __fastcall virtual TXCollectionEditorForm(System::Classes::TComponent* AOwner) : Vcl::Forms::TForm(AOwner) { }
+	/* TCustomForm.CreateNew */ inline __fastcall virtual TXCollectionEditorForm(System::Classes::TComponent* AOwner, int Dummy) : Vcl::Forms::TForm(AOwner, Dummy) { }
+	/* TCustomForm.CreateScaledNew */ inline __fastcall virtual TXCollectionEditorForm(System::Classes::TComponent* AOwner, int ADPI, int Dummy) : Vcl::Forms::TForm(AOwner, ADPI, Dummy) { }
+	/* TCustomForm.Destroy */ inline __fastcall virtual ~TXCollectionEditorForm() { }
+	
+public:
+	/* TWinControl.CreateParented */ inline __fastcall TXCollectionEditorForm(HWND ParentWindow) : Vcl::Forms::TForm(ParentWindow) { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+extern DELPHI_PACKAGE TXCollectionEditorForm* __fastcall XCollectionEditorForm(void);
+extern DELPHI_PACKAGE void __fastcall ReleaseXCollectionEditor(void);
+}	/* namespace Fmxcollectioneditor */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMXCOLLECTIONEDITOR)
+using namespace Fmxcollectioneditor;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// FmXCollectionEditorHPP

+ 314 - 0
include/Win32/Formats.B3D.hpp

@@ -0,0 +1,314 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'Formats.B3D.pas' rev: 36.00 (Windows)
+
+#ifndef Formats_B3DHPP
+#define Formats_B3DHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <Stage.VectorGeometry.hpp>
+#include <Stage.VectorTypes.hpp>
+#include <GLS.VectorLists.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Formats
+{
+namespace B3d
+{
+//-- forward type declarations -----------------------------------------------
+struct TB3DChunk;
+struct TBB3DChunk;
+struct TTEXSChunk;
+struct TBRUSChunk;
+struct TVertexData;
+struct TVRTSChunk;
+struct TTRISChunk;
+struct TMESHChunk;
+struct TBONEChunk;
+struct TKEYSChunk;
+struct TANIMChunk;
+struct TNODEChunk;
+class DELPHICLASS TB3DMaterial;
+class DELPHICLASS TB3DTexture;
+class DELPHICLASS TB3DNode;
+class DELPHICLASS TFileB3D;
+//-- type declarations -------------------------------------------------------
+enum DECLSPEC_DENUM TB3DChunkType : unsigned char { bctUnknown, bctHeader, bctTexture, bctBrush, bctNode, bctVertex, bctTriangle, bctMesh, bctBone, bctKeyFrame, bctAnimation };
+
+typedef TB3DChunk *PB3DChunk;
+
+struct DECLSPEC_DRECORD TB3DChunk
+{
+public:
+	System::StaticArray<System::WideChar, 4> chunk;
+	int length;
+};
+
+
+typedef TBB3DChunk *PBB3DChunk;
+
+struct DECLSPEC_DRECORD TBB3DChunk
+{
+public:
+	int Version;
+};
+
+
+typedef TTEXSChunk *PTEXSChunk;
+
+struct DECLSPEC_DRECORD TTEXSChunk
+{
+public:
+	System::StaticArray<System::WideChar, 256> fileName;
+	int flags;
+	int blend;
+	float x_pos;
+	float y_pos;
+	float x_scale;
+	float y_scale;
+	float rotation;
+};
+
+
+typedef TBRUSChunk *PBRUSChunk;
+
+struct DECLSPEC_DRECORD TBRUSChunk
+{
+	
+private:
+	typedef System::DynamicArray<int> _TBRUSChunk__1;
+	
+	
+public:
+	int n_texs;
+	System::StaticArray<System::WideChar, 256> name;
+	float red;
+	float green;
+	float blue;
+	float alpha;
+	float shininess;
+	int blend;
+	int fx;
+	_TBRUSChunk__1 texture_id;
+};
+
+
+typedef TVertexData *PVertexData;
+
+struct DECLSPEC_DRECORD TVertexData
+{
+	
+private:
+	typedef System::DynamicArray<float> _TVertexData__1;
+	
+	
+public:
+	PVertexData next;
+	float x;
+	float y;
+	float z;
+	float nx;
+	float ny;
+	float nz;
+	float red;
+	float green;
+	float blue;
+	float alpha;
+	_TVertexData__1 tex_coords;
+};
+
+
+typedef TVRTSChunk *PVRTSChunk;
+
+struct DECLSPEC_DRECORD TVRTSChunk
+{
+public:
+	int flags;
+	int tex_coord_sets;
+	int tex_coord_set_size;
+	PVertexData vertices;
+};
+
+
+typedef TTRISChunk *PTRISChunk;
+
+struct DECLSPEC_DRECORD TTRISChunk
+{
+	
+private:
+	typedef System::DynamicArray<int> _TTRISChunk__1;
+	
+	
+public:
+	PTRISChunk next;
+	int brush_id;
+	_TTRISChunk__1 vertex_id;
+};
+
+
+typedef TMESHChunk *PMESHChunk;
+
+struct DECLSPEC_DRECORD TMESHChunk
+{
+public:
+	int brush_id;
+	TVRTSChunk vertices;
+	PTRISChunk triangles;
+};
+
+
+typedef TBONEChunk *PBONEChunk;
+
+struct DECLSPEC_DRECORD TBONEChunk
+{
+public:
+	int vertex_id;
+	float weight;
+};
+
+
+typedef TKEYSChunk *PKEYSChunk;
+
+struct DECLSPEC_DRECORD TKEYSChunk
+{
+public:
+	PKEYSChunk next;
+	int flags;
+	int frame;
+	Stage::Vectorgeometry::TAffineVector position;
+	Stage::Vectorgeometry::TAffineVector scale;
+	Stage::Vectortypes::TGLVector rotation;
+};
+
+
+typedef TANIMChunk *PANIMChunk;
+
+struct DECLSPEC_DRECORD TANIMChunk
+{
+public:
+	int flags;
+	int frames;
+	float fps;
+};
+
+
+typedef TNODEChunk *PNODEChunk;
+
+struct DECLSPEC_DRECORD TNODEChunk
+{
+public:
+	System::StaticArray<System::WideChar, 256> name;
+	Stage::Vectorgeometry::TAffineVector position;
+	Stage::Vectorgeometry::TAffineVector scale;
+	Stage::Vectortypes::TGLVector rotation;
+	PMESHChunk meshes;
+	PKEYSChunk keys;
+	PNODEChunk nodes;
+	TANIMChunk animation;
+	PNODEChunk next;
+	int level;
+};
+
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TB3DMaterial : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+public:
+	TBRUSChunk MaterialData;
+	__fastcall TB3DMaterial();
+	__fastcall virtual ~TB3DMaterial();
+	System::UnicodeString __fastcall GetMaterialName();
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TB3DTexture : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+public:
+	TTEXSChunk TextureData;
+	__fastcall TB3DTexture();
+	__fastcall virtual ~TB3DTexture();
+	System::UnicodeString __fastcall GetTextureName();
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TB3DNode : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+public:
+	PNODEChunk NodeData;
+	__fastcall TB3DNode();
+	__fastcall virtual ~TB3DNode();
+	System::UnicodeString __fastcall GetNodeName();
+	void __fastcall DestroyNodeData(PNODEChunk Node);
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TFileB3D : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+private:
+	System::Classes::TStringList* fTextures;
+	System::Classes::TStringList* fMaterials;
+	TB3DNode* fNodes;
+	void __fastcall FreeLists();
+	TB3DChunkType __fastcall GetChunkType(const TB3DChunk &aChunk);
+	int __fastcall SkipChunk(System::Classes::TStream* aStream, const TB3DChunk &aChunk);
+	int __fastcall ReadTextureChunk(System::Classes::TStream* aStream, const TB3DChunk &aChunk);
+	int __fastcall ReadMaterialChunk(System::Classes::TStream* aStream, const TB3DChunk &aChunk);
+	int __fastcall ReadNodeChunk(System::Classes::TStream* aStream, const TB3DChunk &aChunk, PNODEChunk Node, int level);
+	int __fastcall ReadMeshChunk(System::Classes::TStream* aStream, const TB3DChunk &aChunk, PMESHChunk Mesh);
+	int __fastcall ReadVerticesChunk(System::Classes::TStream* aStream, const TB3DChunk &aChunk, PVRTSChunk Vertices);
+	int __fastcall ReadTrianglesChunk(System::Classes::TStream* aStream, const TB3DChunk &aChunk, PTRISChunk Triangle);
+	
+public:
+	__fastcall virtual TFileB3D();
+	__fastcall virtual ~TFileB3D();
+	void __fastcall LoadFromStream(System::Classes::TStream* aStream);
+	void __fastcall Check();
+	__property System::Classes::TStringList* Textures = {read=fTextures};
+	__property System::Classes::TStringList* Materials = {read=fMaterials};
+	__property TB3DNode* Nodes = {read=fNodes};
+};
+
+#pragma pack(pop)
+
+//-- var, const, procedure ---------------------------------------------------
+}	/* namespace B3d */
+}	/* namespace Formats */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS_B3D)
+using namespace Formats::B3d;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS)
+using namespace Formats;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// Formats_B3DHPP

+ 94 - 0
include/Win32/Formats.DDSImage.hpp

@@ -0,0 +1,94 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'Formats.DDSImage.pas' rev: 36.00 (Windows)
+
+#ifndef Formats_DDSImageHPP
+#define Formats_DDSImageHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <Vcl.Graphics.hpp>
+#include <Stage.VectorTypes.hpp>
+#include <Stage.OpenGLTokens.hpp>
+#include <Stage.VectorGeometry.hpp>
+#include <GLS.Graphics.hpp>
+#include <GLS.Context.hpp>
+#include <GLS.FileDDS.hpp>
+#include <Stage.TextureFormat.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Formats
+{
+namespace Ddsimage
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TDDSImage;
+class DELPHICLASS EDDSException;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TDDSImage : public Vcl::Graphics::TBitmap
+{
+	typedef Vcl::Graphics::TBitmap inherited;
+	
+public:
+	virtual void __fastcall LoadFromStream(System::Classes::TStream* stream);
+	virtual void __fastcall SaveToStream(System::Classes::TStream* stream);
+public:
+	/* TBitmap.Create */ inline __fastcall virtual TDDSImage()/* overload */ : Vcl::Graphics::TBitmap() { }
+	/* TBitmap.Create */ inline __fastcall TDDSImage(int AWidth, int AHeight)/* overload */ : Vcl::Graphics::TBitmap(AWidth, AHeight) { }
+	/* TBitmap.Destroy */ inline __fastcall virtual ~TDDSImage() { }
+	
+};
+
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION EDDSException : public System::Sysutils::Exception
+{
+	typedef System::Sysutils::Exception inherited;
+	
+public:
+	/* Exception.Create */ inline __fastcall EDDSException(const System::UnicodeString Msg) : System::Sysutils::Exception(Msg) { }
+	/* Exception.CreateFmt */ inline __fastcall EDDSException(const System::UnicodeString Msg, const System::TVarRec *Args, const System::NativeInt Args_High) : System::Sysutils::Exception(Msg, Args, Args_High) { }
+	/* Exception.CreateRes */ inline __fastcall EDDSException(System::NativeUInt Ident)/* overload */ : System::Sysutils::Exception(Ident) { }
+	/* Exception.CreateRes */ inline __fastcall EDDSException(System::PResStringRec ResStringRec)/* overload */ : System::Sysutils::Exception(ResStringRec) { }
+	/* Exception.CreateResFmt */ inline __fastcall EDDSException(System::NativeUInt Ident, const System::TVarRec *Args, const System::NativeInt Args_High)/* overload */ : System::Sysutils::Exception(Ident, Args, Args_High) { }
+	/* Exception.CreateResFmt */ inline __fastcall EDDSException(System::PResStringRec ResStringRec, const System::TVarRec *Args, const System::NativeInt Args_High)/* overload */ : System::Sysutils::Exception(ResStringRec, Args, Args_High) { }
+	/* Exception.CreateHelp */ inline __fastcall EDDSException(const System::UnicodeString Msg, int AHelpContext) : System::Sysutils::Exception(Msg, AHelpContext) { }
+	/* Exception.CreateFmtHelp */ inline __fastcall EDDSException(const System::UnicodeString Msg, const System::TVarRec *Args, const System::NativeInt Args_High, int AHelpContext) : System::Sysutils::Exception(Msg, Args, Args_High, AHelpContext) { }
+	/* Exception.CreateResHelp */ inline __fastcall EDDSException(System::NativeUInt Ident, int AHelpContext)/* overload */ : System::Sysutils::Exception(Ident, AHelpContext) { }
+	/* Exception.CreateResHelp */ inline __fastcall EDDSException(System::PResStringRec ResStringRec, int AHelpContext)/* overload */ : System::Sysutils::Exception(ResStringRec, AHelpContext) { }
+	/* Exception.CreateResFmtHelp */ inline __fastcall EDDSException(System::PResStringRec ResStringRec, const System::TVarRec *Args, const System::NativeInt Args_High, int AHelpContext)/* overload */ : System::Sysutils::Exception(ResStringRec, Args, Args_High, AHelpContext) { }
+	/* Exception.CreateResFmtHelp */ inline __fastcall EDDSException(System::NativeUInt Ident, const System::TVarRec *Args, const System::NativeInt Args_High, int AHelpContext)/* overload */ : System::Sysutils::Exception(Ident, Args, Args_High, AHelpContext) { }
+	/* Exception.Destroy */ inline __fastcall virtual ~EDDSException() { }
+	
+};
+
+#pragma pack(pop)
+
+//-- var, const, procedure ---------------------------------------------------
+}	/* namespace Ddsimage */
+}	/* namespace Formats */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS_DDSIMAGE)
+using namespace Formats::Ddsimage;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS)
+using namespace Formats;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// Formats_DDSImageHPP

+ 341 - 0
include/Win32/Formats.DXTC.hpp

@@ -0,0 +1,341 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'Formats.DXTC.pas' rev: 36.00 (Windows)
+
+#ifndef Formats_DXTCHPP
+#define Formats_DXTCHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.OpenGL.hpp>
+#include <Winapi.OpenGLext.hpp>
+#include <System.SysUtils.hpp>
+#include <Stage.TextureFormat.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Formats
+{
+namespace Dxtc
+{
+//-- forward type declarations -----------------------------------------------
+struct TDDPIXELFORMAT;
+struct TDDSURFACEDESC2;
+struct TDDSHeader;
+struct DXTColBlock;
+struct DXT3AlphaBlock;
+struct DXT5AlphaBlock;
+struct TDDS_HEADER_DXT10;
+struct TGLImageDataFormat;
+//-- type declarations -------------------------------------------------------
+struct DECLSPEC_DRECORD TDDPIXELFORMAT
+{
+public:
+	unsigned dwSize;
+	unsigned dwFlags;
+	unsigned dwFourCC;
+	unsigned dwRGBBitCount;
+	unsigned dwRBitMask;
+	unsigned dwGBitMask;
+	unsigned dwBBitMask;
+	unsigned dwRGBAlphaBitMask;
+};
+
+
+struct DECLSPEC_DRECORD TDDSURFACEDESC2
+{
+public:
+	unsigned dwSize;
+	unsigned dwFlags;
+	unsigned dwHeight;
+	unsigned dwWidth;
+	unsigned dwPitchOrLinearSize;
+	unsigned dwDepth;
+	unsigned dwMipMapCount;
+	System::StaticArray<unsigned, 11> dwReserved1;
+	TDDPIXELFORMAT ddpf;
+	unsigned dwCaps;
+	unsigned dwCaps2;
+	unsigned dwCaps3;
+	unsigned dwCaps4;
+	unsigned dwReserved2;
+};
+
+
+struct DECLSPEC_DRECORD TDDSHeader
+{
+public:
+	unsigned Magic;
+	TDDSURFACEDESC2 SurfaceFormat;
+};
+
+
+struct DECLSPEC_DRECORD DXTColBlock
+{
+public:
+	System::Word col0;
+	System::Word col1;
+	System::StaticArray<System::Byte, 4> row;
+};
+
+
+typedef DXTColBlock *PDXTColBlock;
+
+struct DECLSPEC_DRECORD DXT3AlphaBlock
+{
+public:
+	System::StaticArray<System::Word, 4> row;
+};
+
+
+typedef DXT3AlphaBlock *PDXT3AlphaBlock;
+
+struct DECLSPEC_DRECORD DXT5AlphaBlock
+{
+public:
+	System::Byte alpha0;
+	System::Byte alpha1;
+	System::StaticArray<System::Byte, 6> row;
+};
+
+
+typedef DXT5AlphaBlock *PDXT5AlphaBlock;
+
+struct DECLSPEC_DRECORD TDDS_HEADER_DXT10
+{
+public:
+	int dxgiFormat;
+	int resourceDimension;
+	unsigned miscFlag;
+	unsigned arraySize;
+	unsigned reserved;
+};
+
+
+typedef System::StaticArray<char, 4> TFOURCC;
+
+struct DECLSPEC_DRECORD TGLImageDataFormat
+{
+public:
+	unsigned ColorFlag;
+	unsigned RBits;
+	unsigned GBits;
+	unsigned BBits;
+	unsigned ABits;
+	unsigned colorFormat;
+	Stage::Textureformat::TglInternalFormat TexFormat;
+	unsigned dType;
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+static _DELPHI_CONST System::Int8 DDSD_CAPS = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 DDSD_HEIGHT = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 DDSD_WIDTH = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 DDSD_PITCH = System::Int8(0x8);
+static _DELPHI_CONST System::Word DDSD_PIXELFORMAT = System::Word(0x1000);
+static _DELPHI_CONST int DDSD_MIPMAPCOUNT = int(0x20000);
+static _DELPHI_CONST int DDSD_LINEARSIZE = int(0x80000);
+static _DELPHI_CONST int DDSD_DEPTH = int(0x800000);
+static _DELPHI_CONST System::Int8 DDPF_ALPHAPIXELS = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 DDPF_A = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 DDPF_FOURCC = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 DDPF_RGB = System::Int8(0x40);
+static _DELPHI_CONST System::Int8 DDPF_RGBA = System::Int8(0x41);
+static _DELPHI_CONST int DDPF_L = int(0x20000);
+static _DELPHI_CONST int DDPF_LA = int(0x20001);
+static _DELPHI_CONST System::Int8 DDSCAPS_COMPLEX = System::Int8(0x8);
+static _DELPHI_CONST System::Word DDSCAPS_TEXTURE = System::Word(0x1000);
+static _DELPHI_CONST int DDSCAPS_MIPMAP = int(0x400000);
+static _DELPHI_CONST System::Word DDSCAPS2_CUBEMAP = System::Word(0x200);
+static _DELPHI_CONST System::Word DDSCAPS2_CUBEMAP_POSITIVEX = System::Word(0x400);
+static _DELPHI_CONST System::Word DDSCAPS2_CUBEMAP_NEGATIVEX = System::Word(0x800);
+static _DELPHI_CONST System::Word DDSCAPS2_CUBEMAP_POSITIVEY = System::Word(0x1000);
+static _DELPHI_CONST System::Word DDSCAPS2_CUBEMAP_NEGATIVEY = System::Word(0x2000);
+static _DELPHI_CONST System::Word DDSCAPS2_CUBEMAP_POSITIVEZ = System::Word(0x4000);
+static _DELPHI_CONST System::Word DDSCAPS2_CUBEMAP_NEGATIVEZ = System::Word(0x8000);
+static _DELPHI_CONST int DDSCAPS2_VOLUME = int(0x200000);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_FORCE_UINT = System::Int8(-1);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_UNKNOWN = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32G32B32A32_TYPELESS = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32G32B32A32_FLOAT = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32G32B32A32_UINT = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32G32B32A32_SINT = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32G32B32_TYPELESS = System::Int8(0x5);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32G32B32_FLOAT = System::Int8(0x6);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32G32B32_UINT = System::Int8(0x7);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32G32B32_SINT = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16G16B16A16_TYPELESS = System::Int8(0x9);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16G16B16A16_FLOAT = System::Int8(0xa);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16G16B16A16_UNORM = System::Int8(0xb);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16G16B16A16_UINT = System::Int8(0xc);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16G16B16A16_SNORM = System::Int8(0xd);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16G16B16A16_SINT = System::Int8(0xe);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32G32_TYPELESS = System::Int8(0xf);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32G32_FLOAT = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32G32_UINT = System::Int8(0x11);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32G32_SINT = System::Int8(0x12);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32G8X24_TYPELESS = System::Int8(0x13);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_D32_FLOAT_S8X24_UINT = System::Int8(0x14);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = System::Int8(0x15);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = System::Int8(0x16);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R10G10B10A2_TYPELESS = System::Int8(0x17);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R10G10B10A2_UNORM = System::Int8(0x18);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R10G10B10A2_UINT = System::Int8(0x19);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R11G11B10_FLOAT = System::Int8(0x1a);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8G8B8A8_TYPELESS = System::Int8(0x1b);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8G8B8A8_UNORM = System::Int8(0x1c);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = System::Int8(0x1d);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8G8B8A8_UINT = System::Int8(0x1e);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8G8B8A8_SNORM = System::Int8(0x1f);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8G8B8A8_SINT = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16G16_TYPELESS = System::Int8(0x21);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16G16_FLOAT = System::Int8(0x22);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16G16_UNORM = System::Int8(0x23);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16G16_UINT = System::Int8(0x24);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16G16_SNORM = System::Int8(0x25);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16G16_SINT = System::Int8(0x26);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32_TYPELESS = System::Int8(0x27);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_D32_FLOAT = System::Int8(0x28);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32_FLOAT = System::Int8(0x29);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32_UINT = System::Int8(0x2a);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R32_SINT = System::Int8(0x2b);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R24G8_TYPELESS = System::Int8(0x2c);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_D24_UNORM_S8_UINT = System::Int8(0x2d);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R24_UNORM_X8_TYPELESS = System::Int8(0x2e);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_X24_TYPELESS_G8_UINT = System::Int8(0x2f);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8G8_TYPELESS = System::Int8(0x30);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8G8_UNORM = System::Int8(0x31);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8G8_UINT = System::Int8(0x32);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8G8_SNORM = System::Int8(0x33);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8G8_SINT = System::Int8(0x34);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16_TYPELESS = System::Int8(0x35);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16_FLOAT = System::Int8(0x36);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_D16_UNORM = System::Int8(0x37);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16_UNORM = System::Int8(0x38);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16_UINT = System::Int8(0x39);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16_SNORM = System::Int8(0x3a);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R16_SINT = System::Int8(0x3b);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8_TYPELESS = System::Int8(0x3c);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8_UNORM = System::Int8(0x3d);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8_UINT = System::Int8(0x3e);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8_SNORM = System::Int8(0x3f);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8_SINT = System::Int8(0x40);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_A8_UNORM = System::Int8(0x41);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R1_UNORM = System::Int8(0x42);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R9G9B9E5_SHAREDEXP = System::Int8(0x43);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R8G8_B8G8_UNORM = System::Int8(0x44);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_G8R8_G8B8_UNORM = System::Int8(0x45);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC1_TYPELESS = System::Int8(0x46);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC1_UNORM = System::Int8(0x47);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC1_UNORM_SRGB = System::Int8(0x48);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC2_TYPELESS = System::Int8(0x49);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC2_UNORM = System::Int8(0x4a);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC2_UNORM_SRGB = System::Int8(0x4b);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC3_TYPELESS = System::Int8(0x4c);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC3_UNORM = System::Int8(0x4d);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC3_UNORM_SRGB = System::Int8(0x4e);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC4_TYPELESS = System::Int8(0x4f);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC4_UNORM = System::Int8(0x50);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC4_SNORM = System::Int8(0x51);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC5_TYPELESS = System::Int8(0x52);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC5_UNORM = System::Int8(0x53);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC5_SNORM = System::Int8(0x54);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_B5G6R5_UNORM = System::Int8(0x55);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_B5G5R5A1_UNORM = System::Int8(0x56);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_B8G8R8A8_UNORM = System::Int8(0x57);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_B8G8R8X8_UNORM = System::Int8(0x58);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = System::Int8(0x59);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_B8G8R8A8_TYPELESS = System::Int8(0x5a);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = System::Int8(0x5b);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_B8G8R8X8_TYPELESS = System::Int8(0x5c);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = System::Int8(0x5d);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC6H_TYPELESS = System::Int8(0x5e);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC6H_UF16 = System::Int8(0x5f);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC6H_SF16 = System::Int8(0x60);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC7_TYPELESS = System::Int8(0x61);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC7_UNORM = System::Int8(0x62);
+static _DELPHI_CONST System::Int8 DXGI_FORMAT_BC7_UNORM_SRGB = System::Int8(0x63);
+static _DELPHI_CONST System::Int8 D3D11_RESOURCE_DIMENSION_UNKNOWN = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 D3D11_RESOURCE_DIMENSION_BUFFER = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 D3D11_RESOURCE_DIMENSION_TEXTURE1D = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 D3D11_RESOURCE_DIMENSION_TEXTURE2D = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 D3D11_RESOURCE_DIMENSION_TEXTURE3D = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 FOURCC_UNKNOWN = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 FOURCC_R8G8B8 = System::Int8(0x14);
+static _DELPHI_CONST System::Int8 FOURCC_A8R8G8B8 = System::Int8(0x15);
+static _DELPHI_CONST System::Int8 FOURCC_X8R8G8B8 = System::Int8(0x16);
+static _DELPHI_CONST System::Int8 FOURCC_R5G6B5 = System::Int8(0x17);
+static _DELPHI_CONST System::Int8 FOURCC_X1R5G5B5 = System::Int8(0x18);
+static _DELPHI_CONST System::Int8 FOURCC_A1R5G5B5 = System::Int8(0x19);
+static _DELPHI_CONST System::Int8 FOURCC_A4R4G4B4 = System::Int8(0x1a);
+static _DELPHI_CONST System::Int8 FOURCC_R3G3B2 = System::Int8(0x1b);
+static _DELPHI_CONST System::Int8 FOURCC_A8 = System::Int8(0x1c);
+static _DELPHI_CONST System::Int8 FOURCC_A8R3G3B2 = System::Int8(0x1d);
+static _DELPHI_CONST System::Int8 FOURCC_X4R4G4B4 = System::Int8(0x1e);
+static _DELPHI_CONST System::Int8 FOURCC_A2B10G10R10 = System::Int8(0x1f);
+static _DELPHI_CONST System::Int8 FOURCC_A8B8G8R8 = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 FOURCC_X8B8G8R8 = System::Int8(0x21);
+static _DELPHI_CONST System::Int8 FOURCC_G16R16 = System::Int8(0x22);
+static _DELPHI_CONST System::Int8 FOURCC_A2R10G10B10 = System::Int8(0x23);
+static _DELPHI_CONST System::Int8 FOURCC_A16B16G16R16 = System::Int8(0x24);
+static _DELPHI_CONST System::Int8 FOURCC_L8 = System::Int8(0x32);
+static _DELPHI_CONST System::Int8 FOURCC_A8L8 = System::Int8(0x33);
+static _DELPHI_CONST System::Int8 FOURCC_A4L4 = System::Int8(0x34);
+static _DELPHI_CONST int FOURCC_DXT1 = int(0x31545844);
+static _DELPHI_CONST int FOURCC_DXT2 = int(0x32545844);
+static _DELPHI_CONST int FOURCC_DXT3 = int(0x33545844);
+static _DELPHI_CONST int FOURCC_DXT4 = int(0x34545844);
+static _DELPHI_CONST int FOURCC_DXT5 = int(0x35545844);
+static _DELPHI_CONST int FOURCC_ATI1 = int(0x31495441);
+static _DELPHI_CONST int FOURCC_ATI2 = int(0x32495441);
+static _DELPHI_CONST System::Int8 FOURCC_D16_LOCKABLE = System::Int8(0x46);
+static _DELPHI_CONST System::Int8 FOURCC_D32 = System::Int8(0x47);
+static _DELPHI_CONST System::Int8 FOURCC_D24X8 = System::Int8(0x4d);
+static _DELPHI_CONST System::Int8 FOURCC_D16 = System::Int8(0x50);
+static _DELPHI_CONST System::Int8 FOURCC_D32F_LOCKABLE = System::Int8(0x52);
+static _DELPHI_CONST System::Int8 FOURCC_L16 = System::Int8(0x51);
+static _DELPHI_CONST System::Int8 FOURCC_R16F = System::Int8(0x6f);
+static _DELPHI_CONST System::Int8 FOURCC_G16R16F = System::Int8(0x70);
+static _DELPHI_CONST System::Int8 FOURCC_A16B16G16R16F = System::Int8(0x71);
+static _DELPHI_CONST System::Int8 FOURCC_R32F = System::Int8(0x72);
+static _DELPHI_CONST System::Int8 FOURCC_G32R32F = System::Int8(0x73);
+static _DELPHI_CONST System::Int8 FOURCC_A32B32G32R32F = System::Int8(0x74);
+static _DELPHI_CONST int FOURCC_DX10 = int(0x47495844);
+extern DELPHI_PACKAGE System::StaticArray<TGLImageDataFormat, 4> cImageDataFormat8bits;
+extern DELPHI_PACKAGE System::StaticArray<TGLImageDataFormat, 5> cImageDataFormat16bits;
+extern DELPHI_PACKAGE System::StaticArray<TGLImageDataFormat, 1> cImageDataFormat24bits;
+extern DELPHI_PACKAGE System::StaticArray<TGLImageDataFormat, 7> cImageDataFormat32bits;
+extern DELPHI_PACKAGE void __fastcall DecodeDXT1toBitmap32(System::Sysutils::PByteArray encData, System::Sysutils::PByteArray decData, int w, int h, bool &trans);
+extern DELPHI_PACKAGE void __fastcall DecodeDXT3toBitmap32(System::Sysutils::PByteArray encData, System::Sysutils::PByteArray decData, int w, int h);
+extern DELPHI_PACKAGE void __fastcall DecodeDXT5toBitmap32(System::Sysutils::PByteArray encData, System::Sysutils::PByteArray decData, int w, int h);
+extern DELPHI_PACKAGE void __fastcall flip_blocks_dxtc1(Winapi::Opengl::PGLubyte data, int numBlocks);
+extern DELPHI_PACKAGE void __fastcall flip_blocks_dxtc3(Winapi::Opengl::PGLubyte data, int numBlocks);
+extern DELPHI_PACKAGE void __fastcall flip_dxt5_alpha(PDXT5AlphaBlock block);
+extern DELPHI_PACKAGE void __fastcall flip_blocks_dxtc5(Winapi::Opengl::PGLubyte data, int numBlocks);
+extern DELPHI_PACKAGE bool __fastcall DDSHeaderToGLEnum(const TDDSHeader &DX9header, const TDDS_HEADER_DXT10 &DX11header, const bool useDX11, /* out */ Stage::Textureformat::TglInternalFormat &iFormat, /* out */ unsigned &colorFormat, /* out */ unsigned &dataType, /* out */ int &bpe);
+extern DELPHI_PACKAGE bool __fastcall GLEnumToDDSHeader(TDDSHeader &DX9header, TDDS_HEADER_DXT10 &DX11header, const bool useDX11, const Stage::Textureformat::TglInternalFormat iFormat, const unsigned colorFormat, const unsigned dataType, const int bpe);
+extern DELPHI_PACKAGE bool __fastcall FindDDSCompatibleDataFormat(const Stage::Textureformat::TglInternalFormat iFormat, /* out */ unsigned &colorFormat, /* out */ unsigned &dataType);
+}	/* namespace Dxtc */
+}	/* namespace Formats */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS_DXTC)
+using namespace Formats::Dxtc;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS)
+using namespace Formats;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// Formats_DXTCHPP

+ 274 - 0
include/Win32/Formats.GL2.hpp

@@ -0,0 +1,274 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'Formats.GL2.pas' rev: 36.00 (Windows)
+
+#ifndef Formats_GL2HPP
+#define Formats_GL2HPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <Stage.VectorGeometry.hpp>
+#include <Stage.VectorTypes.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Formats
+{
+namespace Gl2
+{
+//-- forward type declarations -----------------------------------------------
+struct TGLMHeader;
+struct TGLMSurfaceHeirachy;
+struct TGLMSurfaceHeader;
+struct TGLMTriangle;
+struct TGLMVertex;
+struct TGLMSurface;
+struct TGLMLODInfo;
+struct TGLMLODs;
+struct TGLAHeader;
+struct TGLASkeleton;
+class DELPHICLASS TFileGLM;
+class DELPHICLASS TFileGLA;
+//-- type declarations -------------------------------------------------------
+struct DECLSPEC_DRECORD TGLMHeader
+{
+public:
+	System::StaticArray<System::WideChar, 4> fileID;
+	int version;
+	System::StaticArray<System::WideChar, 64> strFile;
+	System::StaticArray<System::WideChar, 64> animName;
+	int animIndex;
+	int numBones;
+	int numLODs;
+	int ofsLODs;
+	int numSurfaces;
+	int ofsSurfHierarchy;
+	int ofsEnd;
+};
+
+
+typedef System::DynamicArray<int> TGLMSurfaceHeirachyOffsets;
+
+struct DECLSPEC_DRECORD TGLMSurfaceHeirachy
+{
+	
+private:
+	typedef System::DynamicArray<int> _TGLMSurfaceHeirachy__1;
+	
+	
+public:
+	System::StaticArray<System::WideChar, 64> name;
+	System::LongWord flags;
+	System::StaticArray<System::WideChar, 64> shader;
+	int shaderIndex;
+	int parentIndex;
+	int numChildren;
+	_TGLMSurfaceHeirachy__1 childIndices;
+};
+
+
+struct DECLSPEC_DRECORD TGLMSurfaceHeader
+{
+public:
+	int ident;
+	int thisSurfaceIndex;
+	int ofsHeader;
+	int numVerts;
+	int ofsVerts;
+	int numTriangles;
+	int ofsTriangles;
+	int numBoneReferences;
+	int ofsBoneReferences;
+	int ofsEnd;
+};
+
+
+struct DECLSPEC_DRECORD TGLMTriangle
+{
+public:
+	System::StaticArray<int, 3> indices;
+};
+
+
+struct DECLSPEC_DRECORD TGLMVertex
+{
+public:
+	Stage::Vectortypes::TVector3f normal;
+	Stage::Vectortypes::TVector3f vertex;
+	unsigned uiNumWeightsAndBoneIndices;
+	System::StaticArray<System::Byte, 4> BoneWeightings;
+};
+
+
+struct DECLSPEC_DRECORD TGLMSurface
+{
+	
+private:
+	typedef System::DynamicArray<TGLMTriangle> _TGLMSurface__1;
+	
+	typedef System::DynamicArray<TGLMVertex> _TGLMSurface__2;
+	
+	typedef System::DynamicArray<Stage::Vectortypes::TVector2f> _TGLMSurface__3;
+	
+	typedef System::DynamicArray<int> _TGLMSurface__4;
+	
+	
+public:
+	TGLMSurfaceHeader SurfaceHeader;
+	_TGLMSurface__1 Triangles;
+	_TGLMSurface__2 Vertices;
+	_TGLMSurface__3 TexCoords;
+	_TGLMSurface__4 BoneReferences;
+};
+
+
+struct DECLSPEC_DRECORD TGLMLODInfo
+{
+public:
+	int ofsEnd;
+};
+
+
+typedef System::DynamicArray<int> TGLMLODSurfaceOffsets;
+
+struct DECLSPEC_DRECORD TGLMLODs
+{
+	
+private:
+	typedef System::DynamicArray<TGLMSurface> _TGLMLODs__1;
+	
+	
+public:
+	TGLMLODInfo LODInfo;
+	TGLMLODSurfaceOffsets LODSurfaceOffsets;
+	_TGLMLODs__1 Surfaces;
+};
+
+
+struct DECLSPEC_DRECORD TGLAHeader
+{
+public:
+	System::StaticArray<System::WideChar, 4> fileID;
+	int version;
+	System::StaticArray<System::WideChar, 64> name;
+	float fScale;
+	int numFrames;
+	int ofsFrames;
+	int numBones;
+	int ofsCompBonePool;
+	int ofsSkel;
+	int ofsEnd;
+};
+
+
+typedef System::StaticArray<Stage::Vectortypes::TVector4f, 3> TGLABone;
+
+typedef System::StaticArray<System::Word, 7> TGLACompQuatBone;
+
+typedef System::DynamicArray<int> TGLASkeletonOffsets;
+
+struct DECLSPEC_DRECORD TGLASkeleton
+{
+	
+private:
+	typedef System::DynamicArray<int> _TGLASkeleton__1;
+	
+	
+public:
+	System::StaticArray<System::WideChar, 64> name;
+	System::LongWord flags;
+	int parent;
+	TGLABone BasePoseMat;
+	TGLABone BasePoseMatInv;
+	int numChildren;
+	_TGLASkeleton__1 children;
+};
+
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TFileGLM : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+	
+private:
+	typedef System::DynamicArray<TGLMSurfaceHeirachy> _TFileGLM__1;
+	
+	typedef System::DynamicArray<TGLMLODs> _TFileGLM__2;
+	
+	
+public:
+	TGLMHeader ModelHeader;
+	TGLMSurfaceHeirachyOffsets SurfaceHeirachyOffsets;
+	_TFileGLM__1 SurfaceHeirachy;
+	_TFileGLM__2 LODs;
+	void __fastcall LoadFromStream(System::Classes::TStream* aStream);
+public:
+	/* TObject.Create */ inline __fastcall TFileGLM() : System::TObject() { }
+	/* TObject.Destroy */ inline __fastcall virtual ~TFileGLM() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TFileGLA : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+	
+private:
+	typedef System::DynamicArray<TGLASkeleton> _TFileGLA__1;
+	
+	typedef System::DynamicArray<int> _TFileGLA__2;
+	
+	typedef System::DynamicArray<TGLACompQuatBone> _TFileGLA__3;
+	
+	
+public:
+	TGLAHeader AnimHeader;
+	TGLASkeletonOffsets SkeletonOffsets;
+	_TFileGLA__1 Skeleton;
+	_TFileGLA__2 BoneIndices;
+	_TFileGLA__3 CompBonePool;
+	TGLACompQuatBone __fastcall GetCompressedMatrix(int Frame, int Bone);
+	Stage::Vectortypes::TGLMatrix __fastcall GetUnCompressedMatrix(int Frame, int Bone);
+	void __fastcall LoadFromStream(System::Classes::TStream* aStream);
+public:
+	/* TObject.Create */ inline __fastcall TFileGLA() : System::TObject() { }
+	/* TObject.Destroy */ inline __fastcall virtual ~TFileGLA() { }
+	
+};
+
+#pragma pack(pop)
+
+//-- var, const, procedure ---------------------------------------------------
+extern DELPHI_PACKAGE int __fastcall G2_GetVertWeights(const TGLMVertex &vert);
+extern DELPHI_PACKAGE int __fastcall G2_GetVertBoneIndex(const TGLMVertex &vert, int iWeightNum);
+extern DELPHI_PACKAGE float __fastcall G2_GetVertBoneWeight(const TGLMVertex &vert, unsigned iWeightNum, float &fTotalWeight, const unsigned iNumWeights);
+extern DELPHI_PACKAGE void __fastcall MC_UnCompressQuat(Stage::Vectortypes::TGLMatrix &mat, const TGLACompQuatBone &comp);
+}	/* namespace Gl2 */
+}	/* namespace Formats */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS_GL2)
+using namespace Formats::Gl2;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS)
+using namespace Formats;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// Formats_GL2HPP

+ 67 - 0
include/Win32/Formats.HDRImage.hpp

@@ -0,0 +1,67 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'Formats.HDRImage.pas' rev: 36.00 (Windows)
+
+#ifndef Formats_HDRImageHPP
+#define Formats_HDRImageHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <Vcl.Graphics.hpp>
+#include <Stage.VectorTypes.hpp>
+#include <Stage.OpenGLTokens.hpp>
+#include <Stage.VectorGeometry.hpp>
+#include <Stage.TextureFormat.hpp>
+#include <GLS.FileHDR.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Formats
+{
+namespace Hdrimage
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS THDRImage;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION THDRImage : public Vcl::Graphics::TBitmap
+{
+	typedef Vcl::Graphics::TBitmap inherited;
+	
+public:
+	virtual void __fastcall LoadFromStream(System::Classes::TStream* stream);
+	virtual void __fastcall SaveToStream(System::Classes::TStream* stream);
+public:
+	/* TBitmap.Create */ inline __fastcall virtual THDRImage()/* overload */ : Vcl::Graphics::TBitmap() { }
+	/* TBitmap.Create */ inline __fastcall THDRImage(int AWidth, int AHeight)/* overload */ : Vcl::Graphics::TBitmap(AWidth, AHeight) { }
+	/* TBitmap.Destroy */ inline __fastcall virtual ~THDRImage() { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+}	/* namespace Hdrimage */
+}	/* namespace Formats */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS_HDRIMAGE)
+using namespace Formats::Hdrimage;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS)
+using namespace Formats;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// Formats_HDRImageHPP

+ 808 - 0
include/Win32/Formats.LWO.hpp

@@ -0,0 +1,808 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'Formats.LWO.pas' rev: 36.00 (Windows)
+
+#ifndef Formats_LWOHPP
+#define Formats_LWOHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <System.IOUtils.hpp>
+#include <System.Math.hpp>
+#include <Stage.VectorGeometry.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Formats
+{
+namespace Lwo
+{
+//-- forward type declarations -----------------------------------------------
+struct TLWChunkRec;
+struct TLWSubChunkRec;
+struct TLWPolsInfo;
+struct TLWPntsInfo;
+struct TLWPolyTagMap;
+struct TLWVertexMap;
+class DELPHICLASS TLWChunk;
+class DELPHICLASS TLWSubChunk;
+class DELPHICLASS TLWChunkList;
+class DELPHICLASS TLWParentChunk;
+class DELPHICLASS TLWPnts;
+class DELPHICLASS TLWPols;
+class DELPHICLASS TLWVMap;
+class DELPHICLASS TLWTags;
+class DELPHICLASS TLWSurf;
+class DELPHICLASS TLWLayr;
+class DELPHICLASS TLWPTag;
+class DELPHICLASS TLWObjectFile;
+class DELPHICLASS TLWClip;
+class DELPHICLASS TLWContentDir;
+//-- type declarations -------------------------------------------------------
+typedef System::StaticArray<char, 4> TID4;
+
+typedef TID4 *PID4;
+
+typedef System::DynamicArray<TID4> TID4DynArray;
+
+typedef System::Int8 TI1;
+
+typedef System::Int8 *PI1;
+
+typedef short TI2;
+
+typedef short *PI2;
+
+typedef System::LongInt TI4;
+
+typedef int *PI4;
+
+typedef System::Byte TU1;
+
+typedef System::Byte *PU1;
+
+typedef System::DynamicArray<System::Byte> TU1DynArray;
+
+typedef System::Word TU2;
+
+typedef System::Word *PU2;
+
+typedef System::StaticArray<System::Word, 65535> TU2Array;
+
+typedef TU2Array *PU2Array;
+
+typedef System::DynamicArray<System::Word> TU2DynArray;
+
+typedef System::LongWord TU4;
+
+typedef unsigned *PU4;
+
+typedef System::StaticArray<unsigned, 65535> TU4Array;
+
+typedef TU4Array *PU4Array;
+
+typedef System::DynamicArray<unsigned> TU4DynArray;
+
+typedef float TF4;
+
+typedef float *PF4;
+
+typedef System::StaticArray<float, 65535> TF4Array;
+
+typedef TF4Array *PF4Array;
+
+typedef System::DynamicArray<float> TF4DynArray;
+
+typedef TF4 TANG4;
+
+typedef float *PANG4;
+
+typedef System::StaticArray<float, 3> TVec12;
+
+typedef TVec12 *PVec12;
+
+typedef System::StaticArray<System::StaticArray<float, 3>, 65535> TVec12Array;
+
+typedef TVec12Array *PVec12Array;
+
+typedef System::DynamicArray<TVec12> TVec12DynArray;
+
+typedef TVec12 TColr12;
+
+typedef TVec12 *PColr12;
+
+typedef System::DynamicArray<TVec12> TColr12DynArray;
+
+typedef System::StaticArray<System::Byte, 4> TColr4;
+
+typedef TColr4 *PColr4;
+
+typedef TLWChunkRec *PLWChunkRec;
+
+struct DECLSPEC_DRECORD TLWChunkRec
+{
+public:
+	TID4 id;
+	TU4 size;
+	void *data;
+};
+
+
+typedef TLWSubChunkRec *PLWSubChunkRec;
+
+struct DECLSPEC_DRECORD TLWSubChunkRec
+{
+public:
+	TID4 id;
+	TU2 size;
+	void *data;
+};
+
+
+struct DECLSPEC_DRECORD TLWPolsInfo
+{
+public:
+	TVec12 norm;
+	TVec12DynArray vnorms;
+	TU2 surfid;
+};
+
+
+typedef System::DynamicArray<TLWPolsInfo> TLWPolsInfoDynArray;
+
+struct DECLSPEC_DRECORD TLWPntsInfo
+{
+public:
+	TU2 npols;
+	TU2DynArray pols;
+};
+
+
+typedef System::DynamicArray<TLWPntsInfo> TLWPntsInfoDynArray;
+
+typedef TU2DynArray TLWPolsDynArray;
+
+typedef TU2DynArray TLWPolyTagMapDynArray;
+
+struct DECLSPEC_DRECORD TLWPolyTagMap
+{
+public:
+	TU2 poly;
+	TU2 tag;
+};
+
+
+typedef TLWPolyTagMap *PLWPolyTagMap;
+
+struct DECLSPEC_DRECORD TLWVertexMap
+{
+public:
+	TU2 vert;
+	TF4DynArray values;
+};
+
+
+typedef System::DynamicArray<TLWVertexMap> TLWVertexMapDynArray;
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TLWChunk : public System::Classes::TPersistent
+{
+	typedef System::Classes::TPersistent inherited;
+	
+private:
+	void *FData;
+	TID4 FID;
+	TU4 FSize;
+	TLWParentChunk* FParentChunk;
+	TLWChunkList* FOwner;
+	TLWChunkList* __fastcall GetRootChunks();
+	int __fastcall GetIndex();
+	
+protected:
+	virtual void __fastcall Clear();
+	virtual void __fastcall LoadData(System::Classes::TStream* AStream, System::LongWord DataStart, System::LongWord DataSize);
+	virtual void __fastcall Loaded();
+	
+public:
+	__fastcall virtual ~TLWChunk();
+	__classmethod virtual TID4 __fastcall GetID();
+	virtual void __fastcall LoadFromStream(System::Classes::TStream* AStream);
+	__property void * data = {read=FData};
+	__property TID4 id = {read=FID};
+	__property TU4 size = {read=FSize, nodefault};
+	__property TLWParentChunk* ParentChunk = {read=FParentChunk};
+	__property TLWChunkList* RootChunks = {read=GetRootChunks};
+	__property int Index = {read=GetIndex, nodefault};
+	__property TLWChunkList* Owner = {read=FOwner};
+public:
+	/* TObject.Create */ inline __fastcall TLWChunk() : System::Classes::TPersistent() { }
+	
+};
+
+#pragma pack(pop)
+
+typedef System::TMetaClass* TLWChunkClass;
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TLWSubChunk : public TLWChunk
+{
+	typedef TLWChunk inherited;
+	
+public:
+	virtual void __fastcall LoadFromStream(System::Classes::TStream* AStream);
+public:
+	/* TLWChunk.Destroy */ inline __fastcall virtual ~TLWSubChunk() { }
+	
+public:
+	/* TObject.Create */ inline __fastcall TLWSubChunk() : TLWChunk() { }
+	
+};
+
+#pragma pack(pop)
+
+typedef void __fastcall (*TLWChunkFind)(TLWChunk* AChunk, void * Criteria, bool &Found);
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TLWChunkList : public System::Classes::TList
+{
+	typedef System::Classes::TList inherited;
+	
+public:
+	TLWChunk* operator[](int Index) { return this->Items[Index]; }
+	
+private:
+	bool FOwnsItems;
+	System::TObject* FOwner;
+	TLWChunk* __fastcall GetItem(int Index);
+	
+protected:
+	virtual void __fastcall Loaded();
+	
+public:
+	__fastcall TLWChunkList(bool AOwnsItems, System::TObject* AOwner);
+	__fastcall virtual ~TLWChunkList();
+	HIDESBASE int __fastcall Add(TLWChunk* AChunk);
+	virtual void __fastcall Clear();
+	HIDESBASE void __fastcall Delete(int Index);
+	int __fastcall FindChunk(TLWChunkFind ChunkFind, void * Criteria, int StartIndex = 0x0);
+	__property TLWChunk* Items[int Index] = {read=GetItem/*, default*/};
+	__property bool OwnsItems = {read=FOwnsItems, nodefault};
+	__property System::TObject* Owner = {read=FOwner};
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TLWParentChunk : public TLWChunk
+{
+	typedef TLWChunk inherited;
+	
+private:
+	TLWChunkList* FItems;
+	TLWChunkList* __fastcall GetItems();
+	float __fastcall GetFloatParam(TID4 Param);
+	System::Word __fastcall GetWordParam(TID4 Param);
+	TVec12 __fastcall GetVec3Param(TID4 Param);
+	System::LongWord __fastcall GetLongParam(TID4 Param);
+	System::Word __fastcall GetVXParam(TID4 Param);
+	
+protected:
+	virtual void * __fastcall GetParamAddr(TID4 Param);
+	virtual void __fastcall Clear();
+	virtual void __fastcall Loaded();
+	
+public:
+	__property TLWChunkList* Items = {read=GetItems};
+	__property void * ParamAddr[TID4 Param] = {read=GetParamAddr};
+	__property float FloatParam[TID4 Param] = {read=GetFloatParam};
+	__property System::Word WordParam[TID4 Param] = {read=GetWordParam};
+	__property System::LongWord LongParam[TID4 Param] = {read=GetLongParam};
+	__property TVec12 Vec3Param[TID4 Param] = {read=GetVec3Param};
+	__property System::Word VXParam[TID4 Param] = {read=GetVXParam};
+public:
+	/* TLWChunk.Destroy */ inline __fastcall virtual ~TLWParentChunk() { }
+	
+public:
+	/* TObject.Create */ inline __fastcall TLWParentChunk() : TLWChunk() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TLWPnts : public TLWParentChunk
+{
+	typedef TLWParentChunk inherited;
+	
+private:
+	TVec12DynArray FPnts;
+	TLWPntsInfoDynArray FPntsInfo;
+	System::LongWord __fastcall GetPntsCount();
+	int __fastcall AddPoly(int PntIdx, int PolyIdx);
+	
+protected:
+	virtual void __fastcall Clear();
+	virtual void __fastcall LoadData(System::Classes::TStream* AStream, System::LongWord DataStart, System::LongWord DataSize);
+	
+public:
+	__classmethod virtual TID4 __fastcall GetID();
+	bool __fastcall GetVMap(TID4 VMapID, /* out */ TLWVMap* &VMap);
+	__property System::LongWord PntsCount = {read=GetPntsCount, nodefault};
+	__property TVec12DynArray Pnts = {read=FPnts};
+	__property TLWPntsInfoDynArray PntsInfo = {read=FPntsInfo};
+public:
+	/* TLWChunk.Destroy */ inline __fastcall virtual ~TLWPnts() { }
+	
+public:
+	/* TObject.Create */ inline __fastcall TLWPnts() : TLWParentChunk() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TLWPols : public TLWParentChunk
+{
+	typedef TLWParentChunk inherited;
+	
+private:
+	TID4 FPolsType;
+	TLWPolsDynArray FPols;
+	TLWPolsInfoDynArray FPolsInfo;
+	int FPolsCount;
+	int __fastcall GetPolsByIndex(TU2 AIndex);
+	TU4 __fastcall GetIndiceCount();
+	TU2 __fastcall GetIndice(int AIndex);
+	int __fastcall GetPolsCount();
+	void __fastcall CalcPolsNormals();
+	void __fastcall CalcPntsNormals();
+	
+protected:
+	virtual void __fastcall Clear();
+	virtual void __fastcall LoadData(System::Classes::TStream* AStream, System::LongWord DataStart, System::LongWord DataSize);
+	virtual void __fastcall Loaded();
+	
+public:
+	__classmethod virtual TID4 __fastcall GetID();
+	int __fastcall GetPolsByPntIdx(TU2 VertIdx, TU2DynArray &VertPolys);
+	__property int PolsByIndex[TU2 AIndex] = {read=GetPolsByIndex};
+	__property TU4 IndiceCount = {read=GetIndiceCount, nodefault};
+	__property TU2 Indices[int AIndex] = {read=GetIndice};
+	__property TID4 PolsType = {read=FPolsType};
+	__property int PolsCount = {read=GetPolsCount, nodefault};
+	__property TLWPolsInfoDynArray PolsInfo = {read=FPolsInfo};
+public:
+	/* TLWChunk.Destroy */ inline __fastcall virtual ~TLWPols() { }
+	
+public:
+	/* TObject.Create */ inline __fastcall TLWPols() : TLWParentChunk() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TLWVMap : public TLWChunk
+{
+	typedef TLWChunk inherited;
+	
+private:
+	TU2 FDimensions;
+	System::UnicodeString FName;
+	TLWVertexMapDynArray FValues;
+	TID4 FVMapType;
+	TLWVertexMap __fastcall GetValue(TU2 AIndex);
+	int __fastcall GetValueCount();
+	
+protected:
+	virtual void __fastcall Clear();
+	virtual void __fastcall LoadData(System::Classes::TStream* AStream, System::LongWord DataStart, System::LongWord DataSize);
+	
+public:
+	__classmethod virtual TID4 __fastcall GetID();
+	__property TU2 Dimensions = {read=FDimensions, nodefault};
+	__property System::UnicodeString Name = {read=FName};
+	__property TLWVertexMap Value[TU2 AIndex] = {read=GetValue};
+	__property int ValueCount = {read=GetValueCount, nodefault};
+	__property TID4 VMapType = {read=FVMapType};
+public:
+	/* TLWChunk.Destroy */ inline __fastcall virtual ~TLWVMap() { }
+	
+public:
+	/* TObject.Create */ inline __fastcall TLWVMap() : TLWChunk() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TLWTags : public TLWChunk
+{
+	typedef TLWChunk inherited;
+	
+private:
+	System::Classes::TStrings* FTags;
+	System::Classes::TStrings* __fastcall GetTags();
+	
+protected:
+	virtual void __fastcall Clear();
+	virtual void __fastcall LoadData(System::Classes::TStream* AStream, System::LongWord DataStart, System::LongWord DataSize);
+	
+public:
+	__fastcall virtual ~TLWTags();
+	__classmethod virtual TID4 __fastcall GetID();
+	System::UnicodeString __fastcall TagToName(TU2 tag);
+	__property System::Classes::TStrings* Tags = {read=GetTags};
+public:
+	/* TObject.Create */ inline __fastcall TLWTags() : TLWChunk() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TLWSurf : public TLWParentChunk
+{
+	typedef TLWParentChunk inherited;
+	
+private:
+	System::UnicodeString FName;
+	System::UnicodeString FSource;
+	int __fastcall GetSurfId();
+	
+protected:
+	virtual void * __fastcall GetParamAddr(TID4 Param);
+	virtual void __fastcall LoadData(System::Classes::TStream* AStream, System::LongWord DataStart, System::LongWord DataSize);
+	
+public:
+	__fastcall virtual ~TLWSurf();
+	__classmethod virtual TID4 __fastcall GetID();
+	__property int surfid = {read=GetSurfId, nodefault};
+	__property System::UnicodeString Name = {read=FName};
+	__property System::UnicodeString Source = {read=FSource};
+public:
+	/* TObject.Create */ inline __fastcall TLWSurf() : TLWParentChunk() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TLWLayr : public TLWParentChunk
+{
+	typedef TLWParentChunk inherited;
+	
+private:
+	TU2 FFlags;
+	System::UnicodeString FName;
+	TU2 FNumber;
+	TU2 FParent;
+	TVec12 FPivot;
+	
+protected:
+	virtual void __fastcall LoadData(System::Classes::TStream* AStream, System::LongWord DataStart, System::LongWord DataSize);
+	
+public:
+	__fastcall virtual ~TLWLayr();
+	__classmethod virtual TID4 __fastcall GetID();
+	__property TU2 Flags = {read=FFlags, nodefault};
+	__property System::UnicodeString Name = {read=FName};
+	__property TU2 Number = {read=FNumber, nodefault};
+	__property TU2 Parent = {read=FParent, nodefault};
+	__property TVec12 Pivot = {read=FPivot};
+public:
+	/* TObject.Create */ inline __fastcall TLWLayr() : TLWParentChunk() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TLWPTag : public TLWChunk
+{
+	typedef TLWChunk inherited;
+	
+public:
+	TLWPolyTagMap operator[](int AIndex) { return this->TagMaps[AIndex]; }
+	
+private:
+	TID4 FMapType;
+	TLWPolyTagMapDynArray FTagMaps;
+	TU2DynArray FTags;
+	int __fastcall AddTag(TU2 Value);
+	TU2 __fastcall GetTag(int AIndex);
+	int __fastcall GetTagCount();
+	int __fastcall GetTagMapCount();
+	TLWPolyTagMap __fastcall GetTagMaps(int AIndex);
+	void __fastcall ValidateTagInfo();
+	
+protected:
+	virtual void __fastcall Clear();
+	virtual void __fastcall LoadData(System::Classes::TStream* AStream, System::LongWord DataStart, System::LongWord DataSize);
+	
+public:
+	__fastcall TLWPTag();
+	int __fastcall GetPolsByTag(TU2 tag, TU2DynArray &PolyIndices);
+	__classmethod virtual TID4 __fastcall GetID();
+	__property TID4 MapType = {read=FMapType};
+	__property int TagCount = {read=GetTagCount, nodefault};
+	__property int TagMapCount = {read=GetTagMapCount, nodefault};
+	__property TLWPolyTagMap TagMaps[int AIndex] = {read=GetTagMaps/*, default*/};
+	__property TU2 Tags[int AIndex] = {read=GetTag};
+public:
+	/* TLWChunk.Destroy */ inline __fastcall virtual ~TLWPTag() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TLWObjectFile : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+private:
+	TLWChunkList* FChunks;
+	System::UnicodeString FFileName;
+	TLWChunkList* __fastcall GetChunks();
+	int __fastcall GetCount();
+	TLWSurf* __fastcall GetSurfaceByName(System::UnicodeString Index);
+	TLWSurf* __fastcall GetSurfaceByTag(TU2 Index);
+	
+public:
+	__fastcall TLWObjectFile();
+	__fastcall virtual ~TLWObjectFile();
+	System::UnicodeString __fastcall TagToName(TU2 tag);
+	void __fastcall LoadFromFile(const System::UnicodeString AFilename);
+	void __fastcall LoadFromStream(System::Classes::TStream* AStream);
+	__property int ChunkCount = {read=GetCount, nodefault};
+	__property TLWChunkList* Chunks = {read=GetChunks};
+	__property System::UnicodeString FileName = {read=FFileName};
+	__property TLWSurf* SurfaceByName[System::UnicodeString Index] = {read=GetSurfaceByName};
+	__property TLWSurf* SurfaceByTag[TU2 Index] = {read=GetSurfaceByTag};
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TLWClip : public TLWParentChunk
+{
+	typedef TLWParentChunk inherited;
+	
+private:
+	TU4 FClipIndex;
+	
+protected:
+	virtual void __fastcall LoadData(System::Classes::TStream* AStream, System::LongWord DataStart, System::LongWord DataSize);
+	
+public:
+	__classmethod virtual TID4 __fastcall GetID();
+	__property TU4 ClipIndex = {read=FClipIndex, nodefault};
+public:
+	/* TLWChunk.Destroy */ inline __fastcall virtual ~TLWClip() { }
+	
+public:
+	/* TObject.Create */ inline __fastcall TLWClip() : TLWParentChunk() { }
+	
+};
+
+#pragma pack(pop)
+
+typedef void __fastcall (__closure *TLWContentNotify)(System::TObject* Sender, System::UnicodeString &Content);
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TLWContentDir : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+private:
+	System::Classes::TStrings* FSubDirs;
+	System::UnicodeString FRoot;
+	System::Classes::TStrings* __fastcall GetSubDirs();
+	void __fastcall SetRoot(const System::UnicodeString Value);
+	void __fastcall SetSubDirs(System::Classes::TStrings* const Value);
+	
+public:
+	__fastcall virtual ~TLWContentDir();
+	System::UnicodeString __fastcall FindContent(System::UnicodeString AFilename);
+	__property System::UnicodeString Root = {read=FRoot, write=SetRoot};
+	__property System::Classes::TStrings* SubDirs = {read=GetSubDirs, write=SetSubDirs};
+public:
+	/* TObject.Create */ inline __fastcall TLWContentDir() : System::TObject() { }
+	
+};
+
+#pragma pack(pop)
+
+typedef void __cdecl (*TLWOReadCallback)(TLWChunkRec Chunk, void * data);
+
+//-- var, const, procedure ---------------------------------------------------
+#define ID_NULL L"#0#0#0#0"
+extern DELPHI_PACKAGE TID4 ID_LWSC;
+extern DELPHI_PACKAGE TID4 ID_FORM;
+extern DELPHI_PACKAGE TID4 ID_LWOB;
+extern DELPHI_PACKAGE TID4 ID_LWLO;
+extern DELPHI_PACKAGE TID4 ID_LAYR;
+extern DELPHI_PACKAGE TID4 ID_PNTS;
+extern DELPHI_PACKAGE TID4 ID_SRFS;
+extern DELPHI_PACKAGE TID4 ID_POLS;
+extern DELPHI_PACKAGE TID4 ID_CRVS;
+extern DELPHI_PACKAGE TID4 ID_PCHS;
+extern DELPHI_PACKAGE TID4 ID_SURF;
+extern DELPHI_PACKAGE TID4 ID_COLR;
+extern DELPHI_PACKAGE TID4 ID_FLAG;
+extern DELPHI_PACKAGE TID4 ID_LUMI;
+extern DELPHI_PACKAGE TID4 ID_DIFF;
+extern DELPHI_PACKAGE TID4 ID_SPEC;
+extern DELPHI_PACKAGE TID4 ID_REFL;
+extern DELPHI_PACKAGE TID4 ID_TRAN;
+extern DELPHI_PACKAGE TID4 ID_VLUM;
+extern DELPHI_PACKAGE TID4 ID_VDIF;
+extern DELPHI_PACKAGE TID4 ID_VSPC;
+extern DELPHI_PACKAGE TID4 ID_VRFL;
+extern DELPHI_PACKAGE TID4 ID_VTRN;
+extern DELPHI_PACKAGE TID4 ID_GLOS;
+extern DELPHI_PACKAGE TID4 ID_SIDE;
+extern DELPHI_PACKAGE TID4 ID_RFLT;
+extern DELPHI_PACKAGE TID4 ID_RFOP;
+extern DELPHI_PACKAGE TID4 ID_RIMG;
+extern DELPHI_PACKAGE TID4 ID_RSAN;
+extern DELPHI_PACKAGE TID4 ID_RIND;
+extern DELPHI_PACKAGE TID4 ID_EDGE;
+extern DELPHI_PACKAGE TID4 ID_SMAN;
+extern DELPHI_PACKAGE TID4 ID_ALPH;
+extern DELPHI_PACKAGE TID4 ID_CTEX;
+extern DELPHI_PACKAGE TID4 ID_DTEX;
+extern DELPHI_PACKAGE TID4 ID_STEX;
+extern DELPHI_PACKAGE TID4 ID_RTEX;
+extern DELPHI_PACKAGE TID4 ID_TTEX;
+extern DELPHI_PACKAGE TID4 ID_LTEX;
+extern DELPHI_PACKAGE TID4 ID_BTEX;
+extern DELPHI_PACKAGE TID4 ID_TFLG;
+extern DELPHI_PACKAGE TID4 ID_TSIZ;
+extern DELPHI_PACKAGE TID4 ID_TCTR;
+extern DELPHI_PACKAGE TID4 ID_TFAL;
+extern DELPHI_PACKAGE TID4 ID_TVEL;
+extern DELPHI_PACKAGE TID4 ID_TREF;
+extern DELPHI_PACKAGE TID4 ID_TCLR;
+extern DELPHI_PACKAGE TID4 ID_TVAL;
+extern DELPHI_PACKAGE TID4 ID_TAMP;
+extern DELPHI_PACKAGE TID4 ID_TFP0;
+extern DELPHI_PACKAGE TID4 ID_TFP1;
+extern DELPHI_PACKAGE TID4 ID_TFP2;
+extern DELPHI_PACKAGE TID4 ID_TIP0;
+extern DELPHI_PACKAGE TID4 ID_TIP1;
+extern DELPHI_PACKAGE TID4 ID_TIP2;
+extern DELPHI_PACKAGE TID4 ID_TSP0;
+extern DELPHI_PACKAGE TID4 ID_TSP1;
+extern DELPHI_PACKAGE TID4 ID_TSP2;
+extern DELPHI_PACKAGE TID4 ID_TFRQ;
+extern DELPHI_PACKAGE TID4 ID_TIMG;
+extern DELPHI_PACKAGE TID4 ID_TALP;
+extern DELPHI_PACKAGE TID4 ID_TWRP;
+extern DELPHI_PACKAGE TID4 ID_TAAS;
+extern DELPHI_PACKAGE TID4 ID_TOPC;
+extern DELPHI_PACKAGE TID4 ID_SHDR;
+extern DELPHI_PACKAGE TID4 ID_SDAT;
+extern DELPHI_PACKAGE TID4 ID_IMSQ;
+extern DELPHI_PACKAGE TID4 ID_FLYR;
+extern DELPHI_PACKAGE TID4 ID_IMCC;
+static _DELPHI_CONST System::Int8 SURF_FLAG_LUMINOUS = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 SURF_FLAG_OUTLINE = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 SURF_FLAG_SMOOTHING = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 SURF_FLAG_COLORHIGHLIGHTS = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 SURF_FLAG_COLORFILTER = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 SURF_FLAG_OPAQUEEDGE = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 SURF_FLAG_TRANSPARENTEDGE = System::Int8(0x40);
+static _DELPHI_CONST System::Byte SURF_FLAG_SHARPTERMINATOR = System::Byte(0x80);
+static _DELPHI_CONST System::Word SURF_FLAG_DOUBLESIDED = System::Word(0x100);
+static _DELPHI_CONST System::Word SURF_FLAG_ADDITIVE = System::Word(0x200);
+static _DELPHI_CONST System::Word SURF_FLAG_SHADOWALPHA = System::Word(0x400);
+static _DELPHI_CONST System::Int8 CURV_CONTINUITY_FIRST = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 CURV_CONTINUITY_LAST = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 IMSQ_FLAG_LOOP = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 IMSQ_FLAG_INTERLACE = System::Int8(0x2);
+extern DELPHI_PACKAGE TID4 ID_LWO2;
+extern DELPHI_PACKAGE TID4 ID_VMAP;
+extern DELPHI_PACKAGE TID4 ID_TAGS;
+extern DELPHI_PACKAGE TID4 ID_PTAG;
+extern DELPHI_PACKAGE TID4 ID_VMAD;
+extern DELPHI_PACKAGE TID4 ID_ENVL;
+extern DELPHI_PACKAGE TID4 ID_CLIP;
+extern DELPHI_PACKAGE TID4 ID_BBOX;
+extern DELPHI_PACKAGE TID4 ID_DESC;
+extern DELPHI_PACKAGE TID4 ID_TEXT;
+extern DELPHI_PACKAGE TID4 ID_ICON;
+extern DELPHI_PACKAGE TID4 ENVL_PRE;
+extern DELPHI_PACKAGE TID4 ENVL_POST;
+extern DELPHI_PACKAGE TID4 ENVL_KEY;
+extern DELPHI_PACKAGE TID4 ENVL_SPAN;
+extern DELPHI_PACKAGE TID4 ENVL_CHAN;
+extern DELPHI_PACKAGE TID4 ENVL_NAME;
+extern DELPHI_PACKAGE TID4 ID_STIL;
+extern DELPHI_PACKAGE TID4 ID_ISEQ;
+extern DELPHI_PACKAGE TID4 ID_ANIM;
+extern DELPHI_PACKAGE TID4 ID_STCC;
+extern DELPHI_PACKAGE TID4 ID_CONT;
+extern DELPHI_PACKAGE TID4 ID_BRIT;
+extern DELPHI_PACKAGE TID4 ID_SATR;
+extern DELPHI_PACKAGE TID4 ID_HUE;
+extern DELPHI_PACKAGE TID4 ID_GAMMA;
+extern DELPHI_PACKAGE TID4 ID_NEGA;
+extern DELPHI_PACKAGE TID4 ID_IFLT;
+extern DELPHI_PACKAGE TID4 ID_PFLT;
+extern DELPHI_PACKAGE TID4 POLS_TYPE_FACE;
+extern DELPHI_PACKAGE TID4 POLS_TYPE_CURV;
+extern DELPHI_PACKAGE TID4 POLS_TYPE_PTCH;
+extern DELPHI_PACKAGE TID4 POLS_TYPE_MBAL;
+extern DELPHI_PACKAGE TID4 POLS_TYPE_BONE;
+extern DELPHI_PACKAGE TID4 VMAP_TYPE_PICK;
+extern DELPHI_PACKAGE TID4 VMAP_TYPE_WGHT;
+extern DELPHI_PACKAGE TID4 VMAP_TYPE_MNVW;
+extern DELPHI_PACKAGE TID4 VMAP_TYPE_TXUV;
+extern DELPHI_PACKAGE TID4 VMAP_TYPE_RGB;
+extern DELPHI_PACKAGE TID4 VMAP_TYPE_RGBA;
+extern DELPHI_PACKAGE TID4 VMAP_TYPE_MORF;
+extern DELPHI_PACKAGE TID4 VMAP_TYPE_SPOT;
+extern DELPHI_PACKAGE TID4 PTAG_TYPE_SURF;
+extern DELPHI_PACKAGE TID4 PTAG_TYPE_PART;
+extern DELPHI_PACKAGE TID4 PTAG_TYPE_SMGP;
+static _DELPHI_CONST System::Int8 PRE_POST_RESET = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 PRE_POST_CONSTANT = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 PRE_POST_REPEAT = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 PRE_POST_OSCILLATE = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 PRE_POST_OFFSET = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 PRE_POST_LINEAR = System::Int8(0x5);
+static _DELPHI_CONST System::Word POLS_VCOUNT_MASK = System::Word(0x3ff);
+static _DELPHI_CONST System::Word POLS_FLAGS_MASK = System::Word(0xfc00);
+static _DELPHI_CONST System::Int8 SIDE_FRONT = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 SIDE_BACK = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 SIDE_FRONT_AND_BACK = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 RFOP_BACKDROP = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 RFOP_RAYTRACEANDBACKDROP = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 RFOP_SPHERICALMAP = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 RFOP_RAYTRACEANDSPHERICALMAP = System::Int8(0x3);
+extern DELPHI_PACKAGE System::UnicodeString __fastcall ToDosPath(const System::UnicodeString Path);
+extern DELPHI_PACKAGE System::UnicodeString __fastcall ToUnixPath(const System::UnicodeString Path);
+extern DELPHI_PACKAGE TLWContentDir* __fastcall GetContentDir(void);
+extern DELPHI_PACKAGE void __fastcall FindChunkById(TLWChunk* AChunk, void * data, bool &Found);
+extern DELPHI_PACKAGE void __fastcall FindClipByClipIndex(TLWChunk* AChunk, void * AIndex, bool &Found);
+extern DELPHI_PACKAGE void __fastcall FindSurfaceByName(TLWChunk* AChunk, void * AName, bool &Found);
+extern DELPHI_PACKAGE void __fastcall FindSurfaceByTag(TLWChunk* AChunk, void * ATag, bool &Found);
+extern DELPHI_PACKAGE void __fastcall FindVMapByName(TLWChunk* AChunk, void * AName, bool &Found);
+extern DELPHI_PACKAGE void __fastcall RegisterChunkClass(TLWChunkClass ChunkClass);
+extern DELPHI_PACKAGE System::LongWord __cdecl LoadLW0FromStream(System::Classes::TStream* Stream, TLWOReadCallback ReadCallback, void * UserData);
+extern DELPHI_PACKAGE System::LongWord __fastcall LoadLWOFromFile(const System::UnicodeString AFilename, TLWOReadCallback ReadCallback, void * UserData);
+extern DELPHI_PACKAGE void __fastcall ReverseByteOrder(void * ValueIn, int size, int Count = 0x1);
+extern DELPHI_PACKAGE void __fastcall ReadMotorolaNumber(System::Classes::TStream* Stream, void * data, int ElementSize, int Count = 0x1);
+extern DELPHI_PACKAGE int __fastcall WriteMotorolaNumber(System::Classes::TStream* Stream, void * data, int ElementSize, int Count = 0x1);
+extern DELPHI_PACKAGE int __fastcall ReadS0(System::Classes::TStream* Stream, /* out */ System::UnicodeString &Str);
+extern DELPHI_PACKAGE int __fastcall ReadVXAsU4(System::Classes::TStream* Stream, void * data, int Count = 0x1);
+extern DELPHI_PACKAGE void __fastcall WriteS0(System::Classes::TStream* Stream, System::UnicodeString data);
+extern DELPHI_PACKAGE void __fastcall WriteU4AsVX(System::Classes::TStream* Stream, void * data, int Count);
+extern DELPHI_PACKAGE int __fastcall ID4ToInt(const TID4 id);
+}	/* namespace Lwo */
+}	/* namespace Formats */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS_LWO)
+using namespace Formats::Lwo;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS)
+using namespace Formats;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// Formats_LWOHPP

+ 157 - 0
include/Win32/Formats.MD2.hpp

@@ -0,0 +1,157 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'Formats.MD2.pas' rev: 36.00 (Windows)
+
+#ifndef Formats_MD2HPP
+#define Formats_MD2HPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <Stage.VectorTypes.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Formats
+{
+namespace Md2
+{
+//-- forward type declarations -----------------------------------------------
+struct TMD2VertexIndex;
+struct TMD2Triangle;
+struct TMD2TriangleVertex;
+struct TMD2AliasFrame;
+struct TMD2Header;
+class DELPHICLASS TFileMD2;
+//-- type declarations -------------------------------------------------------
+typedef TMD2VertexIndex *PMD2VertexIndex;
+
+struct DECLSPEC_DRECORD TMD2VertexIndex
+{
+public:
+	int A;
+	int B;
+	int C;
+	float A_S;
+	float A_T;
+	float B_S;
+	float B_T;
+	float C_S;
+	float C_T;
+};
+
+
+struct DECLSPEC_DRECORD TMD2Triangle
+{
+public:
+	Stage::Vectortypes::TVector3s VertexIndex;
+	Stage::Vectortypes::TVector3s TextureCoordIndex;
+};
+
+
+struct DECLSPEC_DRECORD TMD2TriangleVertex
+{
+public:
+	System::StaticArray<System::Byte, 3> Vert;
+	System::Byte LightnormalIndex;
+};
+
+
+typedef TMD2AliasFrame *PMD2AliasFrame;
+
+struct DECLSPEC_DRECORD TMD2AliasFrame
+{
+public:
+	Stage::Vectortypes::TVector3f Scale;
+	Stage::Vectortypes::TVector3f Translate;
+	System::StaticArray<char, 16> Name;
+	System::StaticArray<TMD2TriangleVertex, 1> Vertices;
+};
+
+
+struct DECLSPEC_DRECORD TMD2Header
+{
+public:
+	int Ident;
+	int Version;
+	int SkinWidth;
+	int SkinHeight;
+	int FrameSize;
+	int Num_Skins;
+	int Num_Vertices;
+	int Num_TextureCoords;
+	int Num_VertexIndices;
+	int Num_GLCommdands;
+	int Num_Frames;
+	int Offset_skins;
+	int Offset_st;
+	int Offset_tris;
+	int Offset_frames;
+	int Offset_glcmds;
+	int Offset_end;
+};
+
+
+typedef System::DynamicArray<TMD2VertexIndex> TIndexList;
+
+typedef System::DynamicArray<Stage::Vectortypes::TVector3f> Formats_Md2__1;
+
+typedef System::DynamicArray<System::DynamicArray<Stage::Vectortypes::TVector3f> > TGLVertexList;
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TFileMD2 : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+private:
+	System::LongInt FiFrames;
+	System::LongInt FiVertices;
+	System::LongInt FiTriangles;
+	void __fastcall FreeLists();
+	
+public:
+	TIndexList fIndexList;
+	TGLVertexList fVertexList;
+	System::Classes::TStrings* FrameNames;
+	__fastcall virtual TFileMD2();
+	__fastcall virtual ~TFileMD2();
+	void __fastcall LoadFromStream(System::Classes::TStream* aStream);
+	__property System::LongInt iFrames = {read=FiFrames, nodefault};
+	__property System::LongInt iVertices = {read=FiVertices, nodefault};
+	__property System::LongInt iTriangles = {read=FiTriangles, nodefault};
+	__property TIndexList IndexList = {read=fIndexList};
+	__property TGLVertexList VertexList = {read=fVertexList};
+};
+
+#pragma pack(pop)
+
+//-- var, const, procedure ---------------------------------------------------
+static _DELPHI_CONST System::Word MAX_MD2_TRIANGLES = System::Word(0x1000);
+static _DELPHI_CONST System::Word MAX_MD2_VERTICES = System::Word(0x800);
+static _DELPHI_CONST System::Word MAX_MD2_FRAMES = System::Word(0x200);
+static _DELPHI_CONST System::Int8 MAX_MD2_SKINS = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 MAX_MD2_SKINNAME = System::Int8(0x40);
+}	/* namespace Md2 */
+}	/* namespace Formats */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS_MD2)
+using namespace Formats::Md2;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS)
+using namespace Formats;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// Formats_MD2HPP

+ 190 - 0
include/Win32/Formats.MD3.hpp

@@ -0,0 +1,190 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'Formats.MD3.pas' rev: 36.00 (Windows)
+
+#ifndef Formats_MD3HPP
+#define Formats_MD3HPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.Classes.hpp>
+#include <Stage.VectorTypes.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Formats
+{
+namespace Md3
+{
+//-- forward type declarations -----------------------------------------------
+struct TMD3Tag;
+struct TMD3Bone;
+struct TMD3Triangle;
+struct TMD3Face;
+struct TMD3TexCoord;
+struct TMD3Skin;
+struct TMD3Header;
+struct TMD3MeshHeader;
+struct TMD3MeshData;
+class DELPHICLASS TFileMD3;
+//-- type declarations -------------------------------------------------------
+struct DECLSPEC_DRECORD TMD3Tag
+{
+public:
+	System::StaticArray<char, 64> strName;
+	Stage::Vectortypes::TVector3f vPosition;
+	Stage::Vectortypes::TMatrix3f rotation;
+};
+
+
+struct DECLSPEC_DRECORD TMD3Bone
+{
+public:
+	Stage::Vectortypes::TVector3f mins;
+	Stage::Vectortypes::TVector3f maxs;
+	Stage::Vectortypes::TVector3f position;
+	float scale;
+	System::StaticArray<char, 16> creator;
+};
+
+
+struct DECLSPEC_DRECORD TMD3Triangle
+{
+public:
+	Stage::Vectortypes::TVector3s vertex;
+	Stage::Vectortypes::TVector2b normal;
+};
+
+
+struct DECLSPEC_DRECORD TMD3Face
+{
+public:
+	Stage::Vectortypes::TVector3i vertexIndices;
+};
+
+
+struct DECLSPEC_DRECORD TMD3TexCoord
+{
+public:
+	Stage::Vectortypes::TVector2f textureCoord;
+};
+
+
+struct DECLSPEC_DRECORD TMD3Skin
+{
+public:
+	System::StaticArray<char, 64> strName;
+	int shaderIndex;
+};
+
+
+struct DECLSPEC_DRECORD TMD3Header
+{
+public:
+	System::StaticArray<char, 4> fileID;
+	int version;
+	System::StaticArray<char, 64> strFile;
+	int flags;
+	int numFrames;
+	int numTags;
+	int numMeshes;
+	int numMaxSkins;
+	int headerSize;
+	int tagStart;
+	int tagEnd;
+	int fileSize;
+};
+
+
+struct DECLSPEC_DRECORD TMD3MeshHeader
+{
+public:
+	System::StaticArray<char, 4> meshID;
+	System::StaticArray<char, 64> strName;
+	int flags;
+	int numMeshFrames;
+	int numSkins;
+	int numVertices;
+	int numTriangles;
+	int triStart;
+	int headerSize;
+	int uvStart;
+	int vertexStart;
+	int meshSize;
+};
+
+
+struct DECLSPEC_DRECORD TMD3MeshData
+{
+	
+private:
+	typedef System::DynamicArray<TMD3Skin> _TMD3MeshData__1;
+	
+	typedef System::DynamicArray<TMD3Face> _TMD3MeshData__2;
+	
+	typedef System::DynamicArray<TMD3TexCoord> _TMD3MeshData__3;
+	
+	typedef System::DynamicArray<TMD3Triangle> _TMD3MeshData__4;
+	
+	
+public:
+	TMD3MeshHeader MeshHeader;
+	_TMD3MeshData__1 Skins;
+	_TMD3MeshData__2 Triangles;
+	_TMD3MeshData__3 TexCoords;
+	_TMD3MeshData__4 Vertices;
+};
+
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TFileMD3 : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+	
+private:
+	typedef System::DynamicArray<TMD3Bone> _TFileMD3__1;
+	
+	typedef System::DynamicArray<TMD3Tag> _TFileMD3__2;
+	
+	typedef System::DynamicArray<TMD3MeshData> _TFileMD3__3;
+	
+	
+public:
+	TMD3Header ModelHeader;
+	_TFileMD3__1 Bones;
+	_TFileMD3__2 Tags;
+	_TFileMD3__3 MeshData;
+	void __fastcall LoadFromStream(System::Classes::TStream* aStream);
+public:
+	/* TObject.Create */ inline __fastcall TFileMD3() : System::TObject() { }
+	/* TObject.Destroy */ inline __fastcall virtual ~TFileMD3() { }
+	
+};
+
+#pragma pack(pop)
+
+//-- var, const, procedure ---------------------------------------------------
+}	/* namespace Md3 */
+}	/* namespace Formats */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS_MD3)
+using namespace Formats::Md3;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS)
+using namespace Formats;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// Formats_MD3HPP

+ 152 - 0
include/Win32/Formats.OCT.hpp

@@ -0,0 +1,152 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'Formats.OCT.pas' rev: 36.00 (Windows)
+
+#ifndef Formats_OCTHPP
+#define Formats_OCTHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <Stage.VectorGeometry.hpp>
+#include <Stage.VectorTypes.hpp>
+#include <GLS.VectorLists.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Formats
+{
+namespace Oct
+{
+//-- forward type declarations -----------------------------------------------
+struct TOCTHeader;
+struct TOCTVertex;
+struct TOCTFace;
+struct TOCTTexture;
+struct TOCTLightmap;
+struct TOCTLight;
+class DELPHICLASS TOCTFile;
+//-- type declarations -------------------------------------------------------
+struct DECLSPEC_DRECORD TOCTHeader
+{
+public:
+	int numVerts;
+	int numFaces;
+	int numTextures;
+	int numLightmaps;
+	int numLights;
+};
+
+
+struct DECLSPEC_DRECORD TOCTVertex
+{
+public:
+	Stage::Vectorgeometry::TTexPoint tv;
+	Stage::Vectorgeometry::TTexPoint lv;
+	Stage::Vectorgeometry::TAffineVector pos;
+};
+
+
+struct DECLSPEC_DRECORD TOCTFace
+{
+public:
+	int start;
+	int num;
+	int id;
+	int lid;
+	Stage::Vectorgeometry::THmgPlane p;
+};
+
+
+typedef TOCTFace *POCTFace;
+
+struct DECLSPEC_DRECORD TOCTTexture
+{
+public:
+	int id;
+	System::StaticArray<char, 64> Name;
+};
+
+
+struct DECLSPEC_DRECORD TOCTLightmap
+{
+public:
+	int id;
+	System::StaticArray<System::Byte, 49152> map;
+};
+
+
+typedef TOCTLightmap *POCTLightmap;
+
+struct DECLSPEC_DRECORD TOCTLight
+{
+public:
+	Stage::Vectorgeometry::TAffineVector pos;
+	Stage::Vectorgeometry::TAffineVector color;
+	int intensity;
+};
+
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TOCTFile : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+	
+private:
+	typedef System::DynamicArray<TOCTVertex> _TOCTFile__1;
+	
+	typedef System::DynamicArray<TOCTFace> _TOCTFile__2;
+	
+	typedef System::DynamicArray<TOCTTexture> _TOCTFile__3;
+	
+	typedef System::DynamicArray<TOCTLightmap> _TOCTFile__4;
+	
+	typedef System::DynamicArray<TOCTLight> _TOCTFile__5;
+	
+	
+public:
+	TOCTHeader Header;
+	_TOCTFile__1 Vertices;
+	_TOCTFile__2 Faces;
+	_TOCTFile__3 Textures;
+	_TOCTFile__4 Lightmaps;
+	_TOCTFile__5 Lights;
+	Stage::Vectorgeometry::TAffineVector PlayerPos;
+	__fastcall TOCTFile()/* overload */;
+	__fastcall TOCTFile(System::Classes::TStream* octStream)/* overload */;
+	void __fastcall SaveToStream(System::Classes::TStream* aStream);
+	void __fastcall AddTriangles(Gls::Vectorlists::TGLAffineVectorList* vertexCoords, Gls::Vectorlists::TGLAffineVectorList* texMapCoords, const System::UnicodeString textureName);
+	void __fastcall AddLight(const Stage::Vectorgeometry::TAffineVector &lightPos, const Stage::Vectortypes::TGLVector &lightColor, int lightIntensity);
+public:
+	/* TObject.Destroy */ inline __fastcall virtual ~TOCTFile() { }
+	
+};
+
+#pragma pack(pop)
+
+//-- var, const, procedure ---------------------------------------------------
+}	/* namespace Oct */
+}	/* namespace Formats */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS_OCT)
+using namespace Formats::Oct;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS)
+using namespace Formats;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// Formats_OCTHPP

+ 246 - 0
include/Win32/Formats.Q3BSP.hpp

@@ -0,0 +1,246 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'Formats.Q3BSP.pas' rev: 36.00 (Windows)
+
+#ifndef Formats_Q3BSPHPP
+#define Formats_Q3BSPHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <Stage.VectorTypes.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Formats
+{
+namespace Q3bsp
+{
+//-- forward type declarations -----------------------------------------------
+struct TBSPHeader;
+struct TBSPLump;
+struct TBSPNode;
+struct TBSPLeaf;
+struct TBSPModel;
+struct TBSPVertex;
+struct TBSPFace;
+struct TBSPTexture;
+struct TBSPLightmap;
+struct TBSPVisData;
+class DELPHICLASS TQ3BSP;
+//-- type declarations -------------------------------------------------------
+struct DECLSPEC_DRECORD TBSPHeader
+{
+public:
+	System::StaticArray<char, 4> StrID;
+	int Version;
+};
+
+
+struct DECLSPEC_DRECORD TBSPLump
+{
+public:
+	int Offset;
+	int Length;
+};
+
+
+typedef System::StaticArray<int, 6> TBSPBBox;
+
+struct DECLSPEC_DRECORD TBSPNode
+{
+public:
+	int Plane;
+	System::StaticArray<int, 2> Children;
+	TBSPBBox BBox;
+};
+
+
+struct DECLSPEC_DRECORD TBSPLeaf
+{
+public:
+	int Cluster;
+	int Area;
+	TBSPBBox BBox;
+	int FirstFace;
+	int NumFaces;
+	int FirstBrush;
+	int NumBrushes;
+};
+
+
+struct DECLSPEC_DRECORD TBSPModel
+{
+public:
+	TBSPBBox BBox;
+	int FirstFace;
+	int NumFaces;
+	int FirstBrush;
+	int NumBrushes;
+};
+
+
+struct DECLSPEC_DRECORD TBSPVertex
+{
+public:
+	Stage::Vectortypes::TVector3f Position;
+	Stage::Vectortypes::TVector2f TextureCoord;
+	Stage::Vectortypes::TVector2f LightmapCoord;
+	Stage::Vectortypes::TVector3f Normal;
+	System::StaticArray<System::Byte, 4> Color;
+};
+
+
+typedef TBSPVertex *PBSPVertex;
+
+struct DECLSPEC_DRECORD TBSPFace
+{
+public:
+	int textureID;
+	int effect;
+	int FaceType;
+	int startVertIndex;
+	int numOfVerts;
+	int meshVertIndex;
+	int numMeshVerts;
+	int lightmapID;
+	System::StaticArray<int, 2> lMapCorner;
+	System::StaticArray<int, 2> lMapSize;
+	Stage::Vectortypes::TVector3f lMapPos;
+	System::StaticArray<Stage::Vectortypes::TVector3f, 2> lMapVecs;
+	Stage::Vectortypes::TVector3f vNormal;
+	System::StaticArray<int, 2> Size;
+};
+
+
+typedef TBSPFace *PBSPFace;
+
+struct DECLSPEC_DRECORD TBSPTexture
+{
+public:
+	System::StaticArray<System::WideChar, 64> TextureName;
+	int flags;
+	int contents;
+};
+
+
+typedef TBSPTexture *PBSPTexture;
+
+struct DECLSPEC_DRECORD TBSPLightmap
+{
+public:
+	System::StaticArray<System::Byte, 49152> imageBits;
+};
+
+
+typedef TBSPLightmap *PBSPLightmap;
+
+struct DECLSPEC_DRECORD TBSPVisData
+{
+	
+private:
+	typedef System::DynamicArray<System::Byte> _TBSPVisData__1;
+	
+	
+public:
+	int numOfClusters;
+	int bytesPerCluster;
+	_TBSPVisData__1 bitSets;
+};
+
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TQ3BSP : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+	
+private:
+	typedef System::DynamicArray<TBSPLump> _TQ3BSP__1;
+	
+	typedef System::DynamicArray<TBSPVertex> _TQ3BSP__2;
+	
+	typedef System::DynamicArray<TBSPNode> _TQ3BSP__3;
+	
+	typedef System::DynamicArray<Stage::Vectortypes::TVector4f> _TQ3BSP__4;
+	
+	typedef System::DynamicArray<TBSPLeaf> _TQ3BSP__5;
+	
+	typedef System::DynamicArray<TBSPFace> _TQ3BSP__6;
+	
+	typedef System::DynamicArray<TBSPTexture> _TQ3BSP__7;
+	
+	typedef System::DynamicArray<TBSPLightmap> _TQ3BSP__8;
+	
+	
+public:
+	TBSPHeader Header;
+	_TQ3BSP__1 Lumps;
+	int numOfVerts;
+	int NumOfNodes;
+	int NumOfPlanes;
+	int NumOfLeaves;
+	int NumOfFaces;
+	int NumOfTextures;
+	int NumOfLightmaps;
+	_TQ3BSP__2 Vertices;
+	_TQ3BSP__3 Nodes;
+	_TQ3BSP__4 Planes;
+	_TQ3BSP__5 Leaves;
+	_TQ3BSP__6 Faces;
+	_TQ3BSP__7 Textures;
+	_TQ3BSP__8 Lightmaps;
+	TBSPVisData VisData;
+	__fastcall TQ3BSP(System::Classes::TStream* bspStream);
+public:
+	/* TObject.Destroy */ inline __fastcall virtual ~TQ3BSP() { }
+	
+};
+
+#pragma pack(pop)
+
+//-- var, const, procedure ---------------------------------------------------
+static _DELPHI_CONST System::Int8 FACE_POLYGON = System::Int8(0x1);
+static _DELPHI_CONST System::Word MAX_TEXTURES = System::Word(0x3e8);
+static _DELPHI_CONST System::Int8 kEntities = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 kTextures = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 kPlanes = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 kNodes = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 kLeafs = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 kLeafFaces = System::Int8(0x5);
+static _DELPHI_CONST System::Int8 kLeafBrushes = System::Int8(0x6);
+static _DELPHI_CONST System::Int8 kModels = System::Int8(0x7);
+static _DELPHI_CONST System::Int8 kBrushes = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 kBrushSides = System::Int8(0x9);
+static _DELPHI_CONST System::Int8 kVertices = System::Int8(0xa);
+static _DELPHI_CONST System::Int8 kMeshVerts = System::Int8(0xb);
+static _DELPHI_CONST System::Int8 kShaders = System::Int8(0xc);
+static _DELPHI_CONST System::Int8 kFaces = System::Int8(0xd);
+static _DELPHI_CONST System::Int8 kLightmaps = System::Int8(0xe);
+static _DELPHI_CONST System::Int8 kLightVolumes = System::Int8(0xf);
+static _DELPHI_CONST System::Int8 kVisData = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 kMaxLumps = System::Int8(0x11);
+}	/* namespace Q3bsp */
+}	/* namespace Formats */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS_Q3BSP)
+using namespace Formats::Q3bsp;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS)
+using namespace Formats;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// Formats_Q3BSPHPP

+ 71 - 0
include/Win32/Formats.TGA.hpp

@@ -0,0 +1,71 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'Formats.TGA.pas' rev: 36.00 (Windows)
+
+#ifndef Formats_TGAHPP
+#define Formats_TGAHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.OpenGL.hpp>
+#include <Winapi.OpenGLext.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <Stage.OpenGLTokens.hpp>
+#include <GLS.Context.hpp>
+#include <GLS.Graphics.hpp>
+#include <GLS.ApplicationFileIO.hpp>
+#include <Stage.TextureFormat.hpp>
+#include <GLS.BaseClasses.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Formats
+{
+namespace Tga
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TGLTGAImage;
+//-- type declarations -------------------------------------------------------
+class PASCALIMPLEMENTATION TGLTGAImage : public Gls::Graphics::TGLBaseImage
+{
+	typedef Gls::Graphics::TGLBaseImage inherited;
+	
+public:
+	virtual void __fastcall LoadFromFile(const System::UnicodeString filename);
+	virtual void __fastcall SaveToFile(const System::UnicodeString filename);
+	virtual void __fastcall LoadFromStream(System::Classes::TStream* stream);
+	virtual void __fastcall SaveToStream(System::Classes::TStream* stream);
+	__classmethod virtual Gls::Applicationfileio::TGLDataFileCapabilities __fastcall Capabilities();
+	HIDESBASE void __fastcall AssignFromTexture(Gls::Context::TGLContext* textureContext, const unsigned textureHandle, Stage::Textureformat::TglTextureTarget textureTarget, const bool CurrentFormat, const Stage::Textureformat::TglInternalFormat intFormat);
+public:
+	/* TGLBaseImage.Create */ inline __fastcall virtual TGLTGAImage() : Gls::Graphics::TGLBaseImage() { }
+	/* TGLBaseImage.Destroy */ inline __fastcall virtual ~TGLTGAImage() { }
+	
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+}	/* namespace Tga */
+}	/* namespace Formats */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS_TGA)
+using namespace Formats::Tga;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS)
+using namespace Formats;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// Formats_TGAHPP

+ 2023 - 0
include/Win32/Formats.VFW.hpp

@@ -0,0 +1,2023 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'Formats.VFW.pas' rev: 36.00 (Windows)
+
+#ifndef Formats_VFWHPP
+#define Formats_VFWHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <Winapi.Windows.hpp>
+#include <Winapi.MMSystem.hpp>
+#include <Winapi.Messages.hpp>
+#include <Winapi.CommDlg.hpp>
+#include <Winapi.ActiveX.hpp>
+#include <System.Types.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Formats
+{
+namespace Vfw
+{
+//-- forward type declarations -----------------------------------------------
+struct TICOPEN;
+struct TICINFO;
+struct TICCOMPRESS;
+struct TICCOMPRESSFRAMES;
+struct TICSETSTATUSPROC;
+struct TICDECOMPRESS;
+struct TICDECOMPRESSEX;
+struct TICDRAWBEGIN;
+struct TICDRAW;
+struct TICDRAWSUGGEST;
+struct TICPALETTE;
+struct TCOMPVARS;
+struct TDRAWDIBTIME;
+struct TMainAVIHeader;
+struct TAVIStreamHeader;
+struct TAVIINDEXENTRY;
+struct TAVIPALCHANGE;
+struct TAVIStreamInfoW;
+struct TAVIStreamInfoA;
+struct TAVIFileInfoW;
+struct TAVIFileInfoA;
+struct TAVICOMPRESSOPTIONS;
+__interface DELPHIINTERFACE IAVIStream;
+typedef System::DelphiInterface<IAVIStream> _di_IAVIStream;
+__interface DELPHIINTERFACE IAVIStreaming;
+typedef System::DelphiInterface<IAVIStreaming> _di_IAVIStreaming;
+__interface DELPHIINTERFACE IAVIEditStream;
+typedef System::DelphiInterface<IAVIEditStream> _di_IAVIEditStream;
+__interface DELPHIINTERFACE IAVIFile;
+typedef System::DelphiInterface<IAVIFile> _di_IAVIFile;
+__interface DELPHIINTERFACE IGetFrame;
+typedef System::DelphiInterface<IGetFrame> _di_IGetFrame;
+struct TVIDEOHDR;
+struct TCHANNEL_CAPS;
+struct TCAPDRIVERCAPS;
+struct TCAPSTATUS;
+struct TCAPTUREPARMS;
+struct TCAPINFOCHUNK;
+//-- type declarations -------------------------------------------------------
+typedef void * PVOID;
+
+typedef System::LongInt LONG;
+
+typedef int *PLONG;
+
+typedef int Int;
+
+typedef Winapi::Windows::THandle HIC;
+
+typedef System::Word TWOCC;
+
+typedef TICOPEN *PICOPEN;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TICOPEN
+{
+public:
+	unsigned dwSize;
+	unsigned fccType;
+	unsigned fccHandler;
+	unsigned dwVersion;
+	unsigned dwFlags;
+	unsigned dwError;
+	PVOID pV1Reserved;
+	PVOID pV2Reserved;
+	unsigned dnDevNode;
+};
+#pragma pack(pop)
+
+
+typedef TICINFO *PICINFO;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TICINFO
+{
+public:
+	unsigned dwSize;
+	unsigned fccType;
+	unsigned fccHandler;
+	unsigned dwFlags;
+	unsigned dwVersion;
+	unsigned dwVersionICM;
+	System::StaticArray<System::WideChar, 16> szName;
+	System::StaticArray<System::WideChar, 128> szDescription;
+	System::StaticArray<System::WideChar, 128> szDriver;
+};
+#pragma pack(pop)
+
+
+typedef TICCOMPRESS *PICCOMPRESS;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TICCOMPRESS
+{
+public:
+	unsigned dwFlags;
+	Winapi::Windows::PBitmapInfoHeader lpbiOutput;
+	PVOID lpOutput;
+	Winapi::Windows::PBitmapInfoHeader lpbiInput;
+	PVOID lpInput;
+	unsigned *lpckid;
+	unsigned *lpdwFlags;
+	LONG lFrameNum;
+	unsigned dwFrameSize;
+	unsigned dwQuality;
+	Winapi::Windows::PBitmapInfoHeader lpbiPrev;
+	PVOID lpPrev;
+};
+#pragma pack(pop)
+
+
+typedef LONG __stdcall (*TICCompressProc)(int lInputOutput, unsigned lFrame, PVOID lpBits, LONG len);
+
+typedef TICCOMPRESSFRAMES *PICCOMPRESSFRAMES;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TICCOMPRESSFRAMES
+{
+public:
+	unsigned dwFlags;
+	Winapi::Windows::PBitmapInfoHeader lpbiOutput;
+	int lOutput;
+	Winapi::Windows::PBitmapInfoHeader lpbiInput;
+	int lInput;
+	LONG lStartFrame;
+	LONG lFrameCount;
+	LONG lQuality;
+	LONG lDataRate;
+	LONG lKeyRate;
+	unsigned dwRate;
+	unsigned dwScale;
+	unsigned dwOverheadPerFrame;
+	unsigned dwReserved2;
+	TICCompressProc GetData;
+	TICCompressProc PutData;
+};
+#pragma pack(pop)
+
+
+typedef LONG __stdcall (*TICStatusProc)(int lParam, unsigned message, LONG l);
+
+typedef TICSETSTATUSPROC *PICSETSTATUSPROC;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TICSETSTATUSPROC
+{
+public:
+	unsigned dwFlags;
+	int lParam;
+	TICStatusProc Status;
+};
+#pragma pack(pop)
+
+
+typedef TICDECOMPRESS *PICDECOMPRESS;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TICDECOMPRESS
+{
+public:
+	unsigned dwFlags;
+	Winapi::Windows::PBitmapInfoHeader lpbiInput;
+	PVOID lpInput;
+	Winapi::Windows::PBitmapInfoHeader lpbiOutput;
+	PVOID lpOutput;
+	unsigned ckid;
+};
+#pragma pack(pop)
+
+
+typedef TICDECOMPRESSEX *PICDECOMPRESSEX;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TICDECOMPRESSEX
+{
+public:
+	unsigned dwFlags;
+	Winapi::Windows::PBitmapInfoHeader lpbiSrc;
+	PVOID lpSrc;
+	Winapi::Windows::PBitmapInfoHeader lpbiDst;
+	PVOID lpDst;
+	Int xDst;
+	Int yDst;
+	Int dxDst;
+	Int dyDst;
+	Int xSrc;
+	Int ySrc;
+	Int dxSrc;
+	Int dySrc;
+};
+#pragma pack(pop)
+
+
+typedef TICDRAWBEGIN *PICDRAWBEGIN;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TICDRAWBEGIN
+{
+public:
+	unsigned dwFlags;
+	HPALETTE hpal;
+	HWND hwnd;
+	HDC hdc;
+	Int xDst;
+	Int yDst;
+	Int dxDst;
+	Int dyDst;
+	Winapi::Windows::PBitmapInfoHeader lpbi;
+	Int xSrc;
+	Int ySrc;
+	Int dxSrc;
+	Int dySrc;
+	unsigned dwRate;
+	unsigned dwScale;
+};
+#pragma pack(pop)
+
+
+typedef TICDRAW *PICDRAW;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TICDRAW
+{
+public:
+	unsigned dwFlags;
+	PVOID lpFormat;
+	PVOID lpData;
+	unsigned cbData;
+	LONG lTime;
+};
+#pragma pack(pop)
+
+
+typedef TICDRAWSUGGEST *PICDRAWSUGGEST;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TICDRAWSUGGEST
+{
+public:
+	Winapi::Windows::PBitmapInfoHeader lpbiIn;
+	Winapi::Windows::PBitmapInfoHeader lpbiSuggest;
+	Int dxSrc;
+	Int dySrc;
+	Int dxDst;
+	Int dyDst;
+	HIC hicDecompressor;
+};
+#pragma pack(pop)
+
+
+typedef TICPALETTE *PICPALETTE;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TICPALETTE
+{
+public:
+	unsigned dwFlags;
+	Int iStart;
+	Int iLen;
+	Winapi::Windows::PPaletteEntry lppe;
+};
+#pragma pack(pop)
+
+
+typedef TCOMPVARS *PCOMPVARS;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TCOMPVARS
+{
+public:
+	unsigned cbSize;
+	unsigned dwFlags;
+	HIC hic;
+	unsigned fccType;
+	unsigned fccHandler;
+	Winapi::Windows::PBitmapInfo lpbiIn;
+	Winapi::Windows::PBitmapInfo lpbiOut;
+	PVOID lpBitsOut;
+	PVOID lpBitsPrev;
+	LONG lFrame;
+	LONG lKey;
+	LONG lDataRate;
+	LONG lQ;
+	LONG lKeyCount;
+	PVOID lpState;
+	LONG cbState;
+};
+#pragma pack(pop)
+
+
+typedef Winapi::Windows::THandle HDRAWDIB;
+
+typedef TDRAWDIBTIME *PDRAWDIBTIME;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TDRAWDIBTIME
+{
+public:
+	LONG timeCount;
+	LONG timeDraw;
+	LONG timeDecompress;
+	LONG timeDither;
+	LONG timeStretch;
+	LONG timeBlt;
+	LONG timeSetDIBits;
+};
+#pragma pack(pop)
+
+
+typedef TMainAVIHeader *PMainAVIHeader;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TMainAVIHeader
+{
+public:
+	unsigned dwMicroSecPerFrame;
+	unsigned dwMaxBytesPerSec;
+	unsigned dwPaddingGranularity;
+	unsigned dwFlags;
+	unsigned dwTotalFrames;
+	unsigned dwInitialFrames;
+	unsigned dwStreams;
+	unsigned dwSuggestedBufferSize;
+	unsigned dwWidth;
+	unsigned dwHeight;
+	System::StaticArray<unsigned, 4> dwReserved;
+};
+#pragma pack(pop)
+
+
+typedef TAVIStreamHeader *PAVIStreamHeader;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TAVIStreamHeader
+{
+public:
+	unsigned fccType;
+	unsigned fccHandler;
+	unsigned dwFlags;
+	System::Word wPriority;
+	System::Word wLanguage;
+	unsigned dwInitialFrames;
+	unsigned dwScale;
+	unsigned dwRate;
+	unsigned dwStart;
+	unsigned dwLength;
+	unsigned dwSuggestedBufferSize;
+	unsigned dwQuality;
+	unsigned dwSampleSize;
+	Winapi::Windows::TRect rcFrame;
+};
+#pragma pack(pop)
+
+
+typedef TAVIINDEXENTRY *PAVIINDEXENTRY;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TAVIINDEXENTRY
+{
+public:
+	unsigned ckid;
+	unsigned dwFlags;
+	unsigned dwChunkOffset;
+	unsigned dwChunkLength;
+};
+#pragma pack(pop)
+
+
+typedef TAVIPALCHANGE *PAVIPALCHANGE;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TAVIPALCHANGE
+{
+public:
+	System::Byte bFirstEntry;
+	System::Byte bNumEntries;
+	System::Word wFlags;
+	System::StaticArray<tagPALETTEENTRY, 1> peNew;
+};
+#pragma pack(pop)
+
+
+typedef TAVIStreamInfoW *PAVIStreamInfoW;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TAVIStreamInfoW
+{
+public:
+	unsigned fccType;
+	unsigned fccHandler;
+	unsigned dwFlags;
+	unsigned dwCaps;
+	System::Word wPriority;
+	System::Word wLanguage;
+	unsigned dwScale;
+	unsigned dwRate;
+	unsigned dwStart;
+	unsigned dwLength;
+	unsigned dwInitialFrames;
+	unsigned dwSuggestedBufferSize;
+	unsigned dwQuality;
+	unsigned dwSampleSize;
+	Winapi::Windows::TRect rcFrame;
+	unsigned dwEditCount;
+	unsigned dwFormatChangeCount;
+	System::StaticArray<System::WideChar, 64> szName;
+};
+#pragma pack(pop)
+
+
+typedef TAVIStreamInfoA *PAVIStreamInfoA;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TAVIStreamInfoA
+{
+public:
+	unsigned fccType;
+	unsigned fccHandler;
+	unsigned dwFlags;
+	unsigned dwCaps;
+	System::Word wPriority;
+	System::Word wLanguage;
+	unsigned dwScale;
+	unsigned dwRate;
+	unsigned dwStart;
+	unsigned dwLength;
+	unsigned dwInitialFrames;
+	unsigned dwSuggestedBufferSize;
+	unsigned dwQuality;
+	unsigned dwSampleSize;
+	Winapi::Windows::TRect rcFrame;
+	unsigned dwEditCount;
+	unsigned dwFormatChangeCount;
+	System::StaticArray<char, 64> szName;
+};
+#pragma pack(pop)
+
+
+typedef TAVIStreamInfoW *PAVIStreamInfo;
+
+typedef TAVIStreamInfoW TAVIStreamInfo;
+
+typedef TAVIFileInfoW *PAVIFileInfoW;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TAVIFileInfoW
+{
+public:
+	unsigned dwMaxBytesPerSec;
+	unsigned dwFlags;
+	unsigned dwCaps;
+	unsigned dwStreams;
+	unsigned dwSuggestedBufferSize;
+	unsigned dwWidth;
+	unsigned dwHeight;
+	unsigned dwScale;
+	unsigned dwRate;
+	unsigned dwLength;
+	unsigned dwEditCount;
+	System::StaticArray<System::WideChar, 64> szFileType;
+};
+#pragma pack(pop)
+
+
+typedef TAVIFileInfoA *PAVIFileInfoA;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TAVIFileInfoA
+{
+public:
+	unsigned dwMaxBytesPerSec;
+	unsigned dwFlags;
+	unsigned dwCaps;
+	unsigned dwStreams;
+	unsigned dwSuggestedBufferSize;
+	unsigned dwWidth;
+	unsigned dwHeight;
+	unsigned dwScale;
+	unsigned dwRate;
+	unsigned dwLength;
+	unsigned dwEditCount;
+	System::StaticArray<char, 64> szFileType;
+};
+#pragma pack(pop)
+
+
+typedef TAVIFileInfoW *PAVIFileInfo;
+
+typedef TAVIFileInfoW TAVIFileInfo;
+
+typedef System::LongBool __pascal (*TAVISAVECALLBACK)(Int i);
+
+typedef TAVICOMPRESSOPTIONS *PAVICOMPRESSOPTIONS;
+
+#pragma pack(push,1)
+struct DECLSPEC_DRECORD TAVICOMPRESSOPTIONS
+{
+public:
+	unsigned fccType;
+	unsigned fccHandler;
+	unsigned dwKeyFrameEvery;
+	unsigned dwQuality;
+	unsigned dwBytesPerSecond;
+	unsigned dwFlags;
+	PVOID lpFormat;
+	unsigned cbFormat;
+	PVOID lpParms;
+	unsigned cbParms;
+	unsigned dwInterleaveEvery;
+};
+#pragma pack(pop)
+
+
+__interface IAVIStream  : public System::IInterface 
+{
+	virtual HRESULT __stdcall Create(int lParam1, int lParam2) = 0 ;
+	virtual HRESULT __stdcall Info(TAVIStreamInfoW &psi, LONG lSize) = 0 ;
+	virtual LONG __stdcall FindSample(LONG lPos, LONG lFlags) = 0 ;
+	virtual HRESULT __stdcall ReadFormat(LONG lPos, PVOID lpFormat, LONG &lpcbFormat) = 0 ;
+	virtual HRESULT __stdcall SetFormat(LONG lPos, PVOID lpFormat, LONG cbFormat) = 0 ;
+	virtual HRESULT __stdcall Read(LONG lStart, LONG lSamples, PVOID lpBuffer, LONG cbBuffer, LONG &plBytes, LONG &plSamples) = 0 ;
+	virtual HRESULT __stdcall Write(LONG lStart, LONG lSamples, PVOID lpBuffer, LONG cbBuffer, unsigned dwFlags, LONG &plSampWritten, LONG &plBytesWritten) = 0 ;
+	virtual HRESULT __stdcall Delete(LONG lStart, LONG lSamples) = 0 ;
+	virtual HRESULT __stdcall ReadData(unsigned fcc, PVOID lp, LONG &lpcb) = 0 ;
+	virtual HRESULT __stdcall WriteData(unsigned fcc, PVOID lp, LONG cb) = 0 ;
+	virtual HRESULT __stdcall SetInfo(TAVIStreamInfoW &lpInfo, LONG cbInfo) = 0 ;
+};
+
+__interface IAVIStreaming  : public System::IInterface 
+{
+	virtual HRESULT __stdcall _Begin(LONG lStart, LONG lEnd, LONG lRate) = 0 ;
+	virtual HRESULT __stdcall _End() = 0 ;
+};
+
+__interface IAVIEditStream  : public System::IInterface 
+{
+	virtual HRESULT __stdcall Cut(LONG &plStart, LONG &plLength, _di_IAVIStream &ppResult) = 0 ;
+	virtual HRESULT __stdcall Copy(LONG &plStart, LONG &plLength, _di_IAVIStream &ppResult) = 0 ;
+	virtual HRESULT __stdcall Paste(LONG &plPos, LONG &plLength, _di_IAVIStream pstream, LONG lStart, LONG lEnd) = 0 ;
+	virtual HRESULT __stdcall Clone(_di_IAVIStream &ppResult) = 0 ;
+	virtual HRESULT __stdcall SetInfo(TAVIStreamInfoW &lpInfo, LONG cbInfo) = 0 ;
+};
+
+__interface IAVIFile  : public System::IInterface 
+{
+	virtual HRESULT __stdcall Info(TAVIFileInfoW &pfi, LONG iSize) = 0 ;
+	virtual HRESULT __stdcall GetStream(_di_IAVIStream &ppStream, unsigned fccType, LONG lParam) = 0 ;
+	virtual HRESULT __stdcall CreateStream(_di_IAVIStream &ppStream, TAVIStreamInfoW &psi) = 0 ;
+	virtual HRESULT __stdcall WriteData(unsigned ckid, PVOID lpData, LONG cbData) = 0 ;
+	virtual HRESULT __stdcall ReadData(unsigned ckid, PVOID lpData, PLONG lpcbData) = 0 ;
+	virtual HRESULT __stdcall EndRecord() = 0 ;
+	virtual HRESULT __stdcall DeleteStream(unsigned fccType, LONG lParam) = 0 ;
+};
+
+__interface IGetFrame  : public System::IInterface 
+{
+	virtual Winapi::Windows::PBitmapInfoHeader __stdcall GetFrame(LONG lPos) = 0 ;
+	virtual HRESULT __stdcall BeginExtraction(LONG lStart, LONG lEnd, LONG lRate) = 0 ;
+	virtual HRESULT __stdcall EndExtraction() = 0 ;
+	virtual HRESULT __stdcall SetFormat(Winapi::Windows::TBitmapInfoHeader &lpbi, void * lpBits, int x, int y, int dx, int dy) = 0 ;
+};
+
+typedef System::_di_IInterface *PUnknown;
+
+typedef Winapi::Windows::THandle HVIDEO;
+
+typedef unsigned *PHVIDEO;
+
+typedef TVIDEOHDR *PVIDEOHDR;
+
+struct DECLSPEC_DRECORD TVIDEOHDR
+{
+public:
+	Winapi::Windows::PByte lpData;
+	unsigned dwBufferLength;
+	unsigned dwBytesUsed;
+	unsigned dwTimeCaptured;
+	unsigned dwUser;
+	unsigned dwFlags;
+	System::StaticArray<unsigned, 4> dwReserved;
+};
+
+
+typedef TCHANNEL_CAPS *PCHANNEL_CAPS;
+
+struct DECLSPEC_DRECORD TCHANNEL_CAPS
+{
+public:
+	unsigned dwFlags;
+	unsigned dwSrcRectXMod;
+	unsigned dwSrcRectYMod;
+	unsigned dwSrcRectWidthMod;
+	unsigned dwSrcRectHeightMod;
+	unsigned dwDstRectXMod;
+	unsigned dwDstRectYMod;
+	unsigned dwDstRectWidthMod;
+	unsigned dwDstRectHeightMod;
+};
+
+
+typedef unsigned __stdcall (*TCAPYIELDCALLBACK)(HWND hWnd);
+
+typedef unsigned __stdcall (*TCAPSTATUSCALLBACKW)(HWND hWnd, Int nID, System::WideChar * lpsz);
+
+typedef unsigned __stdcall (*TCAPERRORCALLBACKW)(HWND hWnd, Int nID, System::WideChar * lpsz);
+
+typedef unsigned __stdcall (*TCAPSTATUSCALLBACKA)(HWND hWnd, Int nID, char * lpsz);
+
+typedef unsigned __stdcall (*TCAPERRORCALLBACKA)(HWND hWnd, Int nID, char * lpsz);
+
+typedef TCAPSTATUSCALLBACKA TCAPSTATUSCALLBACK;
+
+typedef TCAPERRORCALLBACKA TCAPERRORCALLBACK;
+
+typedef unsigned __stdcall (*TCAPVIDEOCALLBACK)(HWND hWnd, PVIDEOHDR lpVHdr);
+
+typedef unsigned __stdcall (*TCAPWAVECALLBACK)(HWND hWnd, Winapi::Mmsystem::PWaveHdr lpWHdr);
+
+typedef unsigned __stdcall (*TCAPCONTROLCALLBACK)(HWND hWnd, Int nState);
+
+typedef TCAPDRIVERCAPS *PCAPDRIVERCAPS;
+
+struct DECLSPEC_DRECORD TCAPDRIVERCAPS
+{
+public:
+	unsigned wDeviceIndex;
+	System::LongBool fHasOverlay;
+	System::LongBool fHasDlgVideoSource;
+	System::LongBool fHasDlgVideoFormat;
+	System::LongBool fHasDlgVideoDisplay;
+	System::LongBool fCaptureInitialized;
+	System::LongBool fDriverSuppliesPalettes;
+	Winapi::Windows::THandle hVideoIn;
+	Winapi::Windows::THandle hVideoOut;
+	Winapi::Windows::THandle hVideoExtIn;
+	Winapi::Windows::THandle hVideoExtOut;
+};
+
+
+typedef TCAPSTATUS *PCAPSTATUS;
+
+struct DECLSPEC_DRECORD TCAPSTATUS
+{
+public:
+	unsigned uiImageWidth;
+	unsigned uiImageHeight;
+	System::LongBool fLiveWindow;
+	System::LongBool fOverlayWindow;
+	System::LongBool fScale;
+	Winapi::Windows::TPoint ptScroll;
+	System::LongBool fUsingDefaultPalette;
+	System::LongBool fAudioHardware;
+	System::LongBool fCapFileExists;
+	unsigned dwCurrentVideoFrame;
+	unsigned dwCurrentVideoFramesDropped;
+	unsigned dwCurrentWaveSamples;
+	unsigned dwCurrentTimeElapsedMS;
+	HPALETTE hPalCurrent;
+	System::LongBool fCapturingNow;
+	unsigned dwReturn;
+	unsigned wNumVideoAllocated;
+	unsigned wNumAudioAllocated;
+};
+
+
+typedef TCAPTUREPARMS *PCAPTUREPARMS;
+
+struct DECLSPEC_DRECORD TCAPTUREPARMS
+{
+public:
+	unsigned dwRequestMicroSecPerFrame;
+	System::LongBool fMakeUserHitOKToCapture;
+	unsigned wPercentDropForError;
+	System::LongBool fYield;
+	unsigned dwIndexSize;
+	unsigned wChunkGranularity;
+	System::LongBool fUsingDOSMemory;
+	unsigned wNumVideoRequested;
+	System::LongBool fCaptureAudio;
+	unsigned wNumAudioRequested;
+	unsigned vKeyAbort;
+	System::LongBool fAbortLeftMouse;
+	System::LongBool fAbortRightMouse;
+	System::LongBool fLimitEnabled;
+	unsigned wTimeLimit;
+	System::LongBool fMCIControl;
+	System::LongBool fStepMCIDevice;
+	unsigned dwMCIStartTime;
+	unsigned dwMCIStopTime;
+	System::LongBool fStepCaptureAt2x;
+	unsigned wStepCaptureAverageFrames;
+	unsigned dwAudioBufferSize;
+	System::LongBool fDisableWriteCache;
+	unsigned AVStreamMaster;
+};
+
+
+typedef TCAPINFOCHUNK *PCAPINFOCHUNK;
+
+struct DECLSPEC_DRECORD TCAPINFOCHUNK
+{
+public:
+	unsigned fccInfoID;
+	PVOID lpData;
+	unsigned cbData;
+};
+
+
+//-- var, const, procedure ---------------------------------------------------
+static _DELPHI_CONST System::Word ICVERSION = System::Word(0x104);
+static _DELPHI_CONST int BI_1632 = int(0x32333631);
+static _DELPHI_CONST int ICTYPE_VIDEO = int(0x63646976);
+static _DELPHI_CONST int ICTYPE_AUDIO = int(0x63647561);
+static _DELPHI_CONST System::Int8 ICERR_OK = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 ICERR_DONTDRAW = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 ICERR_NEWPALETTE = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 ICERR_GOTOKEYFRAME = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 ICERR_STOPDRAWING = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 ICERR_UNSUPPORTED = System::Int8(-1);
+static _DELPHI_CONST System::Int8 ICERR_BADFORMAT = System::Int8(-2);
+static _DELPHI_CONST System::Int8 ICERR_MEMORY = System::Int8(-3);
+static _DELPHI_CONST System::Int8 ICERR_INTERNAL = System::Int8(-4);
+static _DELPHI_CONST System::Int8 ICERR_BADFLAGS = System::Int8(-5);
+static _DELPHI_CONST System::Int8 ICERR_BADPARAM = System::Int8(-6);
+static _DELPHI_CONST System::Int8 ICERR_BADSIZE = System::Int8(-7);
+static _DELPHI_CONST System::Int8 ICERR_BADHANDLE = System::Int8(-8);
+static _DELPHI_CONST System::Int8 ICERR_CANTUPDATE = System::Int8(-9);
+static _DELPHI_CONST System::Int8 ICERR_ABORT = System::Int8(-10);
+static _DELPHI_CONST System::Int8 ICERR_ERROR = System::Int8(-100);
+static _DELPHI_CONST short ICERR_BADBITDEPTH = short(-200);
+static _DELPHI_CONST short ICERR_BADIMAGESIZE = short(-201);
+static _DELPHI_CONST short ICERR_CUSTOM = short(-400);
+static _DELPHI_CONST System::Int8 ICMODE_COMPRESS = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 ICMODE_DECOMPRESS = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 ICMODE_FASTDECOMPRESS = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 ICMODE_QUERY = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 ICMODE_FASTCOMPRESS = System::Int8(0x5);
+static _DELPHI_CONST System::Int8 ICMODE_DRAW = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 AVIIF_LIST = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 AVIIF_TWOCC = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 AVIIF_KEYFRAME = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 ICQUALITY_LOW = System::Int8(0x0);
+static _DELPHI_CONST System::Word ICQUALITY_HIGH = System::Word(0x2710);
+static _DELPHI_CONST System::Int8 ICQUALITY_DEFAULT = System::Int8(-1);
+static _DELPHI_CONST System::Word ICM_USER = System::Word(0x4000);
+static _DELPHI_CONST System::Word ICM_RESERVED_LOW = System::Word(0x5000);
+static _DELPHI_CONST System::Word ICM_RESERVED_HIGH = System::Word(0x6000);
+static _DELPHI_CONST System::Word ICM_RESERVED = System::Word(0x5000);
+static _DELPHI_CONST System::Word ICM_GETSTATE = System::Word(0x5000);
+static _DELPHI_CONST System::Word ICM_SETSTATE = System::Word(0x5001);
+static _DELPHI_CONST System::Word ICM_GETINFO = System::Word(0x5002);
+static _DELPHI_CONST System::Word ICM_CONFIGURE = System::Word(0x500a);
+static _DELPHI_CONST System::Word ICM_ABOUT = System::Word(0x500b);
+static _DELPHI_CONST System::Word ICM_GETDEFAULTQUALITY = System::Word(0x501e);
+static _DELPHI_CONST System::Word ICM_GETQUALITY = System::Word(0x501f);
+static _DELPHI_CONST System::Word ICM_SETQUALITY = System::Word(0x5020);
+static _DELPHI_CONST System::Word ICM_SET = System::Word(0x5028);
+static _DELPHI_CONST System::Word ICM_GET = System::Word(0x5029);
+static _DELPHI_CONST int ICM_FRAMERATE = int(0x526d7246);
+static _DELPHI_CONST int ICM_KEYFRAMERATE = int(0x5279654b);
+static _DELPHI_CONST System::Word ICM_COMPRESS_GET_FORMAT = System::Word(0x4004);
+static _DELPHI_CONST System::Word ICM_COMPRESS_GET_SIZE = System::Word(0x4005);
+static _DELPHI_CONST System::Word ICM_COMPRESS_QUERY = System::Word(0x4006);
+static _DELPHI_CONST System::Word ICM_COMPRESS_BEGIN = System::Word(0x4007);
+static _DELPHI_CONST System::Word ICM_COMPRESS = System::Word(0x4008);
+static _DELPHI_CONST System::Word ICM_COMPRESS_END = System::Word(0x4009);
+static _DELPHI_CONST System::Word ICM_DECOMPRESS_GET_FORMAT = System::Word(0x400a);
+static _DELPHI_CONST System::Word ICM_DECOMPRESS_QUERY = System::Word(0x400b);
+static _DELPHI_CONST System::Word ICM_DECOMPRESS_BEGIN = System::Word(0x400c);
+static _DELPHI_CONST System::Word ICM_DECOMPRESS = System::Word(0x400d);
+static _DELPHI_CONST System::Word ICM_DECOMPRESS_END = System::Word(0x400e);
+static _DELPHI_CONST System::Word ICM_DECOMPRESS_SET_PALETTE = System::Word(0x401d);
+static _DELPHI_CONST System::Word ICM_DECOMPRESS_GET_PALETTE = System::Word(0x401e);
+static _DELPHI_CONST System::Word ICM_DRAW_QUERY = System::Word(0x401f);
+static _DELPHI_CONST System::Word ICM_DRAW_BEGIN = System::Word(0x400f);
+static _DELPHI_CONST System::Word ICM_DRAW_GET_PALETTE = System::Word(0x4010);
+static _DELPHI_CONST System::Word ICM_DRAW_START = System::Word(0x4012);
+static _DELPHI_CONST System::Word ICM_DRAW_STOP = System::Word(0x4013);
+static _DELPHI_CONST System::Word ICM_DRAW_END = System::Word(0x4015);
+static _DELPHI_CONST System::Word ICM_DRAW_GETTIME = System::Word(0x4020);
+static _DELPHI_CONST System::Word ICM_DRAW = System::Word(0x4021);
+static _DELPHI_CONST System::Word ICM_DRAW_WINDOW = System::Word(0x4022);
+static _DELPHI_CONST System::Word ICM_DRAW_SETTIME = System::Word(0x4023);
+static _DELPHI_CONST System::Word ICM_DRAW_REALIZE = System::Word(0x4024);
+static _DELPHI_CONST System::Word ICM_DRAW_FLUSH = System::Word(0x4025);
+static _DELPHI_CONST System::Word ICM_DRAW_RENDERBUFFER = System::Word(0x4026);
+static _DELPHI_CONST System::Word ICM_DRAW_START_PLAY = System::Word(0x4027);
+static _DELPHI_CONST System::Word ICM_DRAW_STOP_PLAY = System::Word(0x4028);
+static _DELPHI_CONST System::Word ICM_DRAW_SUGGESTFORMAT = System::Word(0x4032);
+static _DELPHI_CONST System::Word ICM_DRAW_CHANGEPALETTE = System::Word(0x4033);
+static _DELPHI_CONST System::Word ICM_GETBUFFERSWANTED = System::Word(0x4029);
+static _DELPHI_CONST System::Word ICM_GETDEFAULTKEYFRAMERATE = System::Word(0x402a);
+static _DELPHI_CONST System::Word ICM_DECOMPRESSEX_BEGIN = System::Word(0x403c);
+static _DELPHI_CONST System::Word ICM_DECOMPRESSEX_QUERY = System::Word(0x403d);
+static _DELPHI_CONST System::Word ICM_DECOMPRESSEX = System::Word(0x403e);
+static _DELPHI_CONST System::Word ICM_DECOMPRESSEX_END = System::Word(0x403f);
+static _DELPHI_CONST System::Word ICM_COMPRESS_FRAMES_INFO = System::Word(0x4046);
+static _DELPHI_CONST System::Word ICM_SET_STATUS_PROC = System::Word(0x4048);
+static _DELPHI_CONST System::Int8 VIDCF_QUALITY = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 VIDCF_CRUNCH = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 VIDCF_TEMPORAL = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 VIDCF_COMPRESSFRAMES = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 VIDCF_DRAW = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 VIDCF_FASTTEMPORALC = System::Int8(0x20);
+static _DELPHI_CONST System::Byte VIDCF_FASTTEMPORALD = System::Byte(0x80);
+static _DELPHI_CONST System::Int8 ICCOMPRESS_KEYFRAME = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 ICCOMPRESSFRAMES_PADDING = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 ICSTATUS_START = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 ICSTATUS_STATUS = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 ICSTATUS_END = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 ICSTATUS_ERROR = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 ICSTATUS_YIELD = System::Int8(0x4);
+static _DELPHI_CONST unsigned ICDECOMPRESS_HURRYUP = unsigned(0x80000000);
+static _DELPHI_CONST int ICDECOMPRESS_UPDATE = int(0x40000000);
+static _DELPHI_CONST int ICDECOMPRESS_PREROLL = int(0x20000000);
+static _DELPHI_CONST int ICDECOMPRESS_NULLFRAME = int(0x10000000);
+static _DELPHI_CONST int ICDECOMPRESS_NOTKEYFRAME = int(0x8000000);
+static _DELPHI_CONST System::Int8 ICDRAW_QUERY = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 ICDRAW_FULLSCREEN = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 ICDRAW_HDC = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 ICDRAW_ANIMATE = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 ICDRAW_CONTINUE = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 ICDRAW_MEMORYDC = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 ICDRAW_UPDATING = System::Int8(0x40);
+static _DELPHI_CONST System::Byte ICDRAW_RENDER = System::Byte(0x80);
+static _DELPHI_CONST System::Word ICDRAW_BUFFER = System::Word(0x100);
+static _DELPHI_CONST unsigned ICDRAW_HURRYUP = unsigned(0x80000000);
+static _DELPHI_CONST int ICDRAW_UPDATE = int(0x40000000);
+static _DELPHI_CONST int ICDRAW_PREROLL = int(0x20000000);
+static _DELPHI_CONST int ICDRAW_NULLFRAME = int(0x10000000);
+static _DELPHI_CONST int ICDRAW_NOTKEYFRAME = int(0x8000000);
+static _DELPHI_CONST System::Word ICINSTALL_UNICODE = System::Word(0x8000);
+static _DELPHI_CONST System::Int8 ICINSTALL_FUNCTION = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 ICINSTALL_DRIVER = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 ICINSTALL_HDRV = System::Int8(0x4);
+static _DELPHI_CONST System::Word ICINSTALL_DRIVERW = System::Word(0x8002);
+static _DELPHI_CONST System::Int8 ICMF_CONFIGURE_QUERY = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 ICMF_ABOUT_QUERY = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 ICMF_COMPVARS_VALID = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 ICMF_CHOOSE_KEYFRAME = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 ICMF_CHOOSE_DATARATE = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 ICMF_CHOOSE_PREVIEW = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 ICMF_CHOOSE_ALLCOMPRESSORS = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 DDF_UPDATE = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 DDF_SAME_HDC = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 DDF_SAME_DRAW = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 DDF_DONTDRAW = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 DDF_ANIMATE = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 DDF_BUFFER = System::Int8(0x40);
+static _DELPHI_CONST System::Byte DDF_JUSTDRAWIT = System::Byte(0x80);
+static _DELPHI_CONST System::Word DDF_FULLSCREEN = System::Word(0x100);
+static _DELPHI_CONST System::Word DDF_BACKGROUNDPAL = System::Word(0x200);
+static _DELPHI_CONST System::Word DDF_NOTKEYFRAME = System::Word(0x400);
+static _DELPHI_CONST System::Word DDF_HURRYUP = System::Word(0x800);
+static _DELPHI_CONST System::Word DDF_HALFTONE = System::Word(0x1000);
+static _DELPHI_CONST System::Int8 DDF_PREROLL = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 DDF_SAME_DIB = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 DDF_SAME_SIZE = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 PD_CAN_DRAW_DIB = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 PD_CAN_STRETCHDIB = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 PD_STRETCHDIB_1_1_OK = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 PD_STRETCHDIB_1_2_OK = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 PD_STRETCHDIB_1_N_OK = System::Int8(0x10);
+static _DELPHI_CONST int formtypeAVI = int(0x20495641);
+static _DELPHI_CONST int listtypeAVIHEADER = int(0x6c726468);
+static _DELPHI_CONST int ckidAVIMAINHDR = int(0x68697661);
+static _DELPHI_CONST int listtypeSTREAMHEADER = int(0x6c727473);
+static _DELPHI_CONST int ckidSTREAMHEADER = int(0x68727473);
+static _DELPHI_CONST int ckidSTREAMFORMAT = int(0x66727473);
+static _DELPHI_CONST int ckidSTREAMHANDLERDATA = int(0x64727473);
+static _DELPHI_CONST int ckidSTREAMNAME = int(0x6e727473);
+static _DELPHI_CONST int listtypeAVIMOVIE = int(0x69766f6d);
+static _DELPHI_CONST int listtypeAVIRECORD = int(0x20636572);
+static _DELPHI_CONST int ckidAVINEWINDEX = int(0x31786469);
+static _DELPHI_CONST int streamtypeVIDEO = int(0x73646976);
+static _DELPHI_CONST int streamtypeAUDIO = int(0x73647561);
+static _DELPHI_CONST int streamtypeMIDI = int(0x7364696d);
+static _DELPHI_CONST int streamtypeTEXT = int(0x73747874);
+static _DELPHI_CONST System::Word cktypeDIBbits = System::Word(0x6264);
+static _DELPHI_CONST System::Word cktypeDIBcompressed = System::Word(0x6364);
+static _DELPHI_CONST System::Word cktypePALchange = System::Word(0x6370);
+static _DELPHI_CONST System::Word cktypeWAVEbytes = System::Word(0x6277);
+static _DELPHI_CONST int ckidAVIPADDING = int(0x4b4e554a);
+static _DELPHI_CONST System::Int8 AVIF_HASINDEX = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 AVIF_MUSTUSEINDEX = System::Int8(0x20);
+static _DELPHI_CONST System::Word AVIF_ISINTERLEAVED = System::Word(0x100);
+static _DELPHI_CONST System::Word AVIF_TRUSTCKTYPE = System::Word(0x800);
+static _DELPHI_CONST int AVIF_WASCAPTUREFILE = int(0x10000);
+static _DELPHI_CONST int AVIF_COPYRIGHTED = int(0x20000);
+static _DELPHI_CONST System::Word AVI_HEADERSIZE = System::Word(0x800);
+static _DELPHI_CONST System::Int8 AVISF_DISABLED = System::Int8(0x1);
+static _DELPHI_CONST int AVISF_VIDEO_PALCHANGES = int(0x10000);
+static _DELPHI_CONST System::Word AVIIF_NOTIME = System::Word(0x100);
+static _DELPHI_CONST int AVIIF_COMPUSE = int(0xfff0000);
+static _DELPHI_CONST System::Int8 AVIGETFRAMEF_BESTDISPLAYFMT = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 AVISTREAMINFO_DISABLED = System::Int8(0x1);
+static _DELPHI_CONST int AVISTREAMINFO_FORMATCHANGES = int(0x10000);
+static _DELPHI_CONST System::Int8 AVIFILEINFO_HASINDEX = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 AVIFILEINFO_MUSTUSEINDEX = System::Int8(0x20);
+static _DELPHI_CONST System::Word AVIFILEINFO_ISINTERLEAVED = System::Word(0x100);
+static _DELPHI_CONST int AVIFILEINFO_WASCAPTUREFILE = int(0x10000);
+static _DELPHI_CONST int AVIFILEINFO_COPYRIGHTED = int(0x20000);
+static _DELPHI_CONST System::Int8 AVIFILECAPS_CANREAD = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 AVIFILECAPS_CANWRITE = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 AVIFILECAPS_ALLKEYFRAMES = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 AVIFILECAPS_NOCOMPRESSION = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 AVICOMPRESSF_INTERLEAVE = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 AVICOMPRESSF_DATARATE = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 AVICOMPRESSF_KEYFRAMES = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 AVICOMPRESSF_VALID = System::Int8(0x8);
+extern DELPHI_PACKAGE GUID IID_IAVIFile;
+extern DELPHI_PACKAGE GUID IID_IAVIStream;
+extern DELPHI_PACKAGE GUID IID_IAVIStreaming;
+extern DELPHI_PACKAGE GUID IID_IGetFrame;
+extern DELPHI_PACKAGE GUID IID_IAVIEditStream;
+extern DELPHI_PACKAGE GUID CLSID_AVISimpleUnMarshal;
+extern DELPHI_PACKAGE GUID CLSID_AVIFile;
+static _DELPHI_CONST System::Int8 AVIFILEHANDLER_CANREAD = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 AVIFILEHANDLER_CANWRITE = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 AVIFILEHANDLER_CANACCEPTNONRGB = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 AVISTREAMREAD_CONVENIENT = System::Int8(-1);
+static _DELPHI_CONST System::Int8 FIND_DIR = System::Int8(0xf);
+static _DELPHI_CONST System::Int8 FIND_NEXT = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 FIND_PREV = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 FIND_FROM_START = System::Int8(0x8);
+static _DELPHI_CONST System::Byte FIND_TYPE = System::Byte(0xf0);
+static _DELPHI_CONST System::Int8 FIND_KEY = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 FIND_ANY = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 FIND_FORMAT = System::Int8(0x40);
+static _DELPHI_CONST System::Word FIND_RET = System::Word(0xf000);
+static _DELPHI_CONST System::Int8 FIND_POS = System::Int8(0x0);
+static _DELPHI_CONST System::Word FIND_LENGTH = System::Word(0x1000);
+static _DELPHI_CONST System::Word FIND_OFFSET = System::Word(0x2000);
+static _DELPHI_CONST System::Word FIND_SIZE = System::Word(0x3000);
+static _DELPHI_CONST System::Word FIND_INDEX = System::Word(0x4000);
+static _DELPHI_CONST System::Int8 SEARCH_NEAREST = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 SEARCH_BACKWARD = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 SEARCH_FORWARD = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 SEARCH_KEY = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 SEARCH_ANY = System::Int8(0x20);
+static _DELPHI_CONST int comptypeDIB = int(0x20424944);
+static _DELPHI_CONST System::Int8 AVIERR_OK = System::Int8(0x0);
+static _DELPHI_CONST unsigned AVIERR_UNSUPPORTED = unsigned(0x80044065);
+static _DELPHI_CONST unsigned AVIERR_BADFORMAT = unsigned(0x80044066);
+static _DELPHI_CONST unsigned AVIERR_MEMORY = unsigned(0x80044067);
+static _DELPHI_CONST unsigned AVIERR_INTERNAL = unsigned(0x80044068);
+static _DELPHI_CONST unsigned AVIERR_BADFLAGS = unsigned(0x80044069);
+static _DELPHI_CONST unsigned AVIERR_BADPARAM = unsigned(0x8004406a);
+static _DELPHI_CONST unsigned AVIERR_BADSIZE = unsigned(0x8004406b);
+static _DELPHI_CONST unsigned AVIERR_BADHANDLE = unsigned(0x8004406c);
+static _DELPHI_CONST unsigned AVIERR_FILEREAD = unsigned(0x8004406d);
+static _DELPHI_CONST unsigned AVIERR_FILEWRITE = unsigned(0x8004406e);
+static _DELPHI_CONST unsigned AVIERR_FILEOPEN = unsigned(0x8004406f);
+static _DELPHI_CONST unsigned AVIERR_COMPRESSOR = unsigned(0x80044070);
+static _DELPHI_CONST unsigned AVIERR_NOCOMPRESSOR = unsigned(0x80044071);
+static _DELPHI_CONST unsigned AVIERR_READONLY = unsigned(0x80044072);
+static _DELPHI_CONST unsigned AVIERR_NODATA = unsigned(0x80044073);
+static _DELPHI_CONST unsigned AVIERR_BUFFERTOOSMALL = unsigned(0x80044074);
+static _DELPHI_CONST unsigned AVIERR_CANTCOMPRESS = unsigned(0x80044075);
+static _DELPHI_CONST unsigned AVIERR_USERABORT = unsigned(0x800440c6);
+static _DELPHI_CONST unsigned AVIERR_ERROR = unsigned(0x800440c7);
+#define MCIWND_WINDOW_CLASS L"MCIWndClass"
+static _DELPHI_CONST System::Int8 MCIWNDOPENF_NEW = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 MCIWNDF_NOAUTOSIZEWINDOW = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 MCIWNDF_NOPLAYBAR = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 MCIWNDF_NOAUTOSIZEMOVIE = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 MCIWNDF_NOMENU = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 MCIWNDF_SHOWNAME = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 MCIWNDF_SHOWPOS = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 MCIWNDF_SHOWMODE = System::Int8(0x40);
+static _DELPHI_CONST System::Int8 MCIWNDF_SHOWALL = System::Int8(0x70);
+static _DELPHI_CONST System::Word MCIWNDF_NOTIFYMODE = System::Word(0x100);
+static _DELPHI_CONST System::Word MCIWNDF_NOTIFYPOS = System::Word(0x200);
+static _DELPHI_CONST System::Word MCIWNDF_NOTIFYSIZE = System::Word(0x400);
+static _DELPHI_CONST System::Word MCIWNDF_NOTIFYERROR = System::Word(0x1000);
+static _DELPHI_CONST System::Word MCIWNDF_NOTIFYALL = System::Word(0x1f00);
+static _DELPHI_CONST System::Byte MCIWNDF_NOTIFYANSI = System::Byte(0x80);
+static _DELPHI_CONST System::Word MCIWNDF_NOTIFYMEDIAA = System::Word(0x880);
+static _DELPHI_CONST System::Word MCIWNDF_NOTIFYMEDIAW = System::Word(0x800);
+static _DELPHI_CONST System::Word MCIWNDF_NOTIFYMEDIA = System::Word(0x880);
+static _DELPHI_CONST System::Word MCIWNDF_RECORD = System::Word(0x2000);
+static _DELPHI_CONST System::Word MCIWNDF_NOERRORDLG = System::Word(0x4000);
+static _DELPHI_CONST System::Word MCIWNDF_NOOPEN = System::Word(0x8000);
+static _DELPHI_CONST System::Word MCIWNDM_GETDEVICEID = System::Word(0x464);
+static _DELPHI_CONST System::Word MCIWNDM_GETSTART = System::Word(0x467);
+static _DELPHI_CONST System::Word MCIWNDM_GETLENGTH = System::Word(0x468);
+static _DELPHI_CONST System::Word MCIWNDM_GETEND = System::Word(0x469);
+static _DELPHI_CONST System::Word MCIWNDM_EJECT = System::Word(0x46b);
+static _DELPHI_CONST System::Word MCIWNDM_SETZOOM = System::Word(0x46c);
+static _DELPHI_CONST System::Word MCIWNDM_GETZOOM = System::Word(0x46d);
+static _DELPHI_CONST System::Word MCIWNDM_SETVOLUME = System::Word(0x46e);
+static _DELPHI_CONST System::Word MCIWNDM_GETVOLUME = System::Word(0x46f);
+static _DELPHI_CONST System::Word MCIWNDM_SETSPEED = System::Word(0x470);
+static _DELPHI_CONST System::Word MCIWNDM_GETSPEED = System::Word(0x471);
+static _DELPHI_CONST System::Word MCIWNDM_SETREPEAT = System::Word(0x472);
+static _DELPHI_CONST System::Word MCIWNDM_GETREPEAT = System::Word(0x473);
+static _DELPHI_CONST System::Word MCIWNDM_REALIZE = System::Word(0x476);
+static _DELPHI_CONST System::Word MCIWNDM_VALIDATEMEDIA = System::Word(0x479);
+static _DELPHI_CONST System::Word MCIWNDM_PLAYFROM = System::Word(0x47a);
+static _DELPHI_CONST System::Word MCIWNDM_PLAYTO = System::Word(0x47b);
+static _DELPHI_CONST System::Word MCIWNDM_GETPALETTE = System::Word(0x47e);
+static _DELPHI_CONST System::Word MCIWNDM_SETPALETTE = System::Word(0x47f);
+static _DELPHI_CONST System::Word MCIWNDM_SETTIMERS = System::Word(0x481);
+static _DELPHI_CONST System::Word MCIWNDM_SETACTIVETIMER = System::Word(0x482);
+static _DELPHI_CONST System::Word MCIWNDM_SETINACTIVETIMER = System::Word(0x483);
+static _DELPHI_CONST System::Word MCIWNDM_GETACTIVETIMER = System::Word(0x484);
+static _DELPHI_CONST System::Word MCIWNDM_GETINACTIVETIMER = System::Word(0x485);
+static _DELPHI_CONST System::Word MCIWNDM_CHANGESTYLES = System::Word(0x487);
+static _DELPHI_CONST System::Word MCIWNDM_GETSTYLES = System::Word(0x488);
+static _DELPHI_CONST System::Word MCIWNDM_GETALIAS = System::Word(0x489);
+static _DELPHI_CONST System::Word MCIWNDM_PLAYREVERSE = System::Word(0x48b);
+static _DELPHI_CONST System::Word MCIWNDM_GET_SOURCE = System::Word(0x48c);
+static _DELPHI_CONST System::Word MCIWNDM_PUT_SOURCE = System::Word(0x48d);
+static _DELPHI_CONST System::Word MCIWNDM_GET_DEST = System::Word(0x48e);
+static _DELPHI_CONST System::Word MCIWNDM_PUT_DEST = System::Word(0x48f);
+static _DELPHI_CONST System::Word MCIWNDM_CAN_PLAY = System::Word(0x490);
+static _DELPHI_CONST System::Word MCIWNDM_CAN_WINDOW = System::Word(0x491);
+static _DELPHI_CONST System::Word MCIWNDM_CAN_RECORD = System::Word(0x492);
+static _DELPHI_CONST System::Word MCIWNDM_CAN_SAVE = System::Word(0x493);
+static _DELPHI_CONST System::Word MCIWNDM_CAN_EJECT = System::Word(0x494);
+static _DELPHI_CONST System::Word MCIWNDM_CAN_CONFIG = System::Word(0x495);
+static _DELPHI_CONST System::Word MCIWNDM_PALETTEKICK = System::Word(0x496);
+static _DELPHI_CONST System::Word MCIWNDM_OPENINTERFACE = System::Word(0x497);
+static _DELPHI_CONST System::Word MCIWNDM_SETOWNER = System::Word(0x498);
+static _DELPHI_CONST System::Word MCIWNDM_SENDSTRINGA = System::Word(0x465);
+static _DELPHI_CONST System::Word MCIWNDM_GETPOSITIONA = System::Word(0x466);
+static _DELPHI_CONST System::Word MCIWNDM_GETMODEA = System::Word(0x46a);
+static _DELPHI_CONST System::Word MCIWNDM_SETTIMEFORMATA = System::Word(0x477);
+static _DELPHI_CONST System::Word MCIWNDM_GETTIMEFORMATA = System::Word(0x478);
+static _DELPHI_CONST System::Word MCIWNDM_GETFILENAMEA = System::Word(0x47c);
+static _DELPHI_CONST System::Word MCIWNDM_GETDEVICEA = System::Word(0x47d);
+static _DELPHI_CONST System::Word MCIWNDM_GETERRORA = System::Word(0x480);
+static _DELPHI_CONST System::Word MCIWNDM_NEWA = System::Word(0x486);
+static _DELPHI_CONST System::Word MCIWNDM_RETURNSTRINGA = System::Word(0x48a);
+static _DELPHI_CONST System::Word MCIWNDM_OPENA = System::Word(0x499);
+static _DELPHI_CONST System::Word MCIWNDM_SENDSTRINGW = System::Word(0x4c9);
+static _DELPHI_CONST System::Word MCIWNDM_GETPOSITIONW = System::Word(0x4ca);
+static _DELPHI_CONST System::Word MCIWNDM_GETMODEW = System::Word(0x4ce);
+static _DELPHI_CONST System::Word MCIWNDM_SETTIMEFORMATW = System::Word(0x4db);
+static _DELPHI_CONST System::Word MCIWNDM_GETTIMEFORMATW = System::Word(0x4dc);
+static _DELPHI_CONST System::Word MCIWNDM_GETFILENAMEW = System::Word(0x4e0);
+static _DELPHI_CONST System::Word MCIWNDM_GETDEVICEW = System::Word(0x4e1);
+static _DELPHI_CONST System::Word MCIWNDM_GETERRORW = System::Word(0x4e4);
+static _DELPHI_CONST System::Word MCIWNDM_NEWW = System::Word(0x4ea);
+static _DELPHI_CONST System::Word MCIWNDM_RETURNSTRINGW = System::Word(0x4ee);
+static _DELPHI_CONST System::Word MCIWNDM_OPENW = System::Word(0x4fc);
+static _DELPHI_CONST System::Word MCIWNDM_SENDSTRING = System::Word(0x465);
+static _DELPHI_CONST System::Word MCIWNDM_GETPOSITION = System::Word(0x466);
+static _DELPHI_CONST System::Word MCIWNDM_GETMODE = System::Word(0x46a);
+static _DELPHI_CONST System::Word MCIWNDM_SETTIMEFORMAT = System::Word(0x477);
+static _DELPHI_CONST System::Word MCIWNDM_GETTIMEFORMAT = System::Word(0x478);
+static _DELPHI_CONST System::Word MCIWNDM_GETFILENAME = System::Word(0x47c);
+static _DELPHI_CONST System::Word MCIWNDM_GETDEVICE = System::Word(0x47d);
+static _DELPHI_CONST System::Word MCIWNDM_GETERROR = System::Word(0x480);
+static _DELPHI_CONST System::Word MCIWNDM_NEW = System::Word(0x486);
+static _DELPHI_CONST System::Word MCIWNDM_RETURNSTRING = System::Word(0x48a);
+static _DELPHI_CONST System::Word MCIWNDM_OPEN = System::Word(0x499);
+static _DELPHI_CONST System::Word MCIWNDM_NOTIFYMODE = System::Word(0x4c8);
+static _DELPHI_CONST System::Word MCIWNDM_NOTIFYPOS = System::Word(0x4c9);
+static _DELPHI_CONST System::Word MCIWNDM_NOTIFYSIZE = System::Word(0x4ca);
+static _DELPHI_CONST System::Word MCIWNDM_NOTIFYMEDIA = System::Word(0x4cb);
+static _DELPHI_CONST System::Word MCIWNDM_NOTIFYERROR = System::Word(0x4cd);
+static _DELPHI_CONST unsigned MCIWND_START = unsigned(0xffffffff);
+static _DELPHI_CONST unsigned MCIWND_END = unsigned(0xfffffffe);
+static _DELPHI_CONST System::Int8 DV_ERR_OK = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 DV_ERR_BASE = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 DV_ERR_NONSPECIFIC = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 DV_ERR_BADFORMAT = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 DV_ERR_STILLPLAYING = System::Int8(0x3);
+static _DELPHI_CONST System::Int8 DV_ERR_UNPREPARED = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 DV_ERR_SYNC = System::Int8(0x5);
+static _DELPHI_CONST System::Int8 DV_ERR_TOOMANYCHANNELS = System::Int8(0x6);
+static _DELPHI_CONST System::Int8 DV_ERR_NOTDETECTED = System::Int8(0x7);
+static _DELPHI_CONST System::Int8 DV_ERR_BADINSTALL = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 DV_ERR_CREATEPALETTE = System::Int8(0x9);
+static _DELPHI_CONST System::Int8 DV_ERR_SIZEFIELD = System::Int8(0xa);
+static _DELPHI_CONST System::Int8 DV_ERR_PARAM1 = System::Int8(0xb);
+static _DELPHI_CONST System::Int8 DV_ERR_PARAM2 = System::Int8(0xc);
+static _DELPHI_CONST System::Int8 DV_ERR_CONFIG1 = System::Int8(0xd);
+static _DELPHI_CONST System::Int8 DV_ERR_CONFIG2 = System::Int8(0xe);
+static _DELPHI_CONST System::Int8 DV_ERR_FLAGS = System::Int8(0xf);
+static _DELPHI_CONST System::Int8 DV_ERR_13 = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 DV_ERR_NOTSUPPORTED = System::Int8(0x11);
+static _DELPHI_CONST System::Int8 DV_ERR_NOMEM = System::Int8(0x12);
+static _DELPHI_CONST System::Int8 DV_ERR_ALLOCATED = System::Int8(0x13);
+static _DELPHI_CONST System::Int8 DV_ERR_BADDEVICEID = System::Int8(0x14);
+static _DELPHI_CONST System::Int8 DV_ERR_INVALHANDLE = System::Int8(0x15);
+static _DELPHI_CONST System::Int8 DV_ERR_BADERRNUM = System::Int8(0x16);
+static _DELPHI_CONST System::Int8 DV_ERR_NO_BUFFERS = System::Int8(0x17);
+static _DELPHI_CONST System::Int8 DV_ERR_MEM_CONFLICT = System::Int8(0x18);
+static _DELPHI_CONST System::Int8 DV_ERR_IO_CONFLICT = System::Int8(0x19);
+static _DELPHI_CONST System::Int8 DV_ERR_DMA_CONFLICT = System::Int8(0x1a);
+static _DELPHI_CONST System::Int8 DV_ERR_INT_CONFLICT = System::Int8(0x1b);
+static _DELPHI_CONST System::Int8 DV_ERR_PROTECT_ONLY = System::Int8(0x1c);
+static _DELPHI_CONST System::Int8 DV_ERR_LASTERROR = System::Int8(0x1c);
+static _DELPHI_CONST System::Word DV_ERR_USER_MSG = System::Word(0x3e9);
+static _DELPHI_CONST System::Word DV_VM_OPEN = System::Word(0x3d0);
+static _DELPHI_CONST System::Word DV_VM_CLOSE = System::Word(0x3d1);
+static _DELPHI_CONST System::Word DV_VM_DATA = System::Word(0x3d2);
+static _DELPHI_CONST System::Word DV_VM_ERROR = System::Word(0x3d3);
+static _DELPHI_CONST System::Int8 VHDR_DONE = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 VHDR_PREPARED = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 VHDR_INQUEUE = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 VHDR_KEYFRAME = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 VCAPS_OVERLAY = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 VCAPS_SRC_CAN_CLIP = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 VCAPS_DST_CAN_CLIP = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 VCAPS_CAN_SCALE = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 VIDEO_EXTERNALIN = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 VIDEO_EXTERNALOUT = System::Int8(0x2);
+static _DELPHI_CONST System::Int8 VIDEO_IN = System::Int8(0x4);
+static _DELPHI_CONST System::Int8 VIDEO_OUT = System::Int8(0x8);
+static _DELPHI_CONST System::Int8 VIDEO_DLG_QUERY = System::Int8(0x10);
+static _DELPHI_CONST System::Word VIDEO_CONFIGURE_QUERY = System::Word(0x8000);
+static _DELPHI_CONST System::Word VIDEO_CONFIGURE_SET = System::Word(0x1000);
+static _DELPHI_CONST System::Word VIDEO_CONFIGURE_GET = System::Word(0x2000);
+static _DELPHI_CONST System::Int8 VIDEO_CONFIGURE_QUERYSIZE = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 VIDEO_CONFIGURE_CURRENT = System::Int8(0x10);
+static _DELPHI_CONST System::Int8 VIDEO_CONFIGURE_NOMINAL = System::Int8(0x20);
+static _DELPHI_CONST System::Int8 VIDEO_CONFIGURE_MIN = System::Int8(0x40);
+static _DELPHI_CONST System::Byte VIDEO_CONFIGURE_MAX = System::Byte(0x80);
+static _DELPHI_CONST System::Word DVM_USER = System::Word(0x4000);
+static _DELPHI_CONST System::Word DVM_CONFIGURE_START = System::Word(0x1000);
+static _DELPHI_CONST System::Word DVM_CONFIGURE_END = System::Word(0x1fff);
+static _DELPHI_CONST System::Word DVM_PALETTE = System::Word(0x1001);
+static _DELPHI_CONST System::Word DVM_FORMAT = System::Word(0x1002);
+static _DELPHI_CONST System::Word DVM_PALETTERGB555 = System::Word(0x1003);
+static _DELPHI_CONST System::Word DVM_SRC_RECT = System::Word(0x1004);
+static _DELPHI_CONST System::Word DVM_DST_RECT = System::Word(0x1005);
+static _DELPHI_CONST System::Word WM_CAP_START = System::Word(0x400);
+static _DELPHI_CONST System::Word WM_CAP_UNICODE_START = System::Word(0x464);
+static _DELPHI_CONST System::Word WM_CAP_GET_CAPSTREAMPTR = System::Word(0x401);
+static _DELPHI_CONST System::Word WM_CAP_SET_CALLBACK_ERRORW = System::Word(0x466);
+static _DELPHI_CONST System::Word WM_CAP_SET_CALLBACK_STATUSW = System::Word(0x467);
+static _DELPHI_CONST System::Word WM_CAP_SET_CALLBACK_ERRORA = System::Word(0x402);
+static _DELPHI_CONST System::Word WM_CAP_SET_CALLBACK_STATUSA = System::Word(0x403);
+static _DELPHI_CONST System::Word WM_CAP_SET_CALLBACK_ERROR = System::Word(0x402);
+static _DELPHI_CONST System::Word WM_CAP_SET_CALLBACK_STATUS = System::Word(0x403);
+static _DELPHI_CONST System::Word WM_CAP_SET_CALLBACK_YIELD = System::Word(0x404);
+static _DELPHI_CONST System::Word WM_CAP_SET_CALLBACK_FRAME = System::Word(0x405);
+static _DELPHI_CONST System::Word WM_CAP_SET_CALLBACK_VIDEOSTREAM = System::Word(0x406);
+static _DELPHI_CONST System::Word WM_CAP_SET_CALLBACK_WAVESTREAM = System::Word(0x407);
+static _DELPHI_CONST System::Word WM_CAP_GET_USER_DATA = System::Word(0x408);
+static _DELPHI_CONST System::Word WM_CAP_SET_USER_DATA = System::Word(0x409);
+static _DELPHI_CONST System::Word WM_CAP_DRIVER_CONNECT = System::Word(0x40a);
+static _DELPHI_CONST System::Word WM_CAP_DRIVER_DISCONNECT = System::Word(0x40b);
+static _DELPHI_CONST System::Word WM_CAP_DRIVER_GET_NAMEA = System::Word(0x40c);
+static _DELPHI_CONST System::Word WM_CAP_DRIVER_GET_VERSIONA = System::Word(0x40d);
+static _DELPHI_CONST System::Word WM_CAP_DRIVER_GET_NAMEW = System::Word(0x470);
+static _DELPHI_CONST System::Word WM_CAP_DRIVER_GET_VERSIONW = System::Word(0x471);
+static _DELPHI_CONST System::Word WM_CAP_DRIVER_GET_NAME = System::Word(0x40c);
+static _DELPHI_CONST System::Word WM_CAP_DRIVER_GET_VERSION = System::Word(0x40d);
+static _DELPHI_CONST System::Word WM_CAP_DRIVER_GET_CAPS = System::Word(0x40e);
+static _DELPHI_CONST System::Word WM_CAP_FILE_SET_CAPTURE_FILEA = System::Word(0x414);
+static _DELPHI_CONST System::Word WM_CAP_FILE_GET_CAPTURE_FILEA = System::Word(0x415);
+static _DELPHI_CONST System::Word WM_CAP_FILE_SAVEASA = System::Word(0x417);
+static _DELPHI_CONST System::Word WM_CAP_FILE_SAVEDIBA = System::Word(0x419);
+static _DELPHI_CONST System::Word WM_CAP_FILE_SET_CAPTURE_FILEW = System::Word(0x478);
+static _DELPHI_CONST System::Word WM_CAP_FILE_GET_CAPTURE_FILEW = System::Word(0x479);
+static _DELPHI_CONST System::Word WM_CAP_FILE_SAVEASW = System::Word(0x47b);
+static _DELPHI_CONST System::Word WM_CAP_FILE_SAVEDIBW = System::Word(0x47d);
+static _DELPHI_CONST System::Word WM_CAP_FILE_SET_CAPTURE_FILE = System::Word(0x414);
+static _DELPHI_CONST System::Word WM_CAP_FILE_GET_CAPTURE_FILE = System::Word(0x415);
+static _DELPHI_CONST System::Word WM_CAP_FILE_SAVEAS = System::Word(0x417);
+static _DELPHI_CONST System::Word WM_CAP_FILE_SAVEDIB = System::Word(0x419);
+static _DELPHI_CONST System::Word WM_CAP_FILE_ALLOCATE = System::Word(0x416);
+static _DELPHI_CONST System::Word WM_CAP_FILE_SET_INFOCHUNK = System::Word(0x418);
+static _DELPHI_CONST System::Word WM_CAP_EDIT_COPY = System::Word(0x41e);
+static _DELPHI_CONST System::Word WM_CAP_SET_AUDIOFORMAT = System::Word(0x423);
+static _DELPHI_CONST System::Word WM_CAP_GET_AUDIOFORMAT = System::Word(0x424);
+static _DELPHI_CONST System::Word WM_CAP_DLG_VIDEOFORMAT = System::Word(0x429);
+static _DELPHI_CONST System::Word WM_CAP_DLG_VIDEOSOURCE = System::Word(0x42a);
+static _DELPHI_CONST System::Word WM_CAP_DLG_VIDEODISPLAY = System::Word(0x42b);
+static _DELPHI_CONST System::Word WM_CAP_GET_VIDEOFORMAT = System::Word(0x42c);
+static _DELPHI_CONST System::Word WM_CAP_SET_VIDEOFORMAT = System::Word(0x42d);
+static _DELPHI_CONST System::Word WM_CAP_DLG_VIDEOCOMPRESSION = System::Word(0x42e);
+static _DELPHI_CONST System::Word WM_CAP_SET_PREVIEW = System::Word(0x432);
+static _DELPHI_CONST System::Word WM_CAP_SET_OVERLAY = System::Word(0x433);
+static _DELPHI_CONST System::Word WM_CAP_SET_PREVIEWRATE = System::Word(0x434);
+static _DELPHI_CONST System::Word WM_CAP_SET_SCALE = System::Word(0x435);
+static _DELPHI_CONST System::Word WM_CAP_GET_STATUS = System::Word(0x436);
+static _DELPHI_CONST System::Word WM_CAP_SET_SCROLL = System::Word(0x437);
+static _DELPHI_CONST System::Word WM_CAP_GRAB_FRAME = System::Word(0x43c);
+static _DELPHI_CONST System::Word WM_CAP_GRAB_FRAME_NOSTOP = System::Word(0x43d);
+static _DELPHI_CONST System::Word WM_CAP_SEQUENCE = System::Word(0x43e);
+static _DELPHI_CONST System::Word WM_CAP_SEQUENCE_NOFILE = System::Word(0x43f);
+static _DELPHI_CONST System::Word WM_CAP_SET_SEQUENCE_SETUP = System::Word(0x440);
+static _DELPHI_CONST System::Word WM_CAP_GET_SEQUENCE_SETUP = System::Word(0x441);
+static _DELPHI_CONST System::Word WM_CAP_SET_MCI_DEVICEA = System::Word(0x442);
+static _DELPHI_CONST System::Word WM_CAP_GET_MCI_DEVICEA = System::Word(0x443);
+static _DELPHI_CONST System::Word WM_CAP_SET_MCI_DEVICEW = System::Word(0x4a6);
+static _DELPHI_CONST System::Word WM_CAP_GET_MCI_DEVICEW = System::Word(0x4a7);
+static _DELPHI_CONST System::Word WM_CAP_SET_MCI_DEVICE = System::Word(0x442);
+static _DELPHI_CONST System::Word WM_CAP_GET_MCI_DEVICE = System::Word(0x443);
+static _DELPHI_CONST System::Word WM_CAP_STOP = System::Word(0x444);
+static _DELPHI_CONST System::Word WM_CAP_ABORT = System::Word(0x445);
+static _DELPHI_CONST System::Word WM_CAP_SINGLE_FRAME_OPEN = System::Word(0x446);
+static _DELPHI_CONST System::Word WM_CAP_SINGLE_FRAME_CLOSE = System::Word(0x447);
+static _DELPHI_CONST System::Word WM_CAP_SINGLE_FRAME = System::Word(0x448);
+static _DELPHI_CONST System::Word WM_CAP_PAL_OPENA = System::Word(0x450);
+static _DELPHI_CONST System::Word WM_CAP_PAL_SAVEA = System::Word(0x451);
+static _DELPHI_CONST System::Word WM_CAP_PAL_OPENW = System::Word(0x4b4);
+static _DELPHI_CONST System::Word WM_CAP_PAL_SAVEW = System::Word(0x4b5);
+static _DELPHI_CONST System::Word WM_CAP_PAL_OPEN = System::Word(0x450);
+static _DELPHI_CONST System::Word WM_CAP_PAL_SAVE = System::Word(0x451);
+static _DELPHI_CONST System::Word WM_CAP_PAL_PASTE = System::Word(0x452);
+static _DELPHI_CONST System::Word WM_CAP_PAL_AUTOCREATE = System::Word(0x453);
+static _DELPHI_CONST System::Word WM_CAP_PAL_MANUALCREATE = System::Word(0x454);
+static _DELPHI_CONST System::Word WM_CAP_SET_CALLBACK_CAPCONTROL = System::Word(0x455);
+static _DELPHI_CONST System::Word WM_CAP_UNICODE_END = System::Word(0x4b5);
+static _DELPHI_CONST System::Word WM_CAP_END = System::Word(0x4b5);
+static _DELPHI_CONST System::Int8 AVSTREAMMASTER_AUDIO = System::Int8(0x0);
+static _DELPHI_CONST System::Int8 AVSTREAMMASTER_NONE = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 CONTROLCALLBACK_PREROLL = System::Int8(0x1);
+static _DELPHI_CONST System::Int8 CONTROLCALLBACK_CAPTURING = System::Int8(0x2);
+static _DELPHI_CONST int infotypeDIGITIZATION_TIME = int(0x54494449);
+static _DELPHI_CONST int infotypeSMPTE_TIME = int(0x504d5349);
+static _DELPHI_CONST System::Word IDS_CAP_BEGIN = System::Word(0x12c);
+static _DELPHI_CONST System::Word IDS_CAP_END = System::Word(0x12d);
+static _DELPHI_CONST System::Word IDS_CAP_INFO = System::Word(0x191);
+static _DELPHI_CONST System::Word IDS_CAP_OUTOFMEM = System::Word(0x192);
+static _DELPHI_CONST System::Word IDS_CAP_FILEEXISTS = System::Word(0x193);
+static _DELPHI_CONST System::Word IDS_CAP_ERRORPALOPEN = System::Word(0x194);
+static _DELPHI_CONST System::Word IDS_CAP_ERRORPALSAVE = System::Word(0x195);
+static _DELPHI_CONST System::Word IDS_CAP_ERRORDIBSAVE = System::Word(0x196);
+static _DELPHI_CONST System::Word IDS_CAP_DEFAVIEXT = System::Word(0x197);
+static _DELPHI_CONST System::Word IDS_CAP_DEFPALEXT = System::Word(0x198);
+static _DELPHI_CONST System::Word IDS_CAP_CANTOPEN = System::Word(0x199);
+static _DELPHI_CONST System::Word IDS_CAP_SEQ_MSGSTART = System::Word(0x19a);
+static _DELPHI_CONST System::Word IDS_CAP_SEQ_MSGSTOP = System::Word(0x19b);
+static _DELPHI_CONST System::Word IDS_CAP_VIDEDITERR = System::Word(0x19c);
+static _DELPHI_CONST System::Word IDS_CAP_READONLYFILE = System::Word(0x19d);
+static _DELPHI_CONST System::Word IDS_CAP_WRITEERROR = System::Word(0x19e);
+static _DELPHI_CONST System::Word IDS_CAP_NODISKSPACE = System::Word(0x19f);
+static _DELPHI_CONST System::Word IDS_CAP_SETFILESIZE = System::Word(0x1a0);
+static _DELPHI_CONST System::Word IDS_CAP_SAVEASPERCENT = System::Word(0x1a1);
+static _DELPHI_CONST System::Word IDS_CAP_DRIVER_ERROR = System::Word(0x1a2);
+static _DELPHI_CONST System::Word IDS_CAP_WAVE_OPEN_ERROR = System::Word(0x1a3);
+static _DELPHI_CONST System::Word IDS_CAP_WAVE_ALLOC_ERROR = System::Word(0x1a4);
+static _DELPHI_CONST System::Word IDS_CAP_WAVE_PREPARE_ERROR = System::Word(0x1a5);
+static _DELPHI_CONST System::Word IDS_CAP_WAVE_ADD_ERROR = System::Word(0x1a6);
+static _DELPHI_CONST System::Word IDS_CAP_WAVE_SIZE_ERROR = System::Word(0x1a7);
+static _DELPHI_CONST System::Word IDS_CAP_VIDEO_OPEN_ERROR = System::Word(0x1a8);
+static _DELPHI_CONST System::Word IDS_CAP_VIDEO_ALLOC_ERROR = System::Word(0x1a9);
+static _DELPHI_CONST System::Word IDS_CAP_VIDEO_PREPARE_ERROR = System::Word(0x1aa);
+static _DELPHI_CONST System::Word IDS_CAP_VIDEO_ADD_ERROR = System::Word(0x1ab);
+static _DELPHI_CONST System::Word IDS_CAP_VIDEO_SIZE_ERROR = System::Word(0x1ac);
+static _DELPHI_CONST System::Word IDS_CAP_FILE_OPEN_ERROR = System::Word(0x1ad);
+static _DELPHI_CONST System::Word IDS_CAP_FILE_WRITE_ERROR = System::Word(0x1ae);
+static _DELPHI_CONST System::Word IDS_CAP_RECORDING_ERROR = System::Word(0x1af);
+static _DELPHI_CONST System::Word IDS_CAP_RECORDING_ERROR2 = System::Word(0x1b0);
+static _DELPHI_CONST System::Word IDS_CAP_AVI_INIT_ERROR = System::Word(0x1b1);
+static _DELPHI_CONST System::Word IDS_CAP_NO_FRAME_CAP_ERROR = System::Word(0x1b2);
+static _DELPHI_CONST System::Word IDS_CAP_NO_PALETTE_WARN = System::Word(0x1b3);
+static _DELPHI_CONST System::Word IDS_CAP_MCI_CONTROL_ERROR = System::Word(0x1b4);
+static _DELPHI_CONST System::Word IDS_CAP_MCI_CANT_STEP_ERROR = System::Word(0x1b5);
+static _DELPHI_CONST System::Word IDS_CAP_NO_AUDIO_CAP_ERROR = System::Word(0x1b6);
+static _DELPHI_CONST System::Word IDS_CAP_AVI_DRAWDIB_ERROR = System::Word(0x1b7);
+static _DELPHI_CONST System::Word IDS_CAP_COMPRESSOR_ERROR = System::Word(0x1b8);
+static _DELPHI_CONST System::Word IDS_CAP_AUDIO_DROP_ERROR = System::Word(0x1b9);
+static _DELPHI_CONST System::Word IDS_CAP_STAT_LIVE_MODE = System::Word(0x1f4);
+static _DELPHI_CONST System::Word IDS_CAP_STAT_OVERLAY_MODE = System::Word(0x1f5);
+static _DELPHI_CONST System::Word IDS_CAP_STAT_CAP_INIT = System::Word(0x1f6);
+static _DELPHI_CONST System::Word IDS_CAP_STAT_CAP_FINI = System::Word(0x1f7);
+static _DELPHI_CONST System::Word IDS_CAP_STAT_PALETTE_BUILD = System::Word(0x1f8);
+static _DELPHI_CONST System::Word IDS_CAP_STAT_OPTPAL_BUILD = System::Word(0x1f9);
+static _DELPHI_CONST System::Word IDS_CAP_STAT_I_FRAMES = System::Word(0x1fa);
+static _DELPHI_CONST System::Word IDS_CAP_STAT_L_FRAMES = System::Word(0x1fb);
+static _DELPHI_CONST System::Word IDS_CAP_STAT_CAP_L_FRAMES = System::Word(0x1fc);
+static _DELPHI_CONST System::Word IDS_CAP_STAT_CAP_AUDIO = System::Word(0x1fd);
+static _DELPHI_CONST System::Word IDS_CAP_STAT_VIDEOCURRENT = System::Word(0x1fe);
+static _DELPHI_CONST System::Word IDS_CAP_STAT_VIDEOAUDIO = System::Word(0x1ff);
+static _DELPHI_CONST System::Word IDS_CAP_STAT_VIDEOONLY = System::Word(0x200);
+static _DELPHI_CONST System::Word IDS_CAP_STAT_FRAMESDROPPED = System::Word(0x201);
+extern DELPHI_PACKAGE unsigned __fastcall MKFOURCC(char ch0, char ch1, char ch2, char ch3);
+extern DELPHI_PACKAGE unsigned __fastcall mmioFOURCC(char ch0, char ch1, char ch2, char ch3);
+extern DELPHI_PACKAGE TWOCC __fastcall aviTWOCC(char ch0, char ch1);
+extern DELPHI_PACKAGE System::LongBool __fastcall ICQueryAbout(HIC hic);
+extern DELPHI_PACKAGE unsigned __fastcall ICAbout(HIC hic, HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall ICQueryConfigure(HIC hic);
+extern DELPHI_PACKAGE unsigned __fastcall ICConfigure(HIC hic, HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall ICGetState(HIC hic, PVOID pv, unsigned cb);
+extern DELPHI_PACKAGE unsigned __fastcall ICSetState(HIC hic, PVOID pv, unsigned cb);
+extern DELPHI_PACKAGE unsigned __fastcall ICGetStateSize(HIC hic);
+extern DELPHI_PACKAGE unsigned __fastcall ICGetDefaultQuality(HIC hic);
+extern DELPHI_PACKAGE unsigned __fastcall ICGetDefaultKeyFrameRate(HIC hic);
+extern DELPHI_PACKAGE unsigned __fastcall ICDrawWindow(HIC hic, Winapi::Windows::PRect prc);
+extern DELPHI_PACKAGE unsigned __fastcall ICCompressBegin(HIC hic, Winapi::Windows::PBitmapInfoHeader lpbiInput, Winapi::Windows::PBitmapInfoHeader lpbiOutput);
+extern DELPHI_PACKAGE unsigned __fastcall ICCompressQuery(HIC hic, Winapi::Windows::PBitmapInfoHeader lpbiInput, Winapi::Windows::PBitmapInfoHeader lpbiOutput);
+extern DELPHI_PACKAGE unsigned __fastcall ICCompressGetFormat(HIC hic, Winapi::Windows::PBitmapInfoHeader lpbiInput, Winapi::Windows::PBitmapInfoHeader lpbiOutput);
+extern DELPHI_PACKAGE unsigned __fastcall ICCompressGetFormatSize(HIC hic, Winapi::Windows::PBitmapInfoHeader lpbi);
+extern DELPHI_PACKAGE unsigned __fastcall ICCompressGetSize(HIC hic, Winapi::Windows::PBitmapInfoHeader lpbiInput, Winapi::Windows::PBitmapInfoHeader lpbiOutput);
+extern DELPHI_PACKAGE unsigned __fastcall ICCompressEnd(HIC hic);
+extern DELPHI_PACKAGE unsigned __fastcall ICDecompressBegin(HIC hic, Winapi::Windows::PBitmapInfoHeader lpbiInput, Winapi::Windows::PBitmapInfoHeader lpbiOutput);
+extern DELPHI_PACKAGE unsigned __fastcall ICDecompressQuery(HIC hic, Winapi::Windows::PBitmapInfoHeader lpbiInput, Winapi::Windows::PBitmapInfoHeader lpbiOutput);
+extern DELPHI_PACKAGE unsigned __fastcall ICDecompressGetFormat(HIC hic, Winapi::Windows::PBitmapInfoHeader lpbiInput, Winapi::Windows::PBitmapInfoHeader lpbiOutput);
+extern DELPHI_PACKAGE unsigned __fastcall ICDecompressGetFormatSize(HIC hic, Winapi::Windows::PBitmapInfoHeader lpbi);
+extern DELPHI_PACKAGE unsigned __fastcall ICDecompressGetPalette(HIC hic, Winapi::Windows::PBitmapInfoHeader lpbiInput, Winapi::Windows::PBitmapInfoHeader lpbiOutput);
+extern DELPHI_PACKAGE unsigned __fastcall ICDecompressSetPalette(HIC hic, Winapi::Windows::PBitmapInfoHeader lpbiPalette);
+extern DELPHI_PACKAGE unsigned __fastcall ICDecompressEnd(HIC hic);
+extern DELPHI_PACKAGE unsigned __stdcall ICDecompressEx(HIC hic, unsigned dwFlags, Winapi::Windows::PBitmapInfoHeader lpbiSrc, PVOID lpSrc, Int xSrc, Int ySrc, Int dxSrc, Int dySrc, Winapi::Windows::PBitmapInfoHeader lpbiDst, PVOID lpDst, Int xDst, Int yDst, Int dxDst, Int dyDst);
+extern DELPHI_PACKAGE unsigned __stdcall ICDecompressExBegin(HIC hic, unsigned dwFlags, Winapi::Windows::PBitmapInfoHeader lpbiSrc, PVOID lpSrc, Int xSrc, Int ySrc, Int dxSrc, Int dySrc, Winapi::Windows::PBitmapInfoHeader lpbiDst, PVOID lpDst, Int xDst, Int yDst, Int dxDst, Int dyDst);
+extern DELPHI_PACKAGE unsigned __stdcall ICDecompressExQuery(HIC hic, unsigned dwFlags, Winapi::Windows::PBitmapInfoHeader lpbiSrc, PVOID lpSrc, Int xSrc, Int ySrc, Int dxSrc, Int dySrc, Winapi::Windows::PBitmapInfoHeader lpbiDst, PVOID lpDst, Int xDst, Int yDst, Int dxDst, Int dyDst);
+extern DELPHI_PACKAGE unsigned __fastcall ICDecompressExEnd(HIC hic);
+extern DELPHI_PACKAGE unsigned __stdcall ICDrawSuggestFormat(HIC hic, Winapi::Windows::PBitmapInfoHeader lpbiIn, Winapi::Windows::PBitmapInfoHeader lpbiOut, Int dxSrc, Int dySrc, Int dxDst, Int dyDst, HIC hicDecomp);
+extern DELPHI_PACKAGE unsigned __fastcall ICDrawQuery(HIC hic, Winapi::Windows::PBitmapInfoHeader lpbiInput);
+extern DELPHI_PACKAGE unsigned __fastcall ICDrawChangePalette(HIC hic, Winapi::Windows::PBitmapInfoHeader lpbiInput);
+extern DELPHI_PACKAGE unsigned __fastcall ICGetBuffersWanted(HIC hic, unsigned* lpdwBuffers);
+extern DELPHI_PACKAGE unsigned __fastcall ICDrawEnd(HIC hic);
+extern DELPHI_PACKAGE unsigned __fastcall ICDrawStart(HIC hic);
+extern DELPHI_PACKAGE unsigned __fastcall ICDrawStartPlay(HIC hic, unsigned lFrom, unsigned lTo);
+extern DELPHI_PACKAGE unsigned __fastcall ICDrawStop(HIC hic);
+extern DELPHI_PACKAGE unsigned __fastcall ICDrawStopPlay(HIC hic);
+extern DELPHI_PACKAGE unsigned __fastcall ICDrawGetTime(HIC hic, unsigned* lplTime);
+extern DELPHI_PACKAGE unsigned __fastcall ICDrawSetTime(HIC hic, unsigned lTime);
+extern DELPHI_PACKAGE unsigned __fastcall ICDrawRealize(HIC hic, HDC hdc, System::LongBool fBackground);
+extern DELPHI_PACKAGE unsigned __fastcall ICDrawFlush(HIC hic);
+extern DELPHI_PACKAGE unsigned __fastcall ICDrawRenderBuffer(HIC hic);
+extern DELPHI_PACKAGE unsigned __stdcall ICSetStatusProc(HIC hic, unsigned dwFlags, unsigned lParam, TICStatusProc fpfnStatus);
+extern DELPHI_PACKAGE HIC __fastcall ICDecompressOpen(unsigned fccType, unsigned fccHandler, Winapi::Windows::PBitmapInfoHeader lpbiIn, Winapi::Windows::PBitmapInfoHeader lpbiOut);
+extern DELPHI_PACKAGE HIC __fastcall ICDrawOpen(unsigned fccType, unsigned fccHandler, Winapi::Windows::PBitmapInfoHeader lpbiIn);
+extern DELPHI_PACKAGE System::LongBool __fastcall DrawDibUpdate(HDRAWDIB hdd, HDC hdc, Int x, Int y);
+extern DELPHI_PACKAGE System::Byte __fastcall FromHex(System::Byte n);
+extern DELPHI_PACKAGE System::Byte __fastcall StreamFromFOURCC(unsigned fcc);
+extern DELPHI_PACKAGE System::Word __fastcall TWOCCFromFOURCC(unsigned fcc);
+extern DELPHI_PACKAGE System::Byte __fastcall ToHex(System::Byte n);
+extern DELPHI_PACKAGE unsigned __fastcall MAKEAVICKID(System::Word tcc, System::Byte stream);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamSampleToSample(_di_IAVIStream pavi1, _di_IAVIStream pavi2, LONG l);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamNextSample(_di_IAVIStream pavi, LONG l);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamPrevSample(_di_IAVIStream pavi, LONG l);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamNearestSample(_di_IAVIStream pavi, LONG l);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamNextKeyFrame(_di_IAVIStream pavi, LONG l);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamPrevKeyFrame(_di_IAVIStream pavi, LONG l);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamNearestKeyFrame(_di_IAVIStream pavi, LONG l);
+extern DELPHI_PACKAGE System::LongBool __fastcall AVIStreamIsKeyFrame(_di_IAVIStream pavi, LONG l);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamPrevSampleTime(_di_IAVIStream pavi, LONG t);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamNextSampleTime(_di_IAVIStream pavi, LONG t);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamNearestSampleTime(_di_IAVIStream pavi, LONG t);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamNextKeyFrameTime(_di_IAVIStream pavi, LONG t);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamPrevKeyFrameTime(_di_IAVIStream pavi, LONG t);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamNearestKeyFrameTime(_di_IAVIStream pavi, LONG t);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamStartTime(_di_IAVIStream pavi);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamLengthTime(_di_IAVIStream pavi);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamEnd(_di_IAVIStream pavi);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamEndTime(_di_IAVIStream pavi);
+extern DELPHI_PACKAGE LONG __fastcall AVIStreamSampleSize(_di_IAVIStream pavi, LONG lPos, PLONG plSize);
+extern DELPHI_PACKAGE HRESULT __fastcall AVIStreamFormatSize(_di_IAVIStream pavi, LONG lPos, PLONG plSize);
+extern DELPHI_PACKAGE HRESULT __fastcall AVIStreamDataSize(_di_IAVIStream pavi, unsigned fcc, PLONG plSize);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndSM(HWND hWnd, unsigned Msg, unsigned wParam, int lParam);
+extern DELPHI_PACKAGE System::LongBool __fastcall MCIWndCanPlay(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall MCIWndCanRecord(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall MCIWndCanSave(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall MCIWndCanWindow(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall MCIWndCanEject(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall MCIWndCanConfig(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall MCIWndPaletteKick(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndSave(HWND hwnd, char * szFile);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndSaveDialog(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndNew(HWND hwnd, PVOID lp);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndRecord(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndOpen(HWND hwnd, char * sz, System::LongBool f);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndOpenDialog(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndClose(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndPlay(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndStop(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndPause(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndResume(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndSeek(HWND hwnd, unsigned lPos);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndEject(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndHome(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndEnd(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetSource(HWND hwnd, Winapi::Windows::PRect prc);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndPutSource(HWND hwnd, Winapi::Windows::PRect prc);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetDest(HWND hwnd, Winapi::Windows::PRect prc);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndPutDest(HWND hwnd, Winapi::Windows::PRect prc);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndPlayReverse(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndPlayFrom(HWND hwnd, unsigned lPos);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndPlayTo(HWND hwnd, unsigned lPos);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndPlayFromTo(HWND hwnd, unsigned lStart, unsigned lEnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetDeviceID(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetAlias(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetMode(HWND hwnd, char * lp, unsigned len);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetPosition(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetPositionString(HWND hwnd, char * lp, unsigned len);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetStart(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetLength(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetEnd(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndStep(HWND hwnd, unsigned n);
+extern DELPHI_PACKAGE void __fastcall MCIWndDestroy(HWND hwnd);
+extern DELPHI_PACKAGE void __fastcall MCIWndSetZoom(HWND hwnd, unsigned iZoom);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetZoom(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndSetVolume(HWND hwnd, unsigned iVol);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetVolume(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndSetSpeed(HWND hwnd, unsigned iSpeed);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetSpeed(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndSetTimeFormat(HWND hwnd, char * lp);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetTimeFormat(HWND hwnd, char * lp, unsigned len);
+extern DELPHI_PACKAGE void __fastcall MCIWndValidateMedia(HWND hwnd);
+extern DELPHI_PACKAGE void __fastcall MCIWndSetRepeat(HWND hwnd, System::LongBool f);
+extern DELPHI_PACKAGE System::LongBool __fastcall MCIWndGetRepeat(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndUseFrames(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndUseTime(HWND hwnd);
+extern DELPHI_PACKAGE void __fastcall MCIWndSetActiveTimer(HWND hwnd, unsigned active);
+extern DELPHI_PACKAGE void __fastcall MCIWndSetInactiveTimer(HWND hwnd, unsigned inactive);
+extern DELPHI_PACKAGE void __fastcall MCIWndSetTimers(HWND hwnd, unsigned active, unsigned inactive);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetActiveTimer(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetInactiveTimer(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndRealize(HWND hwnd, System::LongBool fBkgnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndSendString(HWND hwnd, char * sz);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndReturnString(HWND hwnd, char * lp, unsigned len);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetError(HWND hwnd, char * lp, unsigned len);
+extern DELPHI_PACKAGE HPALETTE __fastcall MCIWndGetPalette(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndSetPalette(HWND hwnd, HPALETTE hpal);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetFileName(HWND hwnd, char * lp, unsigned len);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetDevice(HWND hwnd, char * lp, unsigned len);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndGetStyles(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndChangeStyles(HWND hwnd, unsigned mask, unsigned value);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndOpenInterface(HWND hwnd, PUnknown pUnk);
+extern DELPHI_PACKAGE unsigned __fastcall MCIWndSetOwner(HWND hwnd, HWND hwndP);
+extern DELPHI_PACKAGE unsigned __fastcall AVICapSM(HWND hwnd, unsigned m, unsigned w, int l);
+extern DELPHI_PACKAGE System::LongBool __fastcall capSetCallbackOnError(HWND hwnd, TCAPERRORCALLBACK fpProc);
+extern DELPHI_PACKAGE System::LongBool __fastcall capSetCallbackOnStatus(HWND hwnd, TCAPSTATUSCALLBACK fpProc);
+extern DELPHI_PACKAGE System::LongBool __fastcall capSetCallbackOnYield(HWND hwnd, TCAPYIELDCALLBACK fpProc);
+extern DELPHI_PACKAGE System::LongBool __fastcall capSetCallbackOnFrame(HWND hwnd, TCAPVIDEOCALLBACK fpProc);
+extern DELPHI_PACKAGE System::LongBool __fastcall capSetCallbackOnVideoStream(HWND hwnd, TCAPVIDEOCALLBACK fpProc);
+extern DELPHI_PACKAGE System::LongBool __fastcall capSetCallbackOnWaveStream(HWND hwnd, TCAPWAVECALLBACK fpProc);
+extern DELPHI_PACKAGE System::LongBool __fastcall capSetCallbackOnCapControl(HWND hwnd, TCAPCONTROLCALLBACK fpProc);
+extern DELPHI_PACKAGE System::LongBool __fastcall capSetUserData(HWND hwnd, unsigned lUser);
+extern DELPHI_PACKAGE unsigned __fastcall capGetUserData(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capDriverConnect(HWND hwnd, Int i);
+extern DELPHI_PACKAGE System::LongBool __fastcall capDriverDisconnect(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capDriverGetName(HWND hwnd, char * szName, System::Word wSize);
+extern DELPHI_PACKAGE System::LongBool __fastcall capDriverGetVersion(HWND hwnd, char * szVer, System::Word wSize);
+extern DELPHI_PACKAGE System::LongBool __fastcall capDriverGetCaps(HWND hwnd, PCAPDRIVERCAPS s, System::Word wSize);
+extern DELPHI_PACKAGE System::LongBool __fastcall capFileSetCaptureFile(HWND hwnd, char * szName);
+extern DELPHI_PACKAGE System::LongBool __fastcall capFileGetCaptureFile(HWND hwnd, char * szName, System::Word wSize);
+extern DELPHI_PACKAGE System::LongBool __fastcall capFileAlloc(HWND hwnd, unsigned dwSize);
+extern DELPHI_PACKAGE System::LongBool __fastcall capFileSaveAs(HWND hwnd, char * szName);
+extern DELPHI_PACKAGE System::LongBool __fastcall capFileSetInfoChunk(HWND hwnd, PCAPINFOCHUNK lpInfoChunk);
+extern DELPHI_PACKAGE System::LongBool __fastcall capFileSaveDIB(HWND hwnd, char * szName);
+extern DELPHI_PACKAGE System::LongBool __fastcall capEditCopy(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capSetAudioFormat(HWND hwnd, Winapi::Mmsystem::PWaveFormatEx s, System::Word wSize);
+extern DELPHI_PACKAGE unsigned __fastcall capGetAudioFormat(HWND hwnd, Winapi::Mmsystem::PWaveFormatEx s, System::Word wSize);
+extern DELPHI_PACKAGE unsigned __fastcall capGetAudioFormatSize(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capDlgVideoFormat(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capDlgVideoSource(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capDlgVideoDisplay(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capDlgVideoCompression(HWND hwnd);
+extern DELPHI_PACKAGE unsigned __fastcall capGetVideoFormat(HWND hwnd, PVOID s, System::Word wSize);
+extern DELPHI_PACKAGE unsigned __fastcall capGetVideoFormatSize(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capSetVideoFormat(HWND hwnd, PVOID s, System::Word wSize);
+extern DELPHI_PACKAGE System::LongBool __fastcall capPreview(HWND hwnd, System::LongBool f);
+extern DELPHI_PACKAGE System::LongBool __fastcall capPreviewRate(HWND hwnd, System::Word wMS);
+extern DELPHI_PACKAGE System::LongBool __fastcall capOverlay(HWND hwnd, System::LongBool f);
+extern DELPHI_PACKAGE System::LongBool __fastcall capPreviewScale(HWND hwnd, System::LongBool f);
+extern DELPHI_PACKAGE System::LongBool __fastcall capGetStatus(HWND hwnd, PCAPSTATUS s, System::Word wSize);
+extern DELPHI_PACKAGE System::LongBool __fastcall capSetScrollPos(HWND hwnd, Winapi::Windows::PPoint lpP);
+extern DELPHI_PACKAGE System::LongBool __fastcall capGrabFrame(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capGrabFrameNoStop(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capCaptureSequence(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capCaptureSequenceNoFile(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capCaptureStop(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capCaptureAbort(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capCaptureSingleFrameOpen(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capCaptureSingleFrameClose(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capCaptureSingleFrame(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capCaptureGetSetup(HWND hwnd, PCAPTUREPARMS s, System::Word wSize);
+extern DELPHI_PACKAGE System::LongBool __fastcall capCaptureSetSetup(HWND hwnd, PCAPTUREPARMS s, System::Word wSize);
+extern DELPHI_PACKAGE System::LongBool __fastcall capSetMCIDeviceName(HWND hwnd, char * szName);
+extern DELPHI_PACKAGE System::LongBool __fastcall capGetMCIDeviceName(HWND hwnd, char * szName, System::Word wSize);
+extern DELPHI_PACKAGE System::LongBool __fastcall capPaletteOpen(HWND hwnd, char * szName);
+extern DELPHI_PACKAGE System::LongBool __fastcall capPaletteSave(HWND hwnd, char * szName);
+extern DELPHI_PACKAGE System::LongBool __fastcall capPalettePaste(HWND hwnd);
+extern DELPHI_PACKAGE System::LongBool __fastcall capPaletteAuto(HWND hwnd, Int iFrames, Int iColors);
+extern DELPHI_PACKAGE System::LongBool __fastcall capPaletteManual(HWND hwnd, System::LongBool fGrab, Int iColors);
+extern "C" unsigned __pascal VideoForWindowsVersion(void);
+extern "C" System::LongBool __stdcall ICInfo(unsigned fccType, unsigned fccHandler, PICINFO lpicinfo);
+extern "C" System::LongBool __stdcall ICInstall(unsigned fccType, unsigned fccHandler, int lParam, char * szDesc, unsigned wFlags);
+extern "C" System::LongBool __stdcall ICRemove(unsigned fccType, unsigned fccHandler, unsigned wFlags);
+extern "C" unsigned __stdcall ICGetInfo(HIC hic, PICINFO picinfo, unsigned cb);
+extern "C" HIC __stdcall ICOpen(unsigned fccType, unsigned fccHandler, unsigned wMode);
+extern "C" HIC __stdcall ICOpenFunction(unsigned fccType, unsigned fccHandler, unsigned wMode, Winapi::Windows::TFarProc lpfnHandler);
+extern "C" unsigned __stdcall ICClose(HIC hic);
+extern "C" unsigned __stdcall ICSendMessage(HIC hic, unsigned msg, unsigned dw1, unsigned dw2);
+extern "C" unsigned __cdecl ICCompress(HIC hic, unsigned dwFlags, Winapi::Windows::PBitmapInfoHeader lpbiOutput, PVOID lpData, Winapi::Windows::PBitmapInfoHeader lpbiInput, PVOID lpBits, unsigned* lpckid, unsigned* lpdwFlags, unsigned lFrameNum, unsigned dwFrameSize, unsigned dwQuality, Winapi::Windows::PBitmapInfoHeader lpbiPrev, PVOID lpPrev);
+extern "C" unsigned __cdecl ICDecompress(HIC hic, unsigned dwFlags, Winapi::Windows::PBitmapInfoHeader lpbiFormat, PVOID lpData, Winapi::Windows::PBitmapInfoHeader lpbi, PVOID lpBits);
+extern "C" unsigned __cdecl ICDrawBegin(HIC hic, unsigned dwFlags, HPALETTE hpal, HWND hwnd, HDC hdc, Int xDst, Int yDst, Int dxDst, Int dyDst, Winapi::Windows::PBitmapInfoHeader lpbi, Int xSrc, Int ySrc, Int dxSrc, Int dySrc, unsigned dwRate, unsigned dwScale);
+extern "C" unsigned __cdecl ICDraw(HIC hic, unsigned dwFlags, PVOID lpFormat, PVOID lpData, unsigned cbData, unsigned lTime);
+extern "C" HIC __stdcall ICLocate(unsigned fccType, unsigned fccHandler, Winapi::Windows::PBitmapInfoHeader lpbiIn, Winapi::Windows::PBitmapInfoHeader lpbiOut, System::Word wFlags);
+extern "C" HIC __stdcall ICGetDisplayFormat(HIC hic, Winapi::Windows::PBitmapInfoHeader lpbiIn, Winapi::Windows::PBitmapInfoHeader lpbiOut, Int BitDepth, Int dx, Int dy);
+extern "C" Winapi::Windows::THandle __stdcall ICImageCompress(HIC hic, unsigned uiFlags, Winapi::Windows::PBitmapInfo lpbiIn, PVOID lpBits, Winapi::Windows::PBitmapInfo lpbiOut, LONG lQuality, unsigned* plSize);
+extern "C" Winapi::Windows::THandle __stdcall ICImageDecompress(HIC hic, unsigned uiFlags, Winapi::Windows::PBitmapInfo lpbiIn, PVOID lpBits, Winapi::Windows::PBitmapInfo lpbiOut);
+extern "C" System::LongBool __stdcall ICCompressorChoose(HWND hwnd, unsigned uiFlags, PVOID pvIn, PVOID lpData, PCOMPVARS pc, char * lpszTitle);
+extern "C" System::LongBool __stdcall ICSeqCompressFrameStart(PCOMPVARS pc, Winapi::Windows::PBitmapInfo lpbiIn);
+extern "C" void __stdcall ICSeqCompressFrameEnd(PCOMPVARS pc);
+extern "C" PVOID __stdcall ICSeqCompressFrame(PCOMPVARS pc, unsigned uiFlags, PVOID lpBits, PBOOL pfKey, unsigned* plSize);
+extern "C" void __stdcall ICCompressorFree(PCOMPVARS pc);
+extern "C" HDRAWDIB __stdcall DrawDibOpen(void);
+extern "C" System::LongBool __stdcall DrawDibClose(HDRAWDIB hdd);
+extern "C" PVOID __stdcall DrawDibGetBuffer(HDRAWDIB hdd, Winapi::Windows::PBitmapInfoHeader lpbi, unsigned dwSize, unsigned dwFlags);
+extern "C" HPALETTE __stdcall DrawDibGetPalette(HDRAWDIB hdd);
+extern "C" System::LongBool __stdcall DrawDibSetPalette(HDRAWDIB hdd, HPALETTE hpal);
+extern "C" System::LongBool __stdcall DrawDibChangePalette(HDRAWDIB hdd, Int iStart, Int iLen, Winapi::Windows::PPaletteEntry lppe);
+extern "C" unsigned __stdcall DrawDibRealize(HDRAWDIB hdd, HDC hdc, System::LongBool fBackground);
+extern "C" System::LongBool __stdcall DrawDibStart(HDRAWDIB hdd, unsigned rate);
+extern "C" System::LongBool __stdcall DrawDibStop(HDRAWDIB hdd);
+extern "C" System::LongBool __stdcall DrawDibBegin(HDRAWDIB hdd, HDC hdc, Int dxDst, Int dyDst, Winapi::Windows::PBitmapInfoHeader lpbi, Int dxSrc, Int dySrc, unsigned wFlags);
+extern "C" System::LongBool __stdcall DrawDibDraw(HDRAWDIB hdd, HDC hdc, Int xDst, Int yDst, Int dxDst, Int dyDst, Winapi::Windows::PBitmapInfoHeader lpbi, PVOID lpBits, Int xSrc, Int ySrc, Int dxSrc, Int dySrc, unsigned wFlags);
+extern "C" System::LongBool __stdcall DrawDibEnd(HDRAWDIB hdd);
+extern "C" System::LongBool __stdcall DrawDibTime(HDRAWDIB hdd, PDRAWDIBTIME lpddtime);
+extern "C" unsigned __stdcall DrawDibProfileDisplay(Winapi::Windows::PBitmapInfoHeader lpbi);
+extern "C" void __stdcall AVIFileInit(void);
+extern "C" void __stdcall AVIFileExit(void);
+extern "C" unsigned __stdcall AVIFileAddRef(_di_IAVIFile pfile);
+extern "C" unsigned __stdcall AVIFileRelease(_di_IAVIFile pfile);
+extern "C" HRESULT __stdcall AVIFileOpenA(_di_IAVIFile &ppfile, char * szFile, unsigned uMode, Winapi::Activex::PCLSID lpHandler);
+extern "C" HRESULT __stdcall AVIFileOpenW(_di_IAVIFile &ppfile, System::WideChar * szFile, unsigned uMode, Winapi::Activex::PCLSID lpHandler);
+extern "C" HRESULT __stdcall AVIFileOpen(_di_IAVIFile &ppfile, System::WideChar * szFile, unsigned uMode, Winapi::Activex::PCLSID lpHandler);
+extern "C" HRESULT __stdcall AVIFileInfoW(_di_IAVIFile pfile, TAVIFileInfoW &pfi, LONG lSize);
+extern "C" HRESULT __stdcall AVIFileInfoA(_di_IAVIFile pfile, TAVIFileInfoA &pfi, LONG lSize);
+extern "C" HRESULT __stdcall AVIFileInfo(_di_IAVIFile pfile, TAVIFileInfo &pfi, LONG lSize);
+extern "C" HRESULT __stdcall AVIFileGetStream(_di_IAVIFile pfile, _di_IAVIStream &ppavi, unsigned fccType, LONG lParam);
+extern "C" HRESULT __stdcall AVIFileCreateStreamW(_di_IAVIFile pfile, _di_IAVIStream &ppavi, TAVIStreamInfoW &psi);
+extern "C" HRESULT __stdcall AVIFileCreateStreamA(_di_IAVIFile pfile, _di_IAVIStream &ppavi, TAVIStreamInfoA &psi);
+extern "C" HRESULT __stdcall AVIFileCreateStream(_di_IAVIFile pfile, _di_IAVIStream &ppavi, TAVIStreamInfo &psi);
+extern "C" HRESULT __stdcall AVIFileWriteData(_di_IAVIFile pfile, unsigned ckid, PVOID lpData, LONG cbData);
+extern "C" HRESULT __stdcall AVIFileReadData(_di_IAVIFile pfile, unsigned ckid, PVOID lpData, LONG &lpcbData);
+extern "C" HRESULT __stdcall AVIFileEndRecord(_di_IAVIFile pfile);
+extern "C" unsigned __stdcall AVIStreamAddRef(_di_IAVIStream pavi);
+extern "C" unsigned __stdcall AVIStreamRelease(_di_IAVIStream pavi);
+extern "C" HRESULT __stdcall AVIStreamInfoW(_di_IAVIStream pavi, TAVIStreamInfoW &psi, LONG lSize);
+extern "C" HRESULT __stdcall AVIStreamInfoA(_di_IAVIStream pavi, TAVIStreamInfoA &psi, LONG lSize);
+extern "C" HRESULT __stdcall AVIStreamInfo(_di_IAVIStream pavi, TAVIStreamInfo &psi, LONG lSize);
+extern "C" LONG __stdcall AVIStreamFindSample(_di_IAVIStream pavi, LONG lPos, LONG lFlags);
+extern "C" HRESULT __stdcall AVIStreamReadFormat(_di_IAVIStream pavi, LONG lPos, PVOID lpFormat, PLONG lpcbFormat);
+extern "C" HRESULT __stdcall AVIStreamSetFormat(_di_IAVIStream pavi, LONG lPos, PVOID lpFormat, LONG cbFormat);
+extern "C" HRESULT __stdcall AVIStreamReadData(_di_IAVIStream pavi, unsigned fcc, PVOID lp, PLONG lpcb);
+extern "C" HRESULT __stdcall AVIStreamWriteData(_di_IAVIStream pavi, unsigned fcc, PVOID lp, LONG cb);
+extern "C" HRESULT __stdcall AVIStreamRead(_di_IAVIStream pavi, LONG lStart, LONG lSamples, PVOID lpBuffer, LONG cbBuffer, PLONG plBytes, PLONG plSamples);
+extern "C" HRESULT __stdcall AVIStreamWrite(_di_IAVIStream pavi, LONG lStart, LONG lSamples, PVOID lpBuffer, LONG cbBuffer, unsigned dwFlags, PLONG plSampWritten, PLONG plBytesWritten);
+extern "C" LONG __stdcall AVIStreamStart(_di_IAVIStream pavi);
+extern "C" LONG __stdcall AVIStreamLength(_di_IAVIStream pavi);
+extern "C" LONG __stdcall AVIStreamTimeToSample(_di_IAVIStream pavi, LONG lTime);
+extern "C" LONG __stdcall AVIStreamSampleToTime(_di_IAVIStream pavi, LONG lSample);
+extern "C" HRESULT __stdcall AVIStreamBeginStreaming(_di_IAVIStream pavi, LONG lStart, LONG lEnd, LONG lRate);
+extern "C" HRESULT __stdcall AVIStreamEndStreaming(_di_IAVIStream pavi);
+extern "C" Winapi::Windows::PBitmapInfoHeader __stdcall AVIStreamGetFrame(_di_IGetFrame pg, LONG lPos);
+extern "C" HRESULT __stdcall AVIStreamGetFrameClose(_di_IGetFrame pg);
+extern DELPHI_PACKAGE _di_IGetFrame __stdcall AVIStreamGetFrameOpen(_di_IAVIStream pavi, Winapi::Windows::PBitmapInfoHeader lpbiWanted);
+extern "C" HRESULT __stdcall AVIStreamOpenFromFileA(_di_IAVIStream &ppavi, char * szFile, unsigned fccType, LONG lParam, unsigned mode, Winapi::Activex::PCLSID pclsidHandler);
+extern "C" HRESULT __stdcall AVIStreamOpenFromFileW(_di_IAVIStream &ppavi, System::WideChar * szFile, unsigned fccType, LONG lParam, unsigned mode, Winapi::Activex::PCLSID pclsidHandler);
+extern "C" HRESULT __stdcall AVIStreamOpenFromFile(_di_IAVIStream &ppavi, System::WideChar * szFile, unsigned fccType, LONG lParam, unsigned mode, Winapi::Activex::PCLSID pclsidHandler);
+extern "C" HRESULT __stdcall AVIStreamCreate(_di_IAVIStream &ppavi, LONG lParam1, LONG lParam2, Winapi::Activex::PCLSID pclsidHandler);
+extern "C" unsigned __stdcall AVIStreamFindKeyFrame(_di_IAVIStream &pavi, LONG lPos, LONG lFlags);
+extern "C" unsigned __stdcall AVIStreamClose(_di_IAVIStream pavi);
+extern "C" unsigned __stdcall AVIFileClose(_di_IAVIFile pfile);
+extern "C" void __stdcall AVIStreamInit(void);
+extern "C" void __stdcall AVIStreamExit(void);
+extern "C" HRESULT __stdcall AVIMakeCompressedStream(_di_IAVIStream &ppsCompressed, _di_IAVIStream ppsSource, PAVICOMPRESSOPTIONS lpOptions, Winapi::Activex::PCLSID pclsidHandler);
+extern "C" HRESULT __stdcall AVISaveVA(char * szFile, Winapi::Activex::PCLSID pclsidHandler, TAVISAVECALLBACK lpfnCallback, Int nStreams, _di_IAVIStream &ppavi, PAVICOMPRESSOPTIONS &plpOptions);
+extern "C" HRESULT __stdcall AVISaveVW(System::WideChar * szFile, Winapi::Activex::PCLSID pclsidHandler, TAVISAVECALLBACK lpfnCallback, Int nStreams, _di_IAVIStream &ppavi, PAVICOMPRESSOPTIONS &plpOptions);
+extern "C" HRESULT __stdcall AVISaveV(char * szFile, Winapi::Activex::PCLSID pclsidHandler, TAVISAVECALLBACK lpfnCallback, Int nStreams, _di_IAVIStream &ppavi, PAVICOMPRESSOPTIONS &plpOptions);
+extern "C" System::LongBool __stdcall AVISaveOptions(HWND hwnd, unsigned uiFlags, Int nStreams, _di_IAVIStream &ppavi, PAVICOMPRESSOPTIONS &plpOptions);
+extern "C" HRESULT __stdcall AVISaveOptionsFree(Int nStreams, PAVICOMPRESSOPTIONS &plpOptions);
+extern "C" HRESULT __stdcall AVIBuildFilterW(System::WideChar * lpszFilter, LONG cbFilter, System::LongBool fSaving);
+extern "C" HRESULT __stdcall AVIBuildFilterA(char * lpszFilter, LONG cbFilter, System::LongBool fSaving);
+extern "C" HRESULT __stdcall AVIBuildFilter(char * lpszFilter, LONG cbFilter, System::LongBool fSaving);
+extern "C" HRESULT __stdcall AVIMakeFileFromStreams(_di_IAVIFile &ppfile, Int nStreams, _di_IAVIStream &papStreams);
+extern "C" HRESULT __stdcall AVIMakeStreamFromClipboard(unsigned cfFormat, Winapi::Windows::THandle hGlobal, _di_IAVIStream &ppstream);
+extern "C" HRESULT __stdcall AVIPutFileOnClipboard(_di_IAVIFile pf);
+extern "C" HRESULT __stdcall AVIGetFromClipboard(_di_IAVIFile &lppf);
+extern "C" HRESULT __stdcall AVIClearClipboard(void);
+extern "C" HRESULT __stdcall CreateEditableStream(_di_IAVIStream &ppsEditable, _di_IAVIStream psSource);
+extern "C" HRESULT __stdcall EditStreamCut(_di_IAVIStream pavi, LONG &plStart, LONG &plLength, _di_IAVIStream &ppResult);
+extern "C" HRESULT __stdcall EditStreamCopy(_di_IAVIStream pavi, LONG &plStart, LONG &plLength, _di_IAVIStream &ppResult);
+extern "C" HRESULT __stdcall EditStreamPaste(_di_IAVIStream pavi, LONG &plPos, LONG &plLength, _di_IAVIStream pstream, LONG lStart, LONG lEnd);
+extern "C" HRESULT __stdcall EditStreamClone(_di_IAVIStream pavi, _di_IAVIStream &ppResult);
+extern "C" HRESULT __stdcall EditStreamSetNameA(_di_IAVIStream pavi, char * lpszName);
+extern "C" HRESULT __stdcall EditStreamSetNameW(_di_IAVIStream pavi, System::WideChar * lpszName);
+extern "C" HRESULT __stdcall EditStreamSetInfoW(_di_IAVIStream pavi, PAVIStreamInfoW lpInfo, LONG cbInfo);
+extern "C" HRESULT __stdcall EditStreamSetInfoA(_di_IAVIStream pavi, PAVIStreamInfoA lpInfo, LONG cbInfo);
+extern "C" HRESULT __stdcall EditStreamSetInfo(_di_IAVIStream pavi, PAVIStreamInfoA lpInfo, LONG cbInfo);
+extern "C" HRESULT __stdcall EditStreamSetName(_di_IAVIStream pavi, char * lpszName);
+extern "C" HWND __cdecl MCIWndCreateA(HWND hwndParent, Winapi::Windows::HINST hInstance, unsigned dwStyle, char * szFile);
+extern "C" HWND __cdecl MCIWndCreateW(HWND hwndParent, Winapi::Windows::HINST hInstance, unsigned dwStyle, System::WideChar * szFile);
+extern "C" HWND __cdecl MCIWndCreate(HWND hwndParent, Winapi::Windows::HINST hInstance, unsigned dwStyle, char * szFile);
+extern "C" System::LongBool __cdecl MCIWndRegisterClass(void);
+extern "C" HWND __stdcall capCreateCaptureWindowA(char * lpszWindowName, unsigned dwStyle, Int x, Int y, Int nWidth, Int nHeight, HWND hwndParent, Int nID);
+extern "C" System::LongBool __stdcall capGetDriverDescriptionA(unsigned wDriverIndex, char * lpszName, Int cbName, char * lpszVer, Int cbVer);
+extern "C" HWND __stdcall capCreateCaptureWindowW(System::WideChar * lpszWindowName, unsigned dwStyle, Int x, Int y, Int nWidth, Int nHeight, HWND hwndParent, Int nID);
+extern "C" System::LongBool __stdcall capGetDriverDescriptionW(unsigned wDriverIndex, System::WideChar * lpszName, Int cbName, System::WideChar * lpszVer, Int cbVer);
+extern "C" HWND __stdcall capCreateCaptureWindow(char * lpszWindowName, unsigned dwStyle, Int x, Int y, Int nWidth, Int nHeight, HWND hwndParent, Int nID);
+extern "C" System::LongBool __stdcall capGetDriverDescription(unsigned wDriverIndex, char * lpszName, Int cbName, char * lpszVer, Int cbVer);
+extern "C" System::LongBool __stdcall GetOpenFileNamePreviewA(Winapi::Commdlg::POpenFilenameA lpofn);
+extern "C" System::LongBool __stdcall GetSaveFileNamePreviewA(Winapi::Commdlg::POpenFilenameA lpofn);
+extern "C" System::LongBool __stdcall GetOpenFileNamePreviewW(Winapi::Commdlg::POpenFilenameW lpofn);
+extern "C" System::LongBool __stdcall GetSaveFileNamePreviewW(Winapi::Commdlg::POpenFilenameW lpofn);
+extern "C" System::LongBool __stdcall GetOpenFileNamePreview(Winapi::Commdlg::POpenFilenameA lpofn);
+extern "C" System::LongBool __stdcall GetSaveFileNamePreview(Winapi::Commdlg::POpenFilenameA lpofn);
+
+#if defined(UNICODE)
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall AVIFileOpen(_di_IAVIFile &ppfile, System::WideChar * szFile, unsigned uMode, Winapi::Activex::PCLSID lpHandler)
+{
+	return AVIFileOpenW(ppfile, szFile, uMode, lpHandler);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#else
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall AVIFileOpen(_di_IAVIFile &ppfile, System::WideChar * szFile, unsigned uMode, Winapi::Activex::PCLSID lpHandler)
+{
+	return AVIFileOpenA(ppfile, szFile, uMode, lpHandler);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#endif
+
+
+#if defined(UNICODE)
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall AVIFileInfo(_di_IAVIFile pfile, TAVIFileInfo &pfi, LONG lSize)
+{
+	return AVIFileInfoW(pfile, pfi, lSize);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#else
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall AVIFileInfo(_di_IAVIFile pfile, TAVIFileInfo &pfi, LONG lSize)
+{
+	return AVIFileInfoA(pfile, pfi, lSize);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#endif
+
+
+#if defined(UNICODE)
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall AVIFileCreateStream(_di_IAVIFile pfile, _di_IAVIStream &ppavi, TAVIStreamInfo &psi)
+{
+	return AVIFileCreateStreamW(pfile, ppavi, psi);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#else
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall AVIFileCreateStream(_di_IAVIFile pfile, _di_IAVIStream &ppavi, TAVIStreamInfo &psi)
+{
+	return AVIFileCreateStreamA(pfile, ppavi, psi);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#endif
+
+
+#if defined(UNICODE)
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall AVIStreamInfo(_di_IAVIStream pavi, TAVIStreamInfo &psi, LONG lSize)
+{
+	return AVIStreamInfoW(pavi, psi, lSize);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#else
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall AVIStreamInfo(_di_IAVIStream pavi, TAVIStreamInfo &psi, LONG lSize)
+{
+	return AVIStreamInfoA(pavi, psi, lSize);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#endif
+
+
+#if defined(UNICODE)
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall AVIStreamOpenFromFile(_di_IAVIStream &ppavi, System::WideChar * szFile, unsigned fccType, LONG lParam, unsigned mode, Winapi::Activex::PCLSID pclsidHandler)
+{
+	return AVIStreamOpenFromFileW(ppavi, szFile, fccType, lParam, mode, pclsidHandler);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#else
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall AVIStreamOpenFromFile(_di_IAVIStream &ppavi, System::WideChar * szFile, unsigned fccType, LONG lParam, unsigned mode, Winapi::Activex::PCLSID pclsidHandler)
+{
+	return AVIStreamOpenFromFileA(ppavi, szFile, fccType, lParam, mode, pclsidHandler);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#endif
+
+
+#if defined(UNICODE)
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall AVISaveV(char * szFile, Winapi::Activex::PCLSID pclsidHandler, TAVISAVECALLBACK lpfnCallback, Int nStreams, _di_IAVIStream &ppavi, PAVICOMPRESSOPTIONS &plpOptions)
+{
+	return AVISaveVW(szFile, pclsidHandler, lpfnCallback, nStreams, ppavi, plpOptions);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#else
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall AVISaveV(char * szFile, Winapi::Activex::PCLSID pclsidHandler, TAVISAVECALLBACK lpfnCallback, Int nStreams, _di_IAVIStream &ppavi, PAVICOMPRESSOPTIONS &plpOptions)
+{
+	return AVISaveVA(szFile, pclsidHandler, lpfnCallback, nStreams, ppavi, plpOptions);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#endif
+
+
+#if defined(UNICODE)
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall AVIBuildFilter(char * lpszFilter, LONG cbFilter, System::LongBool fSaving)
+{
+	return AVIBuildFilterW(lpszFilter, cbFilter, fSaving);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#else
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall AVIBuildFilter(char * lpszFilter, LONG cbFilter, System::LongBool fSaving)
+{
+	return AVIBuildFilterA(lpszFilter, cbFilter, fSaving);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#endif
+
+
+#if defined(UNICODE)
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall EditStreamSetInfo(_di_IAVIStream pavi, PAVIStreamInfoA lpInfo, LONG cbInfo)
+{
+	return EditStreamSetInfoW(pavi, lpInfo, cbInfo);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#else
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall EditStreamSetInfo(_di_IAVIStream pavi, PAVIStreamInfoA lpInfo, LONG cbInfo)
+{
+	return EditStreamSetInfoA(pavi, lpInfo, cbInfo);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#endif
+
+
+#if defined(UNICODE)
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall EditStreamSetName(_di_IAVIStream pavi, char * lpszName)
+{
+	return EditStreamSetNameW(pavi, lpszName);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#else
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HRESULT __stdcall EditStreamSetName(_di_IAVIStream pavi, char * lpszName)
+{
+	return EditStreamSetNameA(pavi, lpszName);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#endif
+
+
+#if defined(UNICODE)
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HWND __cdecl MCIWndCreate(HWND hwndParent, Winapi::Windows::HINST hInstance, unsigned dwStyle, char * szFile)
+{
+	return MCIWndCreateW(hwndParent, hInstance, dwStyle, szFile);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#else
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HWND __cdecl MCIWndCreate(HWND hwndParent, Winapi::Windows::HINST hInstance, unsigned dwStyle, char * szFile)
+{
+	return MCIWndCreateA(hwndParent, hInstance, dwStyle, szFile);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#endif
+
+
+#if defined(UNICODE)
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HWND __stdcall capCreateCaptureWindow(char * lpszWindowName, unsigned dwStyle, Int x, Int y, Int nWidth, Int nHeight, HWND hwndParent, Int nID)
+{
+	return capCreateCaptureWindowW(lpszWindowName, dwStyle, x, y, nWidth, nHeight, hwndParent, nID);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#else
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline HWND __stdcall capCreateCaptureWindow(char * lpszWindowName, unsigned dwStyle, Int x, Int y, Int nWidth, Int nHeight, HWND hwndParent, Int nID)
+{
+	return capCreateCaptureWindowA(lpszWindowName, dwStyle, x, y, nWidth, nHeight, hwndParent, nID);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#endif
+
+
+#if defined(UNICODE)
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline System::LongBool __stdcall capGetDriverDescription(unsigned wDriverIndex, char * lpszName, Int cbName, char * lpszVer, Int cbVer)
+{
+	return capGetDriverDescriptionW(wDriverIndex, lpszName, cbName, lpszVer, cbVer);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#else
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline System::LongBool __stdcall capGetDriverDescription(unsigned wDriverIndex, char * lpszName, Int cbName, char * lpszVer, Int cbVer)
+{
+	return capGetDriverDescriptionA(wDriverIndex, lpszName, cbName, lpszVer, cbVer);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#endif
+
+
+#if defined(UNICODE)
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline System::LongBool __stdcall GetOpenFileNamePreview(Winapi::Commdlg::POpenFilenameA lpofn)
+{
+	return GetOpenFileNamePreviewW(lpofn);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#else
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline System::LongBool __stdcall GetOpenFileNamePreview(Winapi::Commdlg::POpenFilenameA lpofn)
+{
+	return GetOpenFileNamePreviewA(lpofn);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#endif
+
+
+#if defined(UNICODE)
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline System::LongBool __stdcall GetSaveFileNamePreview(Winapi::Commdlg::POpenFilenameA lpofn)
+{
+	return GetSaveFileNamePreviewW(lpofn);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#else
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option push -w-inl
+#endif
+inline System::LongBool __stdcall GetSaveFileNamePreview(Winapi::Commdlg::POpenFilenameA lpofn)
+{
+	return GetSaveFileNamePreviewA(lpofn);
+}
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option pop
+#endif
+
+#endif
+
+}	/* namespace Vfw */
+}	/* namespace Formats */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS_VFW)
+using namespace Formats::Vfw;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS)
+using namespace Formats;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// Formats_VFWHPP

+ 276 - 0
include/Win32/Formats.VRML.hpp

@@ -0,0 +1,276 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'Formats.VRML.pas' rev: 36.00 (Windows)
+
+#ifndef Formats_VRMLHPP
+#define Formats_VRMLHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <System.Types.hpp>
+#include <Stage.VectorGeometry.hpp>
+#include <Stage.VectorTypes.hpp>
+#include <GLS.VectorLists.hpp>
+#include <Stage.Utils.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Formats
+{
+namespace Vrml
+{
+//-- forward type declarations -----------------------------------------------
+class DELPHICLASS TVRMLNode;
+class DELPHICLASS TVRMLSingleArray;
+class DELPHICLASS TVRMLIntegerArray;
+class DELPHICLASS TVRMLMaterial;
+class DELPHICLASS TVRMLUse;
+class DELPHICLASS TVRMLShapeHints;
+class DELPHICLASS TVRMLTransform;
+class DELPHICLASS TVRMLParser;
+//-- type declarations -------------------------------------------------------
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TVRMLNode : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+public:
+	TVRMLNode* operator[](int index) { return this->Nodes[index]; }
+	
+private:
+	System::Classes::TList* FNodes;
+	TVRMLNode* FParent;
+	System::UnicodeString FName;
+	System::UnicodeString FDefName;
+	TVRMLNode* __fastcall GetNode(int index);
+	
+public:
+	__fastcall virtual TVRMLNode();
+	__fastcall TVRMLNode(TVRMLNode* AParent);
+	__fastcall virtual ~TVRMLNode();
+	int __fastcall Count();
+	void __fastcall Clear();
+	void __fastcall Add(TVRMLNode* node);
+	void __fastcall Remove(TVRMLNode* node);
+	void __fastcall Delete(int index);
+	__property TVRMLNode* Nodes[int index] = {read=GetNode/*, default*/};
+	__property TVRMLNode* Parent = {read=FParent};
+	__property System::UnicodeString Name = {read=FName, write=FName};
+	__property System::UnicodeString DefName = {read=FDefName, write=FDefName};
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TVRMLSingleArray : public TVRMLNode
+{
+	typedef TVRMLNode inherited;
+	
+private:
+	Gls::Vectorlists::TGLSingleList* FValues;
+	
+public:
+	__fastcall virtual TVRMLSingleArray();
+	__fastcall virtual ~TVRMLSingleArray();
+	__property Gls::Vectorlists::TGLSingleList* Values = {read=FValues};
+public:
+	/* TVRMLNode.CreateOwned */ inline __fastcall TVRMLSingleArray(TVRMLNode* AParent) : TVRMLNode(AParent) { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TVRMLIntegerArray : public TVRMLNode
+{
+	typedef TVRMLNode inherited;
+	
+private:
+	Gls::Vectorlists::TGLIntegerList* FValues;
+	
+public:
+	__fastcall virtual TVRMLIntegerArray();
+	__fastcall virtual ~TVRMLIntegerArray();
+	__property Gls::Vectorlists::TGLIntegerList* Values = {read=FValues};
+public:
+	/* TVRMLNode.CreateOwned */ inline __fastcall TVRMLIntegerArray(TVRMLNode* AParent) : TVRMLNode(AParent) { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TVRMLMaterial : public TVRMLNode
+{
+	typedef TVRMLNode inherited;
+	
+private:
+	Stage::Vectortypes::TVector3f FDiffuseColor;
+	Stage::Vectortypes::TVector3f FAmbientColor;
+	Stage::Vectortypes::TVector3f FSpecularColor;
+	Stage::Vectortypes::TVector3f FEmissiveColor;
+	float FTransparency;
+	float FShininess;
+	bool FHasDiffuse;
+	bool FHasAmbient;
+	bool FHasSpecular;
+	bool FHasEmissive;
+	bool FHasTransparency;
+	bool FHasShininess;
+	
+public:
+	__fastcall virtual TVRMLMaterial();
+	__property Stage::Vectortypes::TVector3f DiffuseColor = {read=FDiffuseColor, write=FDiffuseColor};
+	__property Stage::Vectortypes::TVector3f AmbientColor = {read=FAmbientColor, write=FAmbientColor};
+	__property Stage::Vectortypes::TVector3f SpecularColor = {read=FSpecularColor, write=FSpecularColor};
+	__property Stage::Vectortypes::TVector3f EmissiveColor = {read=FEmissiveColor, write=FEmissiveColor};
+	__property float Transparency = {read=FTransparency, write=FTransparency};
+	__property float Shininess = {read=FShininess, write=FShininess};
+	__property bool HasDiffuse = {read=FHasDiffuse, write=FHasDiffuse, nodefault};
+	__property bool HasAmbient = {read=FHasAmbient, write=FHasAmbient, nodefault};
+	__property bool HasSpecular = {read=FHasSpecular, write=FHasSpecular, nodefault};
+	__property bool HasEmissive = {read=FHasEmissive, write=FHasEmissive, nodefault};
+	__property bool HasTransparency = {read=FHasTransparency, write=FHasTransparency, nodefault};
+	__property bool HasShininess = {read=FHasShininess, write=FHasShininess, nodefault};
+public:
+	/* TVRMLNode.CreateOwned */ inline __fastcall TVRMLMaterial(TVRMLNode* AParent) : TVRMLNode(AParent) { }
+	/* TVRMLNode.Destroy */ inline __fastcall virtual ~TVRMLMaterial() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TVRMLUse : public TVRMLNode
+{
+	typedef TVRMLNode inherited;
+	
+private:
+	System::UnicodeString FValue;
+	
+public:
+	__property System::UnicodeString Value = {read=FValue, write=FValue};
+public:
+	/* TVRMLNode.Create */ inline __fastcall virtual TVRMLUse() : TVRMLNode() { }
+	/* TVRMLNode.CreateOwned */ inline __fastcall TVRMLUse(TVRMLNode* AParent) : TVRMLNode(AParent) { }
+	/* TVRMLNode.Destroy */ inline __fastcall virtual ~TVRMLUse() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TVRMLShapeHints : public TVRMLNode
+{
+	typedef TVRMLNode inherited;
+	
+private:
+	float FCreaseAngle;
+	
+public:
+	__property float CreaseAngle = {read=FCreaseAngle, write=FCreaseAngle};
+public:
+	/* TVRMLNode.Create */ inline __fastcall virtual TVRMLShapeHints() : TVRMLNode() { }
+	/* TVRMLNode.CreateOwned */ inline __fastcall TVRMLShapeHints(TVRMLNode* AParent) : TVRMLNode(AParent) { }
+	/* TVRMLNode.Destroy */ inline __fastcall virtual ~TVRMLShapeHints() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TVRMLTransform : public TVRMLNode
+{
+	typedef TVRMLNode inherited;
+	
+private:
+	Stage::Vectortypes::TVector3f FCenter;
+	Stage::Vectortypes::TVector4f FRotation;
+	Stage::Vectortypes::TVector3f FScaleFactor;
+	
+public:
+	__fastcall virtual TVRMLTransform();
+	__property Stage::Vectortypes::TVector3f Center = {read=FCenter, write=FCenter};
+	__property Stage::Vectortypes::TVector4f Rotation = {read=FRotation, write=FRotation};
+	__property Stage::Vectortypes::TVector3f ScaleFactor = {read=FScaleFactor, write=FScaleFactor};
+public:
+	/* TVRMLNode.CreateOwned */ inline __fastcall TVRMLTransform(TVRMLNode* AParent) : TVRMLNode(AParent) { }
+	/* TVRMLNode.Destroy */ inline __fastcall virtual ~TVRMLTransform() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TVRMLParser : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+private:
+	int FCursor;
+	System::Classes::TStringList* FTokens;
+	TVRMLNode* FRootNode;
+	TVRMLNode* FCurrentNode;
+	bool FAllowUnknownNodes;
+	System::Classes::TList* FDefines;
+	
+protected:
+	System::UnicodeString __fastcall ReadToken();
+	float __fastcall ReadSingle();
+	Stage::Vectortypes::TVector3f __fastcall ReadVector3f();
+	Stage::Vectortypes::TVector4f __fastcall ReadVector4f();
+	void __fastcall ReadUnknownArray(System::UnicodeString DefName = System::UnicodeString());
+	void __fastcall ReadUnknownHeirachy(System::UnicodeString DefName = System::UnicodeString());
+	void __fastcall ReadUnknown(System::UnicodeString unknown_token, System::UnicodeString DefName = System::UnicodeString());
+	void __fastcall ReadPointArray(System::UnicodeString DefName = System::UnicodeString());
+	void __fastcall ReadCoordIndexArray(System::UnicodeString DefName = System::UnicodeString());
+	void __fastcall ReadNormalIndexArray(System::UnicodeString DefName = System::UnicodeString());
+	void __fastcall ReadTextureCoordIndexArray(System::UnicodeString DefName = System::UnicodeString());
+	void __fastcall ReadCoordinate3(System::UnicodeString DefName = System::UnicodeString());
+	void __fastcall ReadNormal(System::UnicodeString DefName = System::UnicodeString());
+	void __fastcall ReadTextureCoordinate2(System::UnicodeString DefName = System::UnicodeString());
+	void __fastcall ReadMaterial(System::UnicodeString DefName = System::UnicodeString());
+	void __fastcall ReadIndexedFaceSet(System::UnicodeString DefName = System::UnicodeString());
+	void __fastcall ReadTransform(System::UnicodeString DefName = System::UnicodeString());
+	void __fastcall ReadShapeHints(System::UnicodeString DefName = System::UnicodeString());
+	void __fastcall ReadSeparator(System::UnicodeString DefName = System::UnicodeString());
+	void __fastcall ReadGroup(System::UnicodeString DefName = System::UnicodeString());
+	void __fastcall ReadDef();
+	void __fastcall ReadUse();
+	
+public:
+	__fastcall TVRMLParser();
+	__fastcall virtual ~TVRMLParser();
+	void __fastcall Parse(System::UnicodeString Text);
+	__property TVRMLNode* RootNode = {read=FRootNode};
+	__property bool AllowUnknownNodes = {read=FAllowUnknownNodes, write=FAllowUnknownNodes, nodefault};
+};
+
+#pragma pack(pop)
+
+//-- var, const, procedure ---------------------------------------------------
+}	/* namespace Vrml */
+}	/* namespace Formats */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS_VRML)
+using namespace Formats::Vrml;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS)
+using namespace Formats;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// Formats_VRMLHPP

+ 220 - 0
include/Win32/Formats.X.hpp

@@ -0,0 +1,220 @@
+// CodeGear C++Builder
+// Copyright (c) 1995, 2024 by Embarcadero Technologies, Inc.
+// All rights reserved
+
+// (DO NOT EDIT: machine generated header) 'Formats.X.pas' rev: 36.00 (Windows)
+
+#ifndef Formats_XHPP
+#define Formats_XHPP
+
+#pragma delphiheader begin
+#pragma option push
+#if defined(__BORLANDC__) && !defined(__clang__)
+#pragma option -w-      // All warnings off
+#pragma option -Vx      // Zero-length empty class member 
+#endif
+#pragma pack(push,8)
+#include <System.hpp>
+#include <SysInit.hpp>
+#include <System.Classes.hpp>
+#include <System.SysUtils.hpp>
+#include <Stage.VectorTypes.hpp>
+#include <Stage.VectorGeometry.hpp>
+#include <GLS.VectorLists.hpp>
+#include <GLS.PersistentClasses.hpp>
+#include <Stage.Utils.hpp>
+
+//-- user supplied -----------------------------------------------------------
+
+namespace Formats
+{
+namespace X
+{
+//-- forward type declarations -----------------------------------------------
+struct TDXFileHeader;
+class DELPHICLASS TDXNode;
+class DELPHICLASS TDXMaterial;
+class DELPHICLASS TDXMaterialList;
+class DELPHICLASS TDXFrame;
+class DELPHICLASS TDXMesh;
+class DELPHICLASS TDXFile;
+//-- type declarations -------------------------------------------------------
+struct DECLSPEC_DRECORD TDXFileHeader
+{
+public:
+	System::StaticArray<char, 4> Magic;
+	System::StaticArray<char, 2> Major;
+	System::StaticArray<char, 2> Minor;
+	System::StaticArray<char, 4> FileType;
+	System::StaticArray<char, 4> FloatType;
+};
+
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TDXNode : public System::Classes::TList
+{
+	typedef System::Classes::TList inherited;
+	
+private:
+	System::UnicodeString FName;
+	System::UnicodeString FTypeName;
+	TDXNode* FOwner;
+	TDXNode* __fastcall GetItem(int index);
+	
+public:
+	__fastcall TDXNode(TDXNode* AOwner);
+	__fastcall virtual TDXNode();
+	virtual void __fastcall Clear();
+	__property System::UnicodeString Name = {read=FName, write=FName};
+	__property System::UnicodeString TypeName = {read=FTypeName, write=FTypeName};
+	__property TDXNode* Owner = {read=FOwner};
+	__property TDXNode* Items[int index] = {read=GetItem};
+public:
+	/* TList.Destroy */ inline __fastcall virtual ~TDXNode() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TDXMaterial : public Gls::Persistentclasses::TGLPersistentObject
+{
+	typedef Gls::Persistentclasses::TGLPersistentObject inherited;
+	
+private:
+	Stage::Vectortypes::TVector4f FDiffuse;
+	float FSpecPower;
+	Stage::Vectortypes::TVector3f FSpecular;
+	Stage::Vectortypes::TVector3f FEmissive;
+	System::UnicodeString FTexture;
+	
+public:
+	__fastcall TDXMaterial(TDXMaterialList* AOwner);
+	__property Stage::Vectortypes::TVector4f Diffuse = {read=FDiffuse, write=FDiffuse};
+	__property float SpecPower = {read=FSpecPower, write=FSpecPower};
+	__property Stage::Vectortypes::TVector3f Specular = {read=FSpecular, write=FSpecular};
+	__property Stage::Vectortypes::TVector3f Emissive = {read=FEmissive, write=FEmissive};
+	__property System::UnicodeString Texture = {read=FTexture, write=FTexture};
+public:
+	/* TGLPersistentObject.Create */ inline __fastcall virtual TDXMaterial() : Gls::Persistentclasses::TGLPersistentObject() { }
+	/* TGLPersistentObject.CreateFromFiler */ inline __fastcall TDXMaterial(Gls::Persistentclasses::TGLVirtualReader* reader) : Gls::Persistentclasses::TGLPersistentObject(reader) { }
+	/* TGLPersistentObject.Destroy */ inline __fastcall virtual ~TDXMaterial() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TDXMaterialList : public TDXNode
+{
+	typedef TDXNode inherited;
+	
+private:
+	TDXMaterial* __fastcall GetMaterial(int index);
+	
+public:
+	__property TDXMaterial* Items[int index] = {read=GetMaterial};
+public:
+	/* TDXNode.CreateOwned */ inline __fastcall TDXMaterialList(TDXNode* AOwner) : TDXNode(AOwner) { }
+	/* TDXNode.Create */ inline __fastcall virtual TDXMaterialList() : TDXNode() { }
+	
+public:
+	/* TList.Destroy */ inline __fastcall virtual ~TDXMaterialList() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TDXFrame : public TDXNode
+{
+	typedef TDXNode inherited;
+	
+private:
+	Stage::Vectortypes::TGLMatrix FMatrix;
+	
+public:
+	__fastcall virtual TDXFrame();
+	Stage::Vectortypes::TGLMatrix __fastcall GlobalMatrix();
+	__property Stage::Vectortypes::TGLMatrix Matrix = {read=FMatrix, write=FMatrix};
+public:
+	/* TDXNode.CreateOwned */ inline __fastcall TDXFrame(TDXNode* AOwner) : TDXNode(AOwner) { }
+	
+public:
+	/* TList.Destroy */ inline __fastcall virtual ~TDXFrame() { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TDXMesh : public TDXNode
+{
+	typedef TDXNode inherited;
+	
+private:
+	Gls::Vectorlists::TGLAffineVectorList* FVertices;
+	Gls::Vectorlists::TGLAffineVectorList* FNormals;
+	Gls::Vectorlists::TGLAffineVectorList* FTexCoords;
+	Gls::Vectorlists::TGLIntegerList* FVertexIndices;
+	Gls::Vectorlists::TGLIntegerList* FNormalIndices;
+	Gls::Vectorlists::TGLIntegerList* FMaterialIndices;
+	Gls::Vectorlists::TGLIntegerList* FVertCountIndices;
+	TDXMaterialList* FMaterialList;
+	
+public:
+	__fastcall virtual TDXMesh();
+	__fastcall virtual ~TDXMesh();
+	__property Gls::Vectorlists::TGLAffineVectorList* Vertices = {read=FVertices};
+	__property Gls::Vectorlists::TGLAffineVectorList* Normals = {read=FNormals};
+	__property Gls::Vectorlists::TGLAffineVectorList* TexCoords = {read=FTexCoords};
+	__property Gls::Vectorlists::TGLIntegerList* VertexIndices = {read=FVertexIndices};
+	__property Gls::Vectorlists::TGLIntegerList* NormalIndices = {read=FNormalIndices};
+	__property Gls::Vectorlists::TGLIntegerList* MaterialIndices = {read=FMaterialIndices};
+	__property Gls::Vectorlists::TGLIntegerList* VertCountIndices = {read=FVertCountIndices};
+	__property TDXMaterialList* MaterialList = {read=FMaterialList};
+public:
+	/* TDXNode.CreateOwned */ inline __fastcall TDXMesh(TDXNode* AOwner) : TDXNode(AOwner) { }
+	
+};
+
+#pragma pack(pop)
+
+#pragma pack(push,4)
+class PASCALIMPLEMENTATION TDXFile : public System::TObject
+{
+	typedef System::TObject inherited;
+	
+private:
+	TDXNode* FRootNode;
+	TDXFileHeader FHeader;
+	
+protected:
+	void __fastcall ParseText(System::Classes::TStream* Stream);
+	void __fastcall ParseBinary(System::Classes::TStream* Stream);
+	
+public:
+	__fastcall TDXFile();
+	__fastcall virtual ~TDXFile();
+	void __fastcall LoadFromStream(System::Classes::TStream* Stream);
+	__property TDXFileHeader Header = {read=FHeader};
+	__property TDXNode* RootNode = {read=FRootNode};
+};
+
+#pragma pack(pop)
+
+//-- var, const, procedure ---------------------------------------------------
+}	/* namespace X */
+}	/* namespace Formats */
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS_X)
+using namespace Formats::X;
+#endif
+#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FORMATS)
+using namespace Formats;
+#endif
+#pragma pack(pop)
+#pragma option pop
+
+#pragma delphiheader end.
+//-- end unit ----------------------------------------------------------------
+#endif	// Formats_XHPP

Some files were not shown because too many files changed in this diff