diff --git a/.gitmodules b/.gitmodules
index bb220c2..3201d62 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,11 @@
[submodule "SDL"]
path = External/SDL
url = https://github.com/libsdl-org/SDL
+[submodule "SDL_image"]
+ path = External/SDL_image
+ url = https://github.com/libsdl-org/SDL_image.git
+ branch = main
+[submodule "SDL_ttf"]
+ path = External/SDL_ttf
+ url = https://github.com/libsdl-org/SDL_ttf.git
+ branch = main
diff --git a/External/SDL_image b/External/SDL_image
new file mode 160000
index 0000000..0d418a2
--- /dev/null
+++ b/External/SDL_image
@@ -0,0 +1 @@
+Subproject commit 0d418a2a2dc562699854d9c2fc264304ec404e2c
diff --git a/External/SDL_ttf b/External/SDL_ttf
new file mode 160000
index 0000000..582c695
--- /dev/null
+++ b/External/SDL_ttf
@@ -0,0 +1 @@
+Subproject commit 582c6957161d6cc4d3b09cae37744bdfe3700368
diff --git a/SDL3-CS/SDL3/ClangSharp/SDL_audio.g.cs b/SDL3-CS/SDL3/ClangSharp/SDL_audio.g.cs
index de63476..addb1b8 100644
--- a/SDL3-CS/SDL3/ClangSharp/SDL_audio.g.cs
+++ b/SDL3-CS/SDL3/ClangSharp/SDL_audio.g.cs
@@ -28,6 +28,7 @@ using System.Runtime.InteropServices;
namespace SDL
{
+ [NativeTypeName("int")]
public enum SDL_AudioFormat : uint
{
SDL_AUDIO_UNKNOWN = 0x0000U,
diff --git a/SDL3-CS/SDL3/ClangSharp/SDL_pixels.g.cs b/SDL3-CS/SDL3/ClangSharp/SDL_pixels.g.cs
index aae40df..b963cec 100644
--- a/SDL3-CS/SDL3/ClangSharp/SDL_pixels.g.cs
+++ b/SDL3-CS/SDL3/ClangSharp/SDL_pixels.g.cs
@@ -89,6 +89,7 @@ namespace SDL
SDL_PACKEDLAYOUT_1010102,
}
+ [NativeTypeName("int")]
public enum SDL_PixelFormat : uint
{
SDL_PIXELFORMAT_UNKNOWN = 0,
@@ -239,6 +240,7 @@ namespace SDL
SDL_CHROMA_LOCATION_TOPLEFT = 3,
}
+ [NativeTypeName("int")]
public enum SDL_Colorspace : uint
{
SDL_COLORSPACE_UNKNOWN = 0,
diff --git a/SDL3-CS/SDL3_image/ClangSharp/SDL_image.g.cs b/SDL3-CS/SDL3_image/ClangSharp/SDL_image.g.cs
new file mode 100644
index 0000000..aaa6500
--- /dev/null
+++ b/SDL3-CS/SDL3_image/ClangSharp/SDL_image.g.cs
@@ -0,0 +1,283 @@
+/*
+
+ C# bindings for Simple DirectMedia Layer.
+ Original copyright notice of input files:
+
+ Simple DirectMedia Layer
+ Copyright (C) 1997-2024 Sam Lantinga
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+*/
+
+using System.Runtime.InteropServices;
+
+namespace SDL
+{
+ public unsafe partial struct IMG_Animation
+ {
+ public int w;
+
+ public int h;
+
+ public int count;
+
+ public SDL_Surface** frames;
+
+ public int* delays;
+ }
+
+ public static unsafe partial class SDL3
+ {
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern int IMG_Version();
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("IMG_InitFlags")]
+ public static extern uint IMG_Init([NativeTypeName("IMG_InitFlags")] uint flags);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern void IMG_Quit();
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadTyped_IO(SDL_IOStream* src, [NativeTypeName("bool")] SDLBool closeio, [NativeTypeName("const char *")] byte* type);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_Load([NativeTypeName("const char *")] byte* file);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_Load_IO(SDL_IOStream* src, [NativeTypeName("bool")] SDLBool closeio);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Texture* IMG_LoadTexture(SDL_Renderer* renderer, [NativeTypeName("const char *")] byte* file);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Texture* IMG_LoadTexture_IO(SDL_Renderer* renderer, SDL_IOStream* src, [NativeTypeName("bool")] SDLBool closeio);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Texture* IMG_LoadTextureTyped_IO(SDL_Renderer* renderer, SDL_IOStream* src, [NativeTypeName("bool")] SDLBool closeio, [NativeTypeName("const char *")] byte* type);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isAVIF(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isICO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isCUR(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isBMP(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isGIF(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isJPG(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isJXL(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isLBM(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isPCX(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isPNG(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isPNM(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isSVG(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isQOI(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isTIF(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isXCF(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isXPM(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isXV(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_isWEBP(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadAVIF_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadICO_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadCUR_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadBMP_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadGIF_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadJPG_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadJXL_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadLBM_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadPCX_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadPNG_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadPNM_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadSVG_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadQOI_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadTGA_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadTIF_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadXCF_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadXPM_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadXV_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadWEBP_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_LoadSizedSVG_IO(SDL_IOStream* src, int width, int height);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_ReadXPMFromArray([NativeTypeName("char **")] byte** xpm);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* IMG_ReadXPMFromArrayToRGB888([NativeTypeName("char **")] byte** xpm);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_SaveAVIF(SDL_Surface* surface, [NativeTypeName("const char *")] byte* file, int quality);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_SaveAVIF_IO(SDL_Surface* surface, SDL_IOStream* dst, int closeio, int quality);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_SavePNG(SDL_Surface* surface, [NativeTypeName("const char *")] byte* file);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_SavePNG_IO(SDL_Surface* surface, SDL_IOStream* dst, int closeio);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_SaveJPG(SDL_Surface* surface, [NativeTypeName("const char *")] byte* file, int quality);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool IMG_SaveJPG_IO(SDL_Surface* surface, SDL_IOStream* dst, int closeio, int quality);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern IMG_Animation* IMG_LoadAnimation([NativeTypeName("const char *")] byte* file);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern IMG_Animation* IMG_LoadAnimation_IO(SDL_IOStream* src, [NativeTypeName("bool")] SDLBool closeio);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern IMG_Animation* IMG_LoadAnimationTyped_IO(SDL_IOStream* src, [NativeTypeName("bool")] SDLBool closeio, [NativeTypeName("const char *")] byte* type);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern void IMG_FreeAnimation(IMG_Animation* anim);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern IMG_Animation* IMG_LoadGIFAnimation_IO(SDL_IOStream* src);
+
+ [DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern IMG_Animation* IMG_LoadWEBPAnimation_IO(SDL_IOStream* src);
+
+ [NativeTypeName("#define SDL_IMAGE_MAJOR_VERSION 3")]
+ public const int SDL_IMAGE_MAJOR_VERSION = 3;
+
+ [NativeTypeName("#define SDL_IMAGE_MINOR_VERSION 1")]
+ public const int SDL_IMAGE_MINOR_VERSION = 1;
+
+ [NativeTypeName("#define SDL_IMAGE_MICRO_VERSION 0")]
+ public const int SDL_IMAGE_MICRO_VERSION = 0;
+
+ [NativeTypeName("#define SDL_IMAGE_VERSION SDL_VERSIONNUM(SDL_IMAGE_MAJOR_VERSION, SDL_IMAGE_MINOR_VERSION, SDL_IMAGE_MICRO_VERSION)")]
+ public const int SDL_IMAGE_VERSION = ((3) * 1000000 + (1) * 1000 + (0));
+
+ [NativeTypeName("#define IMG_INIT_JPG 0x00000001")]
+ public const int IMG_INIT_JPG = 0x00000001;
+
+ [NativeTypeName("#define IMG_INIT_PNG 0x00000002")]
+ public const int IMG_INIT_PNG = 0x00000002;
+
+ [NativeTypeName("#define IMG_INIT_TIF 0x00000004")]
+ public const int IMG_INIT_TIF = 0x00000004;
+
+ [NativeTypeName("#define IMG_INIT_WEBP 0x00000008")]
+ public const int IMG_INIT_WEBP = 0x00000008;
+
+ [NativeTypeName("#define IMG_INIT_JXL 0x00000010")]
+ public const int IMG_INIT_JXL = 0x00000010;
+
+ [NativeTypeName("#define IMG_INIT_AVIF 0x00000020")]
+ public const int IMG_INIT_AVIF = 0x00000020;
+ }
+}
diff --git a/SDL3-CS/SDL3_ttf/ClangSharp/SDL_textengine.g.cs b/SDL3-CS/SDL3_ttf/ClangSharp/SDL_textengine.g.cs
new file mode 100644
index 0000000..7cd9fcd
--- /dev/null
+++ b/SDL3-CS/SDL3_ttf/ClangSharp/SDL_textengine.g.cs
@@ -0,0 +1,131 @@
+/*
+
+ C# bindings for Simple DirectMedia Layer.
+ Original copyright notice of input files:
+
+ Simple DirectMedia Layer
+ Copyright (C) 1997-2024 Sam Lantinga
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+*/
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace SDL
+{
+ public enum TTF_DrawCommand
+ {
+ TTF_DRAW_COMMAND_NOOP,
+ TTF_DRAW_COMMAND_FILL,
+ TTF_DRAW_COMMAND_COPY,
+ }
+
+ public partial struct TTF_FillOperation
+ {
+ public TTF_DrawCommand cmd;
+
+ public SDL_Rect rect;
+ }
+
+ public partial struct TTF_CopyOperation
+ {
+ public TTF_DrawCommand cmd;
+
+ public int text_offset;
+
+ [NativeTypeName("Uint32")]
+ public uint glyph_index;
+
+ public SDL_Rect src;
+
+ public SDL_Rect dst;
+
+ [NativeTypeName("void*")]
+ public IntPtr reserved;
+ }
+
+ [StructLayout(LayoutKind.Explicit)]
+ public partial struct TTF_DrawOperation
+ {
+ [FieldOffset(0)]
+ public TTF_DrawCommand cmd;
+
+ [FieldOffset(0)]
+ public TTF_FillOperation fill;
+
+ [FieldOffset(0)]
+ public TTF_CopyOperation copy;
+ }
+
+ public partial struct TTF_TextLayout
+ {
+ }
+
+ public unsafe partial struct TTF_TextData
+ {
+ public TTF_Font* font;
+
+ public SDL_FColor color;
+
+ [NativeTypeName("bool")]
+ public SDLBool needs_layout_update;
+
+ public TTF_TextLayout* layout;
+
+ public int x;
+
+ public int y;
+
+ public int w;
+
+ public int h;
+
+ public int num_ops;
+
+ public TTF_DrawOperation* ops;
+
+ public int num_clusters;
+
+ public TTF_SubString* clusters;
+
+ public SDL_PropertiesID props;
+
+ [NativeTypeName("bool")]
+ public SDLBool needs_engine_update;
+
+ public TTF_TextEngine* engine;
+
+ [NativeTypeName("void*")]
+ public IntPtr engine_text;
+ }
+
+ public unsafe partial struct TTF_TextEngine
+ {
+ [NativeTypeName("Uint32")]
+ public uint version;
+
+ [NativeTypeName("void*")]
+ public IntPtr userdata;
+
+ [NativeTypeName("bool (*)(void *, TTF_Text *)")]
+ public delegate* unmanaged[Cdecl] CreateText;
+
+ [NativeTypeName("void (*)(void *, TTF_Text *)")]
+ public delegate* unmanaged[Cdecl] DestroyText;
+ }
+}
diff --git a/SDL3-CS/SDL3_ttf/ClangSharp/SDL_ttf.g.cs b/SDL3-CS/SDL3_ttf/ClangSharp/SDL_ttf.g.cs
new file mode 100644
index 0000000..fe13e1a
--- /dev/null
+++ b/SDL3-CS/SDL3_ttf/ClangSharp/SDL_ttf.g.cs
@@ -0,0 +1,506 @@
+/*
+
+ C# bindings for Simple DirectMedia Layer.
+ Original copyright notice of input files:
+
+ Simple DirectMedia Layer
+ Copyright (C) 1997-2024 Sam Lantinga
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+*/
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace SDL
+{
+ public partial struct TTF_Font
+ {
+ }
+
+ public enum TTF_HorizontalAlignment
+ {
+ TTF_HORIZONTAL_ALIGN_INVALID = -1,
+ TTF_HORIZONTAL_ALIGN_LEFT,
+ TTF_HORIZONTAL_ALIGN_CENTER,
+ TTF_HORIZONTAL_ALIGN_RIGHT,
+ }
+
+ public enum TTF_Direction
+ {
+ TTF_DIRECTION_LTR = 0,
+ TTF_DIRECTION_RTL,
+ TTF_DIRECTION_TTB,
+ TTF_DIRECTION_BTT,
+ }
+
+ public partial struct TTF_TextEngine
+ {
+ }
+
+ public partial struct TTF_TextData
+ {
+ }
+
+ public unsafe partial struct TTF_Text
+ {
+ [NativeTypeName("char *")]
+ public byte* text;
+
+ public int num_lines;
+
+ public int refcount;
+
+ public TTF_TextData* @internal;
+ }
+
+ public partial struct TTF_SubString
+ {
+ [NativeTypeName("TTF_SubStringFlags")]
+ public uint flags;
+
+ public int offset;
+
+ public int length;
+
+ public int line_index;
+
+ public int cluster_index;
+
+ public SDL_Rect rect;
+ }
+
+ public static unsafe partial class SDL3
+ {
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern int TTF_Version();
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern void TTF_GetFreeTypeVersion(int* major, int* minor, int* patch);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern void TTF_GetHarfBuzzVersion(int* major, int* minor, int* patch);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_Init();
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern TTF_Font* TTF_OpenFont([NativeTypeName("const char *")] byte* file, float ptsize);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern TTF_Font* TTF_OpenFontIO(SDL_IOStream* src, [NativeTypeName("bool")] SDLBool closeio, float ptsize);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern TTF_Font* TTF_OpenFontWithProperties(SDL_PropertiesID props);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_PropertiesID TTF_GetFontProperties(TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("Uint32")]
+ public static extern uint TTF_GetFontGeneration(TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_SetFontSize(TTF_Font* font, float ptsize);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_SetFontSizeDPI(TTF_Font* font, float ptsize, int hdpi, int vdpi);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern float TTF_GetFontSize(TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetFontDPI(TTF_Font* font, int* hdpi, int* vdpi);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern void TTF_SetFontStyle(TTF_Font* font, int style);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern int TTF_GetFontStyle([NativeTypeName("const TTF_Font *")] TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_SetFontOutline(TTF_Font* font, int outline);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern int TTF_GetFontOutline([NativeTypeName("const TTF_Font *")] TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern void TTF_SetFontHinting(TTF_Font* font, int hinting);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern int TTF_GetFontHinting([NativeTypeName("const TTF_Font *")] TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_SetFontSDF(TTF_Font* font, [NativeTypeName("bool")] SDLBool enabled);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetFontSDF([NativeTypeName("const TTF_Font *")] TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern void TTF_SetFontWrapAlignment(TTF_Font* font, TTF_HorizontalAlignment align);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern TTF_HorizontalAlignment TTF_GetFontWrapAlignment([NativeTypeName("const TTF_Font *")] TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern int TTF_GetFontHeight([NativeTypeName("const TTF_Font *")] TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern int TTF_GetFontAscent([NativeTypeName("const TTF_Font *")] TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern int TTF_GetFontDescent([NativeTypeName("const TTF_Font *")] TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern void TTF_SetFontLineSkip(TTF_Font* font, int lineskip);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern int TTF_GetFontLineSkip([NativeTypeName("const TTF_Font *")] TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern void TTF_SetFontKerning(TTF_Font* font, [NativeTypeName("bool")] SDLBool enabled);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetFontKerning([NativeTypeName("const TTF_Font *")] TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_FontIsFixedWidth([NativeTypeName("const TTF_Font *")] TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_FontIsScalable([NativeTypeName("const TTF_Font *")] TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("const char *")]
+ public static extern byte* TTF_GetFontFamilyName([NativeTypeName("const TTF_Font *")] TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("const char *")]
+ public static extern byte* TTF_GetFontStyleName([NativeTypeName("const TTF_Font *")] TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* TTF_RenderText_Solid(TTF_Font* font, [NativeTypeName("const char *")] byte* text, [NativeTypeName("size_t")] nuint length, SDL_Color fg);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* TTF_RenderText_Solid_Wrapped(TTF_Font* font, [NativeTypeName("const char *")] byte* text, [NativeTypeName("size_t")] nuint length, SDL_Color fg, int wrapLength);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* TTF_RenderGlyph_Solid(TTF_Font* font, [NativeTypeName("Uint32")] uint ch, SDL_Color fg);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_SetFontDirection(TTF_Font* font, TTF_Direction direction);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern TTF_Direction TTF_GetFontDirection(TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_SetFontScript(TTF_Font* font, [NativeTypeName("const char *")] byte* script);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetGlyphScript([NativeTypeName("Uint32")] uint ch, [NativeTypeName("char *")] byte* script, [NativeTypeName("size_t")] nuint script_size);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_SetFontLanguage(TTF_Font* font, [NativeTypeName("const char *")] byte* language_bcp47);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_FontHasGlyph(TTF_Font* font, [NativeTypeName("Uint32")] uint ch);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* TTF_GetGlyphImage(TTF_Font* font, [NativeTypeName("Uint32")] uint ch);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* TTF_GetGlyphImageForIndex(TTF_Font* font, [NativeTypeName("Uint32")] uint glyph_index);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetGlyphMetrics(TTF_Font* font, [NativeTypeName("Uint32")] uint ch, int* minx, int* maxx, int* miny, int* maxy, int* advance);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetGlyphKerning(TTF_Font* font, [NativeTypeName("Uint32")] uint previous_ch, [NativeTypeName("Uint32")] uint ch, int* kerning);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetStringSize(TTF_Font* font, [NativeTypeName("const char *")] byte* text, [NativeTypeName("size_t")] nuint length, int* w, int* h);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetStringSizeWrapped(TTF_Font* font, [NativeTypeName("const char *")] byte* text, [NativeTypeName("size_t")] nuint length, int wrap_width, int* w, int* h);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_MeasureString(TTF_Font* font, [NativeTypeName("const char *")] byte* text, [NativeTypeName("size_t")] nuint length, int max_width, int* measured_width, [NativeTypeName("size_t *")] nuint* measured_length);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* TTF_RenderText_Shaded(TTF_Font* font, [NativeTypeName("const char *")] byte* text, [NativeTypeName("size_t")] nuint length, SDL_Color fg, SDL_Color bg);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* TTF_RenderText_Shaded_Wrapped(TTF_Font* font, [NativeTypeName("const char *")] byte* text, [NativeTypeName("size_t")] nuint length, SDL_Color fg, SDL_Color bg, int wrap_width);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* TTF_RenderGlyph_Shaded(TTF_Font* font, [NativeTypeName("Uint32")] uint ch, SDL_Color fg, SDL_Color bg);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* TTF_RenderText_Blended(TTF_Font* font, [NativeTypeName("const char *")] byte* text, [NativeTypeName("size_t")] nuint length, SDL_Color fg);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* TTF_RenderText_Blended_Wrapped(TTF_Font* font, [NativeTypeName("const char *")] byte* text, [NativeTypeName("size_t")] nuint length, SDL_Color fg, int wrap_width);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* TTF_RenderGlyph_Blended(TTF_Font* font, [NativeTypeName("Uint32")] uint ch, SDL_Color fg);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* TTF_RenderText_LCD(TTF_Font* font, [NativeTypeName("const char *")] byte* text, [NativeTypeName("size_t")] nuint length, SDL_Color fg, SDL_Color bg);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* TTF_RenderText_LCD_Wrapped(TTF_Font* font, [NativeTypeName("const char *")] byte* text, [NativeTypeName("size_t")] nuint length, SDL_Color fg, SDL_Color bg, int wrap_width);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_Surface* TTF_RenderGlyph_LCD(TTF_Font* font, [NativeTypeName("Uint32")] uint ch, SDL_Color fg, SDL_Color bg);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern TTF_TextEngine* TTF_CreateSurfaceTextEngine();
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_DrawSurfaceText(TTF_Text* text, int x, int y, SDL_Surface* surface);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern void TTF_DestroySurfaceTextEngine(TTF_TextEngine* engine);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern TTF_TextEngine* TTF_CreateRendererTextEngine(SDL_Renderer* renderer);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_DrawRendererText(TTF_Text* text, float x, float y);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern void TTF_DestroyRendererTextEngine(TTF_TextEngine* engine);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern TTF_Text* TTF_CreateText(TTF_TextEngine* engine, TTF_Font* font, [NativeTypeName("const char *")] byte* text, [NativeTypeName("size_t")] nuint length);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern SDL_PropertiesID TTF_GetTextProperties(TTF_Text* text);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_SetTextEngine(TTF_Text* text, TTF_TextEngine* engine);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern TTF_TextEngine* TTF_GetTextEngine(TTF_Text* text);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_SetTextFont(TTF_Text* text, TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern TTF_Font* TTF_GetTextFont(TTF_Text* text);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_SetTextColor(TTF_Text* text, [NativeTypeName("Uint8")] byte r, [NativeTypeName("Uint8")] byte g, [NativeTypeName("Uint8")] byte b, [NativeTypeName("Uint8")] byte a);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_SetTextColorFloat(TTF_Text* text, float r, float g, float b, float a);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetTextColor(TTF_Text* text, [NativeTypeName("Uint8 *")] byte* r, [NativeTypeName("Uint8 *")] byte* g, [NativeTypeName("Uint8 *")] byte* b, [NativeTypeName("Uint8 *")] byte* a);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetTextColorFloat(TTF_Text* text, float* r, float* g, float* b, float* a);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_SetTextPosition(TTF_Text* text, int x, int y);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetTextPosition(TTF_Text* text, int* x, int* y);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_SetTextWrapWidth(TTF_Text* text, int wrap_width);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetTextWrapWidth(TTF_Text* text, int* wrap_width);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_SetTextWrapWhitespaceVisible(TTF_Text* text, [NativeTypeName("bool")] SDLBool visible);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_TextWrapWhitespaceVisible(TTF_Text* text);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_SetTextString(TTF_Text* text, [NativeTypeName("const char *")] byte* @string, [NativeTypeName("size_t")] nuint length);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_InsertTextString(TTF_Text* text, int offset, [NativeTypeName("const char *")] byte* @string, [NativeTypeName("size_t")] nuint length);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_AppendTextString(TTF_Text* text, [NativeTypeName("const char *")] byte* @string, [NativeTypeName("size_t")] nuint length);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_DeleteTextString(TTF_Text* text, int offset, int length);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetTextSize(TTF_Text* text, int* w, int* h);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetTextSubString(TTF_Text* text, int offset, TTF_SubString* substring);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetTextSubStringForLine(TTF_Text* text, int line, TTF_SubString* substring);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern TTF_SubString** TTF_GetTextSubStringsForRange(TTF_Text* text, int offset, int length, int* count);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetTextSubStringForPoint(TTF_Text* text, int x, int y, TTF_SubString* substring);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetPreviousTextSubString(TTF_Text* text, [NativeTypeName("const TTF_SubString *")] TTF_SubString* substring, TTF_SubString* previous);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_GetNextTextSubString(TTF_Text* text, [NativeTypeName("const TTF_SubString *")] TTF_SubString* substring, TTF_SubString* next);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ [return: NativeTypeName("bool")]
+ public static extern SDLBool TTF_UpdateText(TTF_Text* text);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern void TTF_DestroyText(TTF_Text* text);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern void TTF_CloseFont(TTF_Font* font);
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern void TTF_Quit();
+
+ [DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
+ public static extern int TTF_WasInit();
+
+ [NativeTypeName("#define SDL_TTF_MAJOR_VERSION 3")]
+ public const int SDL_TTF_MAJOR_VERSION = 3;
+
+ [NativeTypeName("#define SDL_TTF_MINOR_VERSION 0")]
+ public const int SDL_TTF_MINOR_VERSION = 0;
+
+ [NativeTypeName("#define SDL_TTF_MICRO_VERSION 0")]
+ public const int SDL_TTF_MICRO_VERSION = 0;
+
+ [NativeTypeName("#define SDL_TTF_VERSION SDL_VERSIONNUM(SDL_TTF_MAJOR_VERSION, SDL_TTF_MINOR_VERSION, SDL_TTF_MICRO_VERSION)")]
+ public const int SDL_TTF_VERSION = ((3) * 1000000 + (0) * 1000 + (0));
+
+ [NativeTypeName("#define TTF_PROP_FONT_CREATE_FILENAME_STRING \"SDL_ttf.font.create.filename\"")]
+ public static ReadOnlySpan TTF_PROP_FONT_CREATE_FILENAME_STRING => "SDL_ttf.font.create.filename"u8;
+
+ [NativeTypeName("#define TTF_PROP_FONT_CREATE_IOSTREAM_POINTER \"SDL_ttf.font.create.iostream\"")]
+ public static ReadOnlySpan TTF_PROP_FONT_CREATE_IOSTREAM_POINTER => "SDL_ttf.font.create.iostream"u8;
+
+ [NativeTypeName("#define TTF_PROP_FONT_CREATE_IOSTREAM_OFFSET_NUMBER \"SDL_ttf.font.create.iostream.offset\"")]
+ public static ReadOnlySpan TTF_PROP_FONT_CREATE_IOSTREAM_OFFSET_NUMBER => "SDL_ttf.font.create.iostream.offset"u8;
+
+ [NativeTypeName("#define TTF_PROP_FONT_CREATE_IOSTREAM_AUTOCLOSE_BOOLEAN \"SDL_ttf.font.create.iostream.autoclose\"")]
+ public static ReadOnlySpan TTF_PROP_FONT_CREATE_IOSTREAM_AUTOCLOSE_BOOLEAN => "SDL_ttf.font.create.iostream.autoclose"u8;
+
+ [NativeTypeName("#define TTF_PROP_FONT_CREATE_SIZE_FLOAT \"SDL_ttf.font.create.size\"")]
+ public static ReadOnlySpan TTF_PROP_FONT_CREATE_SIZE_FLOAT => "SDL_ttf.font.create.size"u8;
+
+ [NativeTypeName("#define TTF_PROP_FONT_CREATE_FACE_NUMBER \"SDL_ttf.font.create.face\"")]
+ public static ReadOnlySpan TTF_PROP_FONT_CREATE_FACE_NUMBER => "SDL_ttf.font.create.face"u8;
+
+ [NativeTypeName("#define TTF_PROP_FONT_CREATE_HORIZONTAL_DPI_NUMBER \"SDL_ttf.font.create.hdpi\"")]
+ public static ReadOnlySpan TTF_PROP_FONT_CREATE_HORIZONTAL_DPI_NUMBER => "SDL_ttf.font.create.hdpi"u8;
+
+ [NativeTypeName("#define TTF_PROP_FONT_CREATE_VERTICAL_DPI_NUMBER \"SDL_ttf.font.create.vdpi\"")]
+ public static ReadOnlySpan TTF_PROP_FONT_CREATE_VERTICAL_DPI_NUMBER => "SDL_ttf.font.create.vdpi"u8;
+
+ [NativeTypeName("#define TTF_STYLE_NORMAL 0x00")]
+ public const int TTF_STYLE_NORMAL = 0x00;
+
+ [NativeTypeName("#define TTF_STYLE_BOLD 0x01")]
+ public const int TTF_STYLE_BOLD = 0x01;
+
+ [NativeTypeName("#define TTF_STYLE_ITALIC 0x02")]
+ public const int TTF_STYLE_ITALIC = 0x02;
+
+ [NativeTypeName("#define TTF_STYLE_UNDERLINE 0x04")]
+ public const int TTF_STYLE_UNDERLINE = 0x04;
+
+ [NativeTypeName("#define TTF_STYLE_STRIKETHROUGH 0x08")]
+ public const int TTF_STYLE_STRIKETHROUGH = 0x08;
+
+ [NativeTypeName("#define TTF_HINTING_NORMAL 0")]
+ public const int TTF_HINTING_NORMAL = 0;
+
+ [NativeTypeName("#define TTF_HINTING_LIGHT 1")]
+ public const int TTF_HINTING_LIGHT = 1;
+
+ [NativeTypeName("#define TTF_HINTING_MONO 2")]
+ public const int TTF_HINTING_MONO = 2;
+
+ [NativeTypeName("#define TTF_HINTING_NONE 3")]
+ public const int TTF_HINTING_NONE = 3;
+
+ [NativeTypeName("#define TTF_HINTING_LIGHT_SUBPIXEL 4")]
+ public const int TTF_HINTING_LIGHT_SUBPIXEL = 4;
+
+ [NativeTypeName("#define TTF_SUBSTRING_TEXT_START 0x00000001")]
+ public const int TTF_SUBSTRING_TEXT_START = 0x00000001;
+
+ [NativeTypeName("#define TTF_SUBSTRING_LINE_START 0x00000002")]
+ public const int TTF_SUBSTRING_LINE_START = 0x00000002;
+
+ [NativeTypeName("#define TTF_SUBSTRING_LINE_END 0x00000004")]
+ public const int TTF_SUBSTRING_LINE_END = 0x00000004;
+
+ [NativeTypeName("#define TTF_SUBSTRING_TEXT_END 0x00000008")]
+ public const int TTF_SUBSTRING_TEXT_END = 0x00000008;
+ }
+}
diff --git a/SDL3-CS/generate_bindings.py b/SDL3-CS/generate_bindings.py
index d855256..7eaad20 100644
--- a/SDL3-CS/generate_bindings.py
+++ b/SDL3-CS/generate_bindings.py
@@ -34,8 +34,14 @@ unsafe_prefix = "Unsafe_"
repository_root = pathlib.Path(__file__).resolve().parents[1]
-SDL_root = repository_root / "External" / "SDL"
-SDL_include_root = SDL_root / "include"
+SDL_lib_root = "External"
+SDL_libs = ["SDL", "SDL_image", "SDL_ttf"]
+SDL_lib_include_root = {
+ "SDL3": SDL_lib_root + "/SDL/include",
+ "SDL3_image": SDL_lib_root + "/SDL_image/include",
+ "SDL3_ttf": SDL_lib_root + "/SDL_ttf/include"
+}
+
SDL3_header_base = "SDL3" # base folder of header files
csproj_root = repository_root / "SDL3-CS"
@@ -44,12 +50,13 @@ csproj_root = repository_root / "SDL3-CS"
class Header:
"""Represents a SDL header file that is used in ClangSharp generation."""
- def __init__(self, base: str, name: str, output_suffix=None):
- assert base == SDL3_header_base
+ def __init__(self, base: str, name: str, folder: str, output_suffix=None):
+ assert base in SDL_lib_include_root
assert name.startswith("SDL")
assert not name.endswith(".h")
self.base = base
self.name = name
+ self.folder = folder
self.output_suffix = output_suffix
def __str__(self):
@@ -60,8 +67,8 @@ class Header:
return f"{self.name}.h"
def input_file(self):
- """Input header file relative to SDL_include_root."""
- return f"{self.base}/{self.name}.h"
+ """Input header file relative to repository_root."""
+ return f"{self.folder}/{self.base}/{self.name}.h"
def output_file(self):
"""Location of generated C# file."""
@@ -99,14 +106,14 @@ def make_header_fuzzy(s: str) -> Header:
if name.endswith(".h"):
name = name.replace(".h", "")
- return Header(base, name)
+ return Header(base, name, SDL_lib_include_root[base])
def add(s: str):
base, name = s.split("/")
assert s.endswith(".h")
name = name.replace(".h", "")
- return Header(base, name)
+ return Header(base, name, SDL_lib_include_root[base])
headers = [
@@ -160,22 +167,26 @@ headers = [
add("SDL3/SDL_version.h"),
add("SDL3/SDL_video.h"),
add("SDL3/SDL_vulkan.h"),
+ add("SDL3_image/SDL_image.h"),
+ add("SDL3_ttf/SDL_ttf.h"),
+ add("SDL3_ttf/SDL_textengine.h"),
]
def prepare_sdl_source():
- subprocess.run([
- "git",
- "reset",
- "--hard",
- "HEAD"
- ], cwd=SDL_root)
+ for lib in SDL_libs:
+ subprocess.run([
+ "git",
+ "reset",
+ "--hard",
+ "HEAD"
+ ], cwd=repository_root / SDL_lib_root / lib)
def get_sdl_api_dump():
subprocess.run([
sys.executable,
- SDL_root / "src" / "dynapi" / "gendynapi.py",
+ repository_root / SDL_lib_root / "SDL" / "src" / "dynapi" / "gendynapi.py",
"--dump"
])
@@ -250,9 +261,11 @@ base_command = [
"windows-types",
"generate-macro-bindings",
- "--file-directory", SDL_include_root,
- "--include-directory", SDL_include_root,
- "--libraryPath", "SDL3",
+ "--file-directory", repository_root,
+ "--include-directory", repository_root / SDL_lib_include_root["SDL3"],
+ "--include-directory", repository_root / SDL_lib_include_root["SDL3_image"],
+ "--include-directory", repository_root / SDL_lib_include_root["SDL3_ttf"],
+# "--libraryPath", "SDL3",
"--methodClassName", "SDL3",
"--namespace", "SDL",
@@ -295,6 +308,7 @@ def run_clangsharp(command, header: Header):
cmd = command + [
"--file", header.input_file(),
"--output", header.output_file(),
+ "--libraryPath", header.base,
]
for rsp in header.rsp_files():