mirror of https://github.com/ppy/SDL3-CS.git
Merge pull request #179 from WizzardMaker/feature/sdl-libs
Adds support for sdl_image and sdl_ttf (also other libs)
This commit is contained in:
commit
ac2e352e81
|
|
@ -21,13 +21,13 @@ jobs:
|
|||
- { name: linux-x86, os: ubuntu-22.04, flags: -GNinja -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32", target_apt_arch: ":i386" }
|
||||
- { name: linux-arm64, os: ubuntu-22.04-arm, flags: -GNinja, target_apt_arch: ":arm64", container: "arm64v8/ubuntu:22.04" }
|
||||
- { name: linux-arm, os: ubuntu-22.04-arm, flags: -GNinja, target_apt_arch: ":armhf", container: "arm32v7/ubuntu:22.04" }
|
||||
- { name: osx-x64, os: macos-latest, flags: -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 }
|
||||
- { name: osx-x64, os: macos-13, flags: -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 }
|
||||
# NOTE: macOS 11.0 is the first released supported by Apple Silicon.
|
||||
- { name: osx-arm64, os: macos-latest, flags: -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 }
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
submodules: recursive
|
||||
|
||||
- name: Build (Linux ARM)
|
||||
if: contains(matrix.platform.container, 'arm')
|
||||
|
|
|
|||
|
|
@ -26,16 +26,16 @@ jobs:
|
|||
uses: android-actions/setup-android@v3
|
||||
|
||||
- name: Install .NET workloads
|
||||
run: dotnet workload restore SDL3-CS/SDL3-CS.csproj
|
||||
run: dotnet workload restore
|
||||
|
||||
- name: Build & pack
|
||||
run: dotnet pack SDL3-CS/SDL3-CS.csproj -c Release /p:Version=$(git describe --exact-match --tags HEAD)
|
||||
run: dotnet pack -c Release /p:Version=$(git describe --exact-match --tags HEAD) -o artifacts
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: SDL3-CS
|
||||
path: SDL3-CS/bin/Release/ppy.*.nupkg
|
||||
name: Packages
|
||||
path: artifacts/ppy.*.nupkg
|
||||
|
||||
- name: Publish tagged release to nuget.org
|
||||
run: dotnet nuget push SDL3-CS/bin/Release/ppy.*.nupkg -s https://api.nuget.org/v3/index.json --api-key ${{secrets.NUGET_API_KEY}}
|
||||
run: dotnet nuget push artifacts/ppy.*.nupkg -s https://api.nuget.org/v3/index.json --api-key ${{secrets.NUGET_API_KEY}}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
|
||||
</project>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="UserContentModel">
|
||||
<attachedFolders />
|
||||
<explicitIncludes />
|
||||
<explicitExcludes />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectUserFactors">
|
||||
<factor id="completionFinishedType">
|
||||
<dailyData date="26-06-2023">
|
||||
<observation name="cancelled" value="31.0" />
|
||||
<observation name="explicitSelect" value="7.0" />
|
||||
</dailyData>
|
||||
</factor>
|
||||
<factor id="completionType">
|
||||
<dailyData date="26-06-2023">
|
||||
<observation name="BASIC" value="31.0" />
|
||||
</dailyData>
|
||||
</factor>
|
||||
<factor id="completionUsage">
|
||||
<dailyData date="26-06-2023">
|
||||
<observation name="count" value="38.0" />
|
||||
</dailyData>
|
||||
</factor>
|
||||
<factor id="itemPosition">
|
||||
<dailyData date="26-06-2023">
|
||||
<observation name="0" value="6.0" />
|
||||
<observation name="86" value="1.0" />
|
||||
</dailyData>
|
||||
</factor>
|
||||
<factor id="mnemonicsUsage">
|
||||
<dailyData date="26-06-2023">
|
||||
<observation name="total" value="7.0" />
|
||||
<observation name="withMnemonics" value="0.0" />
|
||||
</dailyData>
|
||||
</factor>
|
||||
<factor id="prefixLength">
|
||||
<dailyData date="26-06-2023">
|
||||
<observation name="21" value="1.0" />
|
||||
<observation name="24" value="1.0" />
|
||||
<observation name="26" value="1.0" />
|
||||
<observation name="28" value="1.0" />
|
||||
<observation name="29" value="2.0" />
|
||||
<observation name="32" value="1.0" />
|
||||
</dailyData>
|
||||
</factor>
|
||||
<factor id="prefixMatchingType">
|
||||
<dailyData date="26-06-2023">
|
||||
<observation name="GREEDY_WITH_CASE" value="4.0" />
|
||||
<observation name="WORDS_FIRST_CHAR" value="1.0" />
|
||||
</dailyData>
|
||||
</factor>
|
||||
<factor id="templatesUsage">
|
||||
<dailyData date="26-06-2023">
|
||||
<observation name="totalStartingWithPrefix" value="7.0" />
|
||||
</dailyData>
|
||||
</factor>
|
||||
<factor id="timeBetweenTyping">
|
||||
<dailyData date="26-06-2023">
|
||||
<observation name="average" value="115.76087" />
|
||||
<observation name="count" value="92.0" />
|
||||
</dailyData>
|
||||
</factor>
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RiderProjectSettingsUpdater">
|
||||
<option name="singleClickDiffPreview" value="1" />
|
||||
<option name="unhandledExceptionsIgnoreList" value="1" />
|
||||
<option name="vcsConfiguration" value="3" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 0d418a2a2dc562699854d9c2fc264304ec404e2c
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 582c6957161d6cc4d3b09cae37744bdfe3700368
|
||||
|
|
@ -10,7 +10,11 @@ if [[ -z $NAME || -z $RUNNER_OS || -z $FLAGS ]]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
SUDO=$(which sudo || exit 0)
|
||||
if [[ $RUNNER_OS == 'Windows' ]]; then
|
||||
SUDO=""
|
||||
else
|
||||
SUDO=$(which sudo || exit 0)
|
||||
fi
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
|
|
@ -69,6 +73,10 @@ if [[ $RUNNER_OS == 'Linux' ]]; then
|
|||
libpulse-dev$TARGET_APT_ARCH \
|
||||
libpipewire-0.3-dev$TARGET_APT_ARCH \
|
||||
libdecor-0-dev$TARGET_APT_ARCH
|
||||
|
||||
git config --global --add safe.directory /workspace/External/SDL
|
||||
git config --global --add safe.directory /workspace/External/SDL_image
|
||||
git config --global --add safe.directory /workspace/External/SDL_ttf
|
||||
fi
|
||||
|
||||
# Build SDL
|
||||
|
|
@ -94,4 +102,54 @@ elif [[ $RUNNER_OS == 'macOS' ]]; then
|
|||
cp SDL/install_output/lib/libSDL3.dylib ../native/$NAME/libSDL3.dylib
|
||||
fi
|
||||
|
||||
# Use the correct CMAKE_PREFIX_PATH for SDL_image and SDL_ttf, probably due differences in Cmake versions
|
||||
if [[ $RUNNER_OS == 'Windows' ]]; then
|
||||
CMAKE_PREFIX_PATH="../SDL/install_output/cmake/"
|
||||
elif [[ $RUNNER_OS == 'Linux' ]]; then
|
||||
CMAKE_PREFIX_PATH="../SDL/install_output/lib/cmake/"
|
||||
elif [[ $RUNNER_OS == 'macOS' ]]; then
|
||||
CMAKE_PREFIX_PATH="../SDL/install_output/lib/cmake/"
|
||||
fi
|
||||
|
||||
# Build SDL_image
|
||||
pushd SDL_image
|
||||
git reset --hard HEAD
|
||||
# -DSDLIMAGE_AVIF=OFF is used because windows requires special setup to build avif support (nasm)
|
||||
# TODO: Add support for avif on windows (VisualC script uses dynamic imports)
|
||||
cmake -B build $FLAGS -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSDL_SHARED_ENABLED_BY_DEFAULT=ON -DSDL_STATIC_ENABLED_BY_DEFAULT=ON -DCMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH -DSDLIMAGE_AVIF=OFF
|
||||
cmake --build build/ --config Release
|
||||
$SUDO cmake --install build/ --prefix install_output --config Release
|
||||
popd
|
||||
|
||||
# Move build lib into correct folders
|
||||
if [[ $RUNNER_OS == 'Windows' ]]; then
|
||||
cp SDL_image/install_output/bin/SDL3_image.dll ../native/$NAME/SDL3_image.dll
|
||||
cp SDL_image/install_output/bin/libwebp.dll ../native/$NAME/libwebp.dll
|
||||
cp SDL_image/install_output/bin/libwebpdemux.dll ../native/$NAME/libwebpdemux.dll
|
||||
cp SDL_image/install_output/bin/tiff.dll ../native/$NAME/tiff.dll
|
||||
elif [[ $RUNNER_OS == 'Linux' ]]; then
|
||||
cp SDL_image/install_output/lib/libSDL3_image.so ../native/$NAME/libSDL3_image.so
|
||||
# TODO: find out if webp, etc. are also needed on linux here
|
||||
elif [[ $RUNNER_OS == 'macOS' ]]; then
|
||||
cp SDL_image/install_output/lib/libSDL3_image.dylib ../native/$NAME/libSDL3_image.dylib
|
||||
# TODO: find out if webp, etc. are also needed on macOS here
|
||||
fi
|
||||
|
||||
# Build SDL_ttf
|
||||
pushd SDL_ttf
|
||||
git reset --hard HEAD
|
||||
cmake -B build $FLAGS -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSDL_SHARED_ENABLED_BY_DEFAULT=ON -DSDL_STATIC_ENABLED_BY_DEFAULT=ON -DCMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH -DCMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||
cmake --build build/ --config Release
|
||||
$SUDO cmake --install build/ --prefix install_output --config Release
|
||||
popd
|
||||
|
||||
# Move build lib into correct folders
|
||||
if [[ $RUNNER_OS == 'Windows' ]]; then
|
||||
cp SDL_ttf/install_output/bin/SDL3_ttf.dll ../native/$NAME/SDL3_ttf.dll
|
||||
elif [[ $RUNNER_OS == 'Linux' ]]; then
|
||||
cp SDL_ttf/install_output/lib/libSDL3_ttf.so ../native/$NAME/libSDL3_ttf.so
|
||||
elif [[ $RUNNER_OS == 'macOS' ]]; then
|
||||
cp SDL_ttf/install_output/lib/libSDL3_ttf.dylib ../native/$NAME/libSDL3_ttf.dylib
|
||||
fi
|
||||
|
||||
popd
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
"path": "SDL3-CS.sln",
|
||||
"projects": [
|
||||
"SDL3-CS\\SDL3-CS.csproj",
|
||||
"SDL3_ttf-CS\\SDL3_ttf-CS.csproj",
|
||||
"SDL3_image-CS\\SDL3_image-CS.csproj",
|
||||
"SDL3-CS.SourceGeneration\\SDL3-CS.SourceGeneration.csproj",
|
||||
"SDL3-CS.Tests\\SDL3-CS.Tests.csproj",
|
||||
"SDL3-CS.Tests.Android\\SDL3-CS.Tests.Android.csproj"
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
"path": "SDL3-CS.sln",
|
||||
"projects": [
|
||||
"SDL3-CS\\SDL3-CS.csproj",
|
||||
"SDL3_ttf-CS\\SDL3_ttf-CS.csproj",
|
||||
"SDL3_image-CS\\SDL3_image-CS.csproj",
|
||||
"SDL3-CS.SourceGeneration\\SDL3-CS.SourceGeneration.csproj",
|
||||
"SDL3-CS.Tests\\SDL3-CS.Tests.csproj",
|
||||
"SDL3-CS.Tests.Desktop\\SDL3-CS.Tests.Desktop.csproj"
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ using System.Collections.Generic;
|
|||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.CSharp;
|
||||
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
||||
|
|
@ -32,9 +33,14 @@ using System;
|
|||
|
||||
foreach (var kvp in finder.Methods)
|
||||
{
|
||||
if (kvp.Value.Count == 0)
|
||||
return;
|
||||
|
||||
string filename = kvp.Key;
|
||||
var foundMethods = kvp.Value;
|
||||
|
||||
string className = ClassNameFromMethod(foundMethods.First().NativeMethod);
|
||||
|
||||
var result = new StringBuilder();
|
||||
result.Append(file_header);
|
||||
result.Append(
|
||||
|
|
@ -42,7 +48,7 @@ using System;
|
|||
SyntaxFactory.IdentifierName("SDL"))
|
||||
.WithMembers(
|
||||
SyntaxFactory.SingletonList<MemberDeclarationSyntax>(
|
||||
SyntaxFactory.ClassDeclaration("SDL3")
|
||||
SyntaxFactory.ClassDeclaration(className)
|
||||
.WithModifiers(
|
||||
SyntaxFactory.TokenList(
|
||||
SyntaxFactory.Token(SyntaxKind.UnsafeKeyword),
|
||||
|
|
@ -54,6 +60,16 @@ using System;
|
|||
}
|
||||
}
|
||||
|
||||
private static string ClassNameFromMethod(MethodDeclarationSyntax methodNode)
|
||||
{
|
||||
if (methodNode.Parent is ClassDeclarationSyntax classDeclaration)
|
||||
{
|
||||
return classDeclaration.Identifier.Text;
|
||||
}
|
||||
|
||||
return "SDL3"; // fallback!
|
||||
}
|
||||
|
||||
private static MemberDeclarationSyntax makeFriendlyMethod(GeneratedMethod gm)
|
||||
{
|
||||
var returnType = gm.RequiredChanges.HasFlag(Changes.ChangeReturnTypeToString)
|
||||
|
|
|
|||
|
|
@ -15,14 +15,31 @@ namespace SDL.SourceGeneration
|
|||
{
|
||||
public readonly Dictionary<string, List<GeneratedMethod>> Methods = new Dictionary<string, List<GeneratedMethod>>();
|
||||
|
||||
private static readonly string[] sdlPrefixes = ["SDL_", "TTF_", "IMG_"];
|
||||
|
||||
/// <summary>
|
||||
/// Checks whether the method is from any SDL library.
|
||||
/// It identifies those by checking the SDL prefix in the method name.
|
||||
/// </summary>
|
||||
private static bool IsMethodFromSDL(MethodDeclarationSyntax methodNode)
|
||||
{
|
||||
foreach (string prefix in sdlPrefixes)
|
||||
{
|
||||
if (methodNode.Identifier.ValueText.StartsWith(prefix, StringComparison.Ordinal))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void OnVisitSyntaxNode(SyntaxNode syntaxNode)
|
||||
{
|
||||
if (syntaxNode is MethodDeclarationSyntax method)
|
||||
{
|
||||
string name = method.Identifier.ValueText;
|
||||
bool isUnsafe = name.StartsWith($"{Helper.UnsafePrefix}SDL_", StringComparison.Ordinal);
|
||||
bool isUnsafe = name.StartsWith(Helper.UnsafePrefix, StringComparison.Ordinal);
|
||||
|
||||
if (!name.StartsWith("SDL_", StringComparison.Ordinal) && !isUnsafe)
|
||||
if (!IsMethodFromSDL(method) && !isUnsafe)
|
||||
return;
|
||||
|
||||
if (method.ParameterList.Parameters.Any(p => p.Identifier.IsKind(SyntaxKind.ArgListKeyword)))
|
||||
|
|
|
|||
|
|
@ -11,6 +11,10 @@
|
|||
<ApplicationId>SDL.Tests.Android</ApplicationId>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Label="NuGet">
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SDL3-CS.Tests\SDL3-CS.Tests.csproj"/>
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -8,6 +8,10 @@
|
|||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Label="NuGet">
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SDL3-CS.Tests\SDL3-CS.Tests.csproj"/>
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0-ios</TargetFramework>
|
||||
|
|
@ -11,6 +11,10 @@
|
|||
<CodesignKey>iPhone Developer</CodesignKey>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Label="NuGet">
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SDL3-CS.Tests\SDL3-CS.Tests.csproj" PrivateAssets="all"/>
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -10,6 +10,10 @@
|
|||
<GenerateProgramFile>false</GenerateProgramFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Label="NuGet">
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0"/>
|
||||
<PackageReference Include="NUnit" Version="3.13.3"/>
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
"path": "SDL3-CS.sln",
|
||||
"projects": [
|
||||
"SDL3-CS\\SDL3-CS.csproj",
|
||||
"SDL3_ttf-CS\\SDL3_ttf-CS.csproj",
|
||||
"SDL3_image-CS\\SDL3_image-CS.csproj",
|
||||
"SDL3-CS.SourceGeneration\\SDL3-CS.SourceGeneration.csproj",
|
||||
"SDL3-CS.Tests\\SDL3-CS.Tests.csproj",
|
||||
"SDL3-CS.Tests.iOS\\SDL3-CS.Tests.iOS.csproj"
|
||||
|
|
|
|||
12
SDL3-CS.sln
12
SDL3-CS.sln
|
|
@ -25,6 +25,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SDL3-CS.Tests.iOS", "SDL3-C
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SDL3-CS.Tests.Desktop", "SDL3-CS.Tests.Desktop\SDL3-CS.Tests.Desktop.csproj", "{7E8D719A-5B69-43B7-A9D5-385B6FE7F411}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SDL3_ttf-CS", "SDL3_ttf-CS\SDL3_ttf-CS.csproj", "{8E37EB82-ACC4-4656-A6E5-DB298AE72066}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SDL3_image-CS", "SDL3_image-CS\SDL3_image-CS.csproj", "{A0D6FC5F-BA26-4298-ABF0-234D2481E323}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
|
@ -55,6 +59,14 @@ Global
|
|||
{7E8D719A-5B69-43B7-A9D5-385B6FE7F411}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7E8D719A-5B69-43B7-A9D5-385B6FE7F411}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7E8D719A-5B69-43B7-A9D5-385B6FE7F411}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{8E37EB82-ACC4-4656-A6E5-DB298AE72066}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{8E37EB82-ACC4-4656-A6E5-DB298AE72066}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{8E37EB82-ACC4-4656-A6E5-DB298AE72066}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8E37EB82-ACC4-4656-A6E5-DB298AE72066}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A0D6FC5F-BA26-4298-ABF0-234D2481E323}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A0D6FC5F-BA26-4298-ABF0-234D2481E323}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A0D6FC5F-BA26-4298-ABF0-234D2481E323}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A0D6FC5F-BA26-4298-ABF0-234D2481E323}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
|
|||
|
|
@ -4,3 +4,7 @@
|
|||
using System.Runtime.CompilerServices;
|
||||
|
||||
[assembly: InternalsVisibleTo("SDL3-CS.Tests")]
|
||||
|
||||
// Allow access to internal CodeGen members (e.g. NativeTypeNameAttribute, etc.) for SDL sister projects:
|
||||
[assembly: InternalsVisibleTo("SDL3_ttf-CS")]
|
||||
[assembly: InternalsVisibleTo("SDL3_image-CS")]
|
||||
|
|
|
|||
|
|
@ -75,8 +75,8 @@
|
|||
<PackagePath>runtimes/linux-arm/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\ios\**\*">
|
||||
<PackagePath>runtimes/ios/native</PackagePath>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\ios\SDL3.xcframework\**\*">
|
||||
<PackagePath>runtimes/ios/native/SDL3.xcframework</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\android\armeabi-v7a\libSDL3.so">
|
||||
|
|
|
|||
|
|
@ -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,28 +67,28 @@ 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."""
|
||||
if self.output_suffix is None:
|
||||
return csproj_root / f"{self.base}/ClangSharp/{self.name}.g.cs"
|
||||
return repository_root / f"{self.base}-CS" / f"{self.base}/ClangSharp/{self.name}.g.cs"
|
||||
else:
|
||||
return csproj_root / f"{self.base}/ClangSharp/{self.name}.{self.output_suffix}.g.cs"
|
||||
return repository_root / f"{self.base}-CS" / f"{self.base}/ClangSharp/{self.name}.{self.output_suffix}.g.cs"
|
||||
|
||||
def rsp_files(self):
|
||||
"""Location of ClangSharp response files."""
|
||||
yield csproj_root / f"{self.base}/{self.name}.rsp"
|
||||
yield repository_root / f"{self.base}-CS" / f"{self.base}/{self.name}.rsp"
|
||||
if self.output_suffix is not None:
|
||||
yield csproj_root / f"{self.base}/{self.name}.{self.output_suffix}.rsp"
|
||||
yield repository_root / f"{self.base}-CS" / f"{self.base}/{self.name}.{self.output_suffix}.rsp"
|
||||
|
||||
def cs_file(self):
|
||||
"""Location of the manually-written C# file that implements some parts of the header."""
|
||||
if self.output_suffix is None:
|
||||
return csproj_root / f"{self.base}/{self.name}.cs"
|
||||
return repository_root / f"{self.base}-CS" / f"{self.base}/{self.name}.cs"
|
||||
else:
|
||||
return csproj_root / f"{self.base}/{self.name}.{self.output_suffix}.cs"
|
||||
return repository_root / f"{self.base}-CS" / f"{self.base}/{self.name}.{self.output_suffix}.cs"
|
||||
|
||||
|
||||
def make_header_fuzzy(s: str) -> Header:
|
||||
|
|
@ -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 = [
|
||||
|
|
@ -162,22 +169,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"
|
||||
])
|
||||
|
||||
|
|
@ -212,7 +223,7 @@ def check_generated_functions(sdl_api, header, generated_file_paths):
|
|||
print(f"[⚠️ Warning] Function {name} not found in generated files:", *generated_file_paths)
|
||||
|
||||
|
||||
defined_constant_regex = re.compile(r"\[Constant]\s*public (const|static readonly) \w+ (SDL_\w+) = ", re.MULTILINE)
|
||||
defined_constant_regex = re.compile(r"\[Constant]\s*public (const|static readonly) \w+ (\w+_\w+) = ", re.MULTILINE)
|
||||
|
||||
|
||||
def get_manually_written_symbols(header):
|
||||
|
|
@ -223,11 +234,10 @@ def get_manually_written_symbols(header):
|
|||
text = f.read()
|
||||
for match in defined_constant_regex.finditer(text):
|
||||
m = match.group(2)
|
||||
assert m.startswith("SDL_")
|
||||
yield m
|
||||
|
||||
|
||||
typedef_enum_regex = re.compile(r"\[Typedef]\s*public enum (SDL_\w+)", re.MULTILINE)
|
||||
typedef_enum_regex = re.compile(r"\[Typedef]\s*public enum (\w+_\w+)", re.MULTILINE)
|
||||
|
||||
|
||||
def get_typedefs():
|
||||
|
|
@ -252,10 +262,10 @@ base_command = [
|
|||
"windows-types",
|
||||
"generate-macro-bindings",
|
||||
|
||||
"--file-directory", SDL_include_root,
|
||||
"--include-directory", SDL_include_root,
|
||||
"--libraryPath", "SDL3",
|
||||
"--methodClassName", "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"],
|
||||
"--namespace", "SDL",
|
||||
|
||||
"--remap",
|
||||
|
|
@ -297,6 +307,9 @@ def run_clangsharp(command, header: Header):
|
|||
cmd = command + [
|
||||
"--file", header.input_file(),
|
||||
"--output", header.output_file(),
|
||||
"--libraryPath", header.base,
|
||||
|
||||
"--methodClassName", header.base,
|
||||
]
|
||||
|
||||
for rsp in header.rsp_files():
|
||||
|
|
|
|||
|
|
@ -0,0 +1,125 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<RootNamespace>SDL</RootNamespace>
|
||||
<Nullable>enable</Nullable>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<NoWarn>$(NoWarn);SYSLIB1054;CA1401</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Label="NuGet">
|
||||
<Authors>ppy Pty Ltd</Authors>
|
||||
<Company>ppy Pty Ltd</Company>
|
||||
<Copyright>Copyright (c) 2024 ppy Pty Ltd</Copyright>
|
||||
<Product>ppy.SDL3_image-CS</Product>
|
||||
<PackageId>ppy.SDL3_image-CS</PackageId>
|
||||
<PackageReleaseNotes>Automated release.</PackageReleaseNotes>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
<PackageProjectUrl>https://github.com/ppy/SDL3-CS</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/ppy/SDL3-CS</RepositoryUrl>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SDL3-CS.SourceGeneration\SDL3-CS.SourceGeneration.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false"/>
|
||||
<ProjectReference Include="..\SDL3-CS\SDL3-CS.csproj"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-x64\SDL3_image.dll">
|
||||
<PackagePath>runtimes/win-x64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-arm64\SDL3_image.dll">
|
||||
<PackagePath>runtimes/win-arm64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-x86\SDL3_image.dll">
|
||||
<PackagePath>runtimes/win-x86/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-x64\libwebp.dll">
|
||||
<PackagePath>runtimes/win-x64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-arm64\libwebp.dll">
|
||||
<PackagePath>runtimes/win-arm64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-x86\libwebp.dll">
|
||||
<PackagePath>runtimes/win-x86/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-x64\libwebpdemux.dll">
|
||||
<PackagePath>runtimes/win-x64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-arm64\libwebpdemux.dll">
|
||||
<PackagePath>runtimes/win-arm64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-x86\libwebpdemux.dll">
|
||||
<PackagePath>runtimes/win-x86/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-x64\tiff.dll">
|
||||
<PackagePath>runtimes/win-x64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-arm64\tiff.dll">
|
||||
<PackagePath>runtimes/win-arm64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-x86\tiff.dll">
|
||||
<PackagePath>runtimes/win-x86/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\osx-x64\libSDL3_image.dylib">
|
||||
<PackagePath>runtimes/osx-x64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\osx-arm64\libSDL3_image.dylib">
|
||||
<PackagePath>runtimes/osx-arm64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\linux-x64\libSDL3_image.so">
|
||||
<PackagePath>runtimes/linux-x64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\linux-x86\libSDL3_image.so">
|
||||
<PackagePath>runtimes/linux-x86/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\linux-arm64\libSDL3_image.so">
|
||||
<PackagePath>runtimes/linux-arm64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\linux-arm\libSDL3_image.so">
|
||||
<PackagePath>runtimes/linux-arm/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<!-- Todo: Build these platforms with the CI script:
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\ios\SDL3_image.xcframework\**\*">
|
||||
<PackagePath>runtimes/ios/native/SDL3.xcframework</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\android\armeabi-v7a\libSDL3_image.so">
|
||||
<PackagePath>runtimes/android-arm/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\android\arm64-v8a\libSDL3_image.so">
|
||||
<PackagePath>runtimes/android-arm64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\android\x86_64\libSDL3_image.so">
|
||||
<PackagePath>runtimes/android-x64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\android\x86\libSDL3_image.so">
|
||||
<PackagePath>runtimes/android-x86/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
-->
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,279 @@
|
|||
/*
|
||||
<auto-generated/>
|
||||
C# bindings for Simple DirectMedia Layer.
|
||||
Original copyright notice of input files:
|
||||
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
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_image
|
||||
{
|
||||
[DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int IMG_Version();
|
||||
|
||||
[DllImport("SDL3_image", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern IMG_InitFlags IMG_Init(IMG_InitFlags 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 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;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
using System;
|
||||
|
||||
namespace SDL
|
||||
{
|
||||
[Flags]
|
||||
[Typedef]
|
||||
public enum IMG_InitFlags : int
|
||||
{
|
||||
IMG_INIT_JPG = SDL3_image.IMG_INIT_JPG,
|
||||
IMG_INIT_PNG = SDL3_image.IMG_INIT_PNG,
|
||||
IMG_INIT_TIF = SDL3_image.IMG_INIT_TIF,
|
||||
IMG_INIT_WEBP = SDL3_image.IMG_INIT_WEBP,
|
||||
IMG_INIT_JXL = SDL3_image.IMG_INIT_JXL,
|
||||
IMG_INIT_AVIF = SDL3_image.IMG_INIT_AVIF,
|
||||
}
|
||||
|
||||
public static unsafe partial class SDL3_image
|
||||
{
|
||||
[Constant]
|
||||
public static readonly int SDL_IMAGE_VERSION = SDL3.SDL_VERSIONNUM(SDL_IMAGE_MAJOR_VERSION, SDL_IMAGE_MINOR_VERSION, SDL_IMAGE_MICRO_VERSION);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<RootNamespace>SDL</RootNamespace>
|
||||
<Nullable>enable</Nullable>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<NoWarn>$(NoWarn);SYSLIB1054;CA1401</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Label="NuGet">
|
||||
<Authors>ppy Pty Ltd</Authors>
|
||||
<Company>ppy Pty Ltd</Company>
|
||||
<Copyright>Copyright (c) 2024 ppy Pty Ltd</Copyright>
|
||||
<Product>ppy.SDL3_ttf-CS</Product>
|
||||
<PackageId>ppy.SDL3_ttf-CS</PackageId>
|
||||
<PackageReleaseNotes>Automated release.</PackageReleaseNotes>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
<PackageProjectUrl>https://github.com/ppy/SDL3-CS</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/ppy/SDL3-CS</RepositoryUrl>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SDL3-CS.SourceGeneration\SDL3-CS.SourceGeneration.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false"/>
|
||||
<ProjectReference Include="..\SDL3-CS\SDL3-CS.csproj"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-x64\SDL3_ttf.dll">
|
||||
<PackagePath>runtimes/win-x64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-arm64\SDL3_ttf.dll">
|
||||
<PackagePath>runtimes/win-arm64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-x86\SDL3_ttf.dll">
|
||||
<PackagePath>runtimes/win-x86/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\osx-x64\libSDL3_ttf.dylib">
|
||||
<PackagePath>runtimes/osx-x64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\osx-arm64\libSDL3_ttf.dylib">
|
||||
<PackagePath>runtimes/osx-arm64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\linux-x64\libSDL3_ttf.so">
|
||||
<PackagePath>runtimes/linux-x64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\linux-x86\libSDL3_ttf.so">
|
||||
<PackagePath>runtimes/linux-x86/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\linux-arm64\libSDL3_ttf.so">
|
||||
<PackagePath>runtimes/linux-arm64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\linux-arm\libSDL3_ttf.so">
|
||||
<PackagePath>runtimes/linux-arm/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<!-- Todo: Build these platforms with the CI script:
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\ios\SDL3_ttf.xcframework\**\*">
|
||||
<PackagePath>runtimes/ios/native/SDL3.xcframework</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\android\armeabi-v7a\libSDL3_ttf.so">
|
||||
<PackagePath>runtimes/android-arm/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\android\arm64-v8a\libSDL3_ttf.so">
|
||||
<PackagePath>runtimes/android-arm64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\android\x86_64\libSDL3_ttf.so">
|
||||
<PackagePath>runtimes/android-x64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\android\x86\libSDL3_ttf.so">
|
||||
<PackagePath>runtimes/android-x86/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
-->
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,131 @@
|
|||
/*
|
||||
<auto-generated/>
|
||||
C# bindings for Simple DirectMedia Layer.
|
||||
Original copyright notice of input files:
|
||||
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
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]<IntPtr, TTF_Text*, SDLBool> CreateText;
|
||||
|
||||
[NativeTypeName("void (*)(void *, TTF_Text *)")]
|
||||
public delegate* unmanaged[Cdecl]<IntPtr, TTF_Text*, void> DestroyText;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,502 @@
|
|||
/*
|
||||
<auto-generated/>
|
||||
C# bindings for Simple DirectMedia Layer.
|
||||
Original copyright notice of input files:
|
||||
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
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
|
||||
{
|
||||
public TTF_SubStringFlags 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_ttf
|
||||
{
|
||||
[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 TTF_PROP_FONT_CREATE_FILENAME_STRING \"SDL_ttf.font.create.filename\"")]
|
||||
public static ReadOnlySpan<byte> 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<byte> 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<byte> 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<byte> 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<byte> 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<byte> 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<byte> 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<byte> 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;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
using System;
|
||||
|
||||
namespace SDL
|
||||
{
|
||||
[Flags]
|
||||
[Typedef]
|
||||
public enum TTF_SubStringFlags : int
|
||||
{
|
||||
TTF_SUBSTRING_TEXT_START = SDL3_ttf.TTF_SUBSTRING_TEXT_START,
|
||||
TTF_SUBSTRING_LINE_START = SDL3_ttf.TTF_SUBSTRING_LINE_START,
|
||||
TTF_SUBSTRING_LINE_END = SDL3_ttf.TTF_SUBSTRING_LINE_END,
|
||||
TTF_SUBSTRING_TEXT_END = SDL3_ttf.TTF_SUBSTRING_TEXT_END,
|
||||
}
|
||||
|
||||
public static unsafe partial class SDL3_ttf
|
||||
{
|
||||
[Constant]
|
||||
public static readonly int SDL_TTF_VERSION = SDL3.SDL_VERSIONNUM(SDL_TTF_MAJOR_VERSION, SDL_TTF_MINOR_VERSION, SDL_TTF_MICRO_VERSION);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue