Compare commits
23 Commits
f172c340ad
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 646eebaf63 | |||
| 163e9d4423 | |||
| a79bbbaa6a | |||
| e9baf01af0 | |||
| e238a7aa57 | |||
| 827b9fc902 | |||
| ad8845c13b | |||
| a77f4c8be5 | |||
| db07a2daff | |||
| 166839eb8a | |||
| 5b55dbb64e | |||
| 1c5f73ceb8 | |||
| dfd585c939 | |||
| a0ddeefe76 | |||
| 3eeb41c1c9 | |||
| ed462e05e1 | |||
| 8d6aa89c5e | |||
|
|
3e687d3c75 | ||
| 9063896923 | |||
| 378e85492c | |||
| 6367996b66 | |||
| c12a65133b | |||
| 42e908aeea |
28
.gitea/workflows/build.yaml
Normal file
28
.gitea/workflows/build.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
name: Build
|
||||
run-name: Build ReFuel.FreeType on Docker.
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
tags:
|
||||
- '*'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: git.mixedup.dev/refuel/docker-cross-compiler
|
||||
env:
|
||||
REFUEL_API_KEY: "${{secrets.REFUEL_API_KEY}}"
|
||||
NUGET_USER_NAME: "${{vars.NUGET_USER_NAME}}"
|
||||
NUGET_INDEX: "${{vars.NUGET_INDEX}}"
|
||||
volumes:
|
||||
- ${{ gitea.workspace }}:/home/refuel/src
|
||||
steps:
|
||||
- name: Check repository out.
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Run Build Script
|
||||
run: "./build_native.sh"
|
||||
- name: Publish Package
|
||||
run: "./publish.sh ."
|
||||
6
.gitmodules
vendored
Normal file
6
.gitmodules
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
[submodule "freetype"]
|
||||
path = freetype
|
||||
url = https://git.mixedup.dev/ReFuel/freetype.git
|
||||
[submodule "docker-cross-compiler"]
|
||||
path = docker-cross-compiler
|
||||
url = https://git.mixedup.dev/ReFuel/docker-cross-compiler
|
||||
5
FT.cs
5
FT.cs
@@ -2,7 +2,7 @@ using System;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Quik.FreeType
|
||||
namespace ReFuel.FreeType
|
||||
{
|
||||
public static class FT
|
||||
{
|
||||
@@ -17,7 +17,8 @@ namespace Quik.FreeType
|
||||
"runtimes/linux-arm/native/libfreetype.so",
|
||||
"runtimes/linux-arm64/native/libfreetype.so",
|
||||
"runtimes/linux-x64/native/libfreetype.so",
|
||||
"runtimes/native/libfreetype.dylib",
|
||||
"runtimes/osx-arm64/libfreetype.dylib",
|
||||
"runtimes/osx-x64/libfreetype.dylib",
|
||||
"libfreetype.dll",
|
||||
"libfreetype.so",
|
||||
"libfreetype.dylib",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace Quik.FreeType
|
||||
namespace ReFuel.FreeType
|
||||
{
|
||||
public enum FTError : int
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
using System;
|
||||
|
||||
namespace Quik.FreeType
|
||||
namespace ReFuel.FreeType
|
||||
{
|
||||
[Flags]
|
||||
public enum FTLoadFlags
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace Quik.FreeType
|
||||
namespace ReFuel.FreeType
|
||||
{
|
||||
public enum FTRenderMode
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
using System;
|
||||
|
||||
namespace Quik.FreeType
|
||||
namespace ReFuel.FreeType
|
||||
{
|
||||
[Flags]
|
||||
public enum FaceFlag : int
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<RuntimeIdentifiers>linux-arm;linux-arm64;linux-x64;win-x86;win-x64</RuntimeIdentifiers>
|
||||
<RuntimeIdentifiers>linux-arm;linux-arm64;linux-x64;win-x86;win-x64;osx-arm64;osx-x64</RuntimeIdentifiers>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<!-- Nuget Properties. -->
|
||||
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
|
||||
<PackageId>Quik.FreeType</PackageId>
|
||||
<Version>1.0.0</Version>
|
||||
<PackageId>ReFuel.FreeType</PackageId>
|
||||
<Version>0.1.0-rc.5</Version>
|
||||
<Authors>FreeType Authors, H. Utku Maden</Authors>
|
||||
<Description>
|
||||
A C# wrapper for the FreeType font loading library.
|
||||
22
ReFuel.FreeType.sln
Normal file
22
ReFuel.FreeType.sln
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.31903.59
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReFuel.FreeType", "ReFuel.FreeType.csproj", "{983377DF-BE92-42A5-A1B7-C2E1D5F3AAF2}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{983377DF-BE92-42A5-A1B7-C2E1D5F3AAF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{983377DF-BE92-42A5-A1B7-C2E1D5F3AAF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{983377DF-BE92-42A5-A1B7-C2E1D5F3AAF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{983377DF-BE92-42A5-A1B7-C2E1D5F3AAF2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
115
Structures.cs
115
Structures.cs
@@ -4,7 +4,7 @@ using System.Runtime.InteropServices;
|
||||
// Disable unused warnings for native types.
|
||||
#pragma warning disable CS0649
|
||||
|
||||
namespace Quik.FreeType
|
||||
namespace ReFuel.FreeType
|
||||
{
|
||||
public struct FTLibrary
|
||||
{
|
||||
@@ -40,32 +40,33 @@ namespace Quik.FreeType
|
||||
public long YMax;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Explicit, Size = 248)]
|
||||
internal struct FTFaceInternal
|
||||
{
|
||||
public long NumberOfFaces;
|
||||
public long FaceIndex;
|
||||
public long FaceFlags;
|
||||
public long StyleFlags;
|
||||
public long NumberOfGlyphs;
|
||||
public IntPtr FamilyName;
|
||||
public IntPtr StyleName;
|
||||
public int NumberOfFixedSizes;
|
||||
public IntPtr AvailableSizes;
|
||||
public int NumberOfCharMaps;
|
||||
public IntPtr Charmaps;
|
||||
public FTGeneric Generic;
|
||||
public FTBox BoundingBox;
|
||||
public ushort UnitsPerEm;
|
||||
public short Ascender;
|
||||
public short Descender;
|
||||
public short Height;
|
||||
public short MaxAdvanceWidth;
|
||||
public short MaxAdvanceHeight;
|
||||
public short UnderlinePosition;
|
||||
public short UnderlineThickness;
|
||||
public FTGlyphSlot Glyph;
|
||||
public IntPtr Size;
|
||||
public IntPtr Charmap;
|
||||
[FieldOffset(0)] public long NumberOfFaces;
|
||||
[FieldOffset(8)] public long FaceIndex;
|
||||
[FieldOffset(16)] public long FaceFlags;
|
||||
[FieldOffset(24)] public long StyleFlags;
|
||||
[FieldOffset(32)] public long NumberOfGlyphs;
|
||||
[FieldOffset(40)] public IntPtr FamilyName;
|
||||
[FieldOffset(48)] public IntPtr StyleName;
|
||||
[FieldOffset(56)] public int NumberOfFixedSizes;
|
||||
[FieldOffset(64)] public IntPtr AvailableSizes;
|
||||
[FieldOffset(72)] public int NumberOfCharMaps;
|
||||
[FieldOffset(80)] public IntPtr Charmaps;
|
||||
[FieldOffset(88)] public FTGeneric Generic;
|
||||
[FieldOffset(104)] public FTBox BoundingBox;
|
||||
[FieldOffset(136)] public ushort UnitsPerEm;
|
||||
[FieldOffset(138)] public short Ascender;
|
||||
[FieldOffset(140)] public short Descender;
|
||||
[FieldOffset(142)] public short Height;
|
||||
[FieldOffset(144)] public short MaxAdvanceWidth;
|
||||
[FieldOffset(146)] public short MaxAdvanceHeight;
|
||||
[FieldOffset(148)] public short UnderlinePosition;
|
||||
[FieldOffset(150)] public short UnderlineThickness;
|
||||
[FieldOffset(152)] public FTGlyphSlot Glyph;
|
||||
[FieldOffset(160)] public IntPtr Size;
|
||||
[FieldOffset(168)] public IntPtr Charmap;
|
||||
|
||||
// Rest of the struct is private to implementation.
|
||||
}
|
||||
@@ -82,52 +83,54 @@ namespace Quik.FreeType
|
||||
public long Y;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct FTBitmap
|
||||
{
|
||||
public uint Rows;
|
||||
public uint Width;
|
||||
public int Pitch;
|
||||
public IntPtr Buffer;
|
||||
public ushort NumberOfGrays;
|
||||
public byte PixelMode;
|
||||
public byte PaletteMode;
|
||||
public IntPtr Palette;
|
||||
[FieldOffset(0)] public uint Rows;
|
||||
[FieldOffset(4)] public uint Width;
|
||||
[FieldOffset(8)] public int Pitch;
|
||||
[FieldOffset(16)] public IntPtr Buffer;
|
||||
[FieldOffset(24)] public ushort NumberOfGrays;
|
||||
[FieldOffset(26)] public byte PixelMode;
|
||||
[FieldOffset(27)] public byte PaletteMode;
|
||||
[FieldOffset(32)] public IntPtr Palette;
|
||||
}
|
||||
|
||||
public struct FTOutline
|
||||
{
|
||||
public short NumberOfContours;
|
||||
public short NumberOfPoints;
|
||||
public short NumberOfPoints;
|
||||
public IntPtr Points;
|
||||
public IntPtr Tags;
|
||||
public IntPtr Contours;
|
||||
public int Flags;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Explicit, Size = 296)]
|
||||
internal struct FTGlyphSlotInternal
|
||||
{
|
||||
public FTLibrary Library;
|
||||
public FTFace Face;
|
||||
public FTGlyphSlot Next;
|
||||
public uint GlyphIndex;
|
||||
public FTGeneric Generic;
|
||||
public FTGlyphMetrics Metrics;
|
||||
public long LinearHorizontalAdvance;
|
||||
public long LinearVerticalAdvance;
|
||||
public FTVector Advance;
|
||||
public int Format;
|
||||
public FTBitmap Bitmap;
|
||||
public int BitmapLeft;
|
||||
public int BitmapTop;
|
||||
public FTOutline Outline;
|
||||
public uint NumberOfSubGlyphs;
|
||||
public IntPtr SubGlyphs;
|
||||
public IntPtr ControlData;
|
||||
public long ControlLength;
|
||||
public long LsbDelta;
|
||||
public long RsbDelta;
|
||||
public IntPtr Other;
|
||||
public IntPtr Internal;
|
||||
[FieldOffset(0)] public FTLibrary Library;
|
||||
[FieldOffset(8)] public FTFace Face;
|
||||
[FieldOffset(16)] public FTGlyphSlot Next;
|
||||
[FieldOffset(24)] public uint GlyphIndex;
|
||||
[FieldOffset(32)] public FTGeneric Generic;
|
||||
[FieldOffset(48)] public FTGlyphMetrics Metrics;
|
||||
[FieldOffset(112)] public int LinearHorizontalAdvance;
|
||||
[FieldOffset(116)] public int LinearVerticalAdvance;
|
||||
[FieldOffset(120)] public FTVector Advance;
|
||||
[FieldOffset(136)] public int Format;
|
||||
[FieldOffset(144)] public FTBitmap Bitmap;
|
||||
[FieldOffset(184)] public int BitmapLeft;
|
||||
[FieldOffset(188)] public int BitmapTop;
|
||||
[FieldOffset(192)] public FTOutline Outline;
|
||||
[FieldOffset(232)] public uint NumberOfSubGlyphs;
|
||||
[FieldOffset(240)] public IntPtr SubGlyphs;
|
||||
[FieldOffset(248)] public IntPtr ControlData;
|
||||
[FieldOffset(256)] public long ControlLength;
|
||||
[FieldOffset(264)] public long LsbDelta;
|
||||
[FieldOffset(272)] public long RsbDelta;
|
||||
[FieldOffset(280)] public IntPtr Other;
|
||||
[FieldOffset(288)] public IntPtr Internal;
|
||||
}
|
||||
|
||||
public unsafe struct FTGlyphSlot
|
||||
|
||||
33
build_native.sh
Normal file → Executable file
33
build_native.sh
Normal file → Executable file
@@ -1,8 +1,33 @@
|
||||
#!/bin/bash
|
||||
cd $(dirname "$0")
|
||||
|
||||
# Apply the patch file that makes it easier to build freetype.
|
||||
# Note that this doesn't work all that well on windows.
|
||||
cat ../lib/freetype_patch.diff | git -C ../lib/freetype apply
|
||||
export CMAKE_DIR="$PWD/docker-cross-compiler/cmake"
|
||||
export NOINSTALL=1
|
||||
export REFUEL_ADDITIONAL_CMAKE="-D BUILD_SHARED_LIBS=true -D NO_SONAME=true"
|
||||
|
||||
QUIK_ADDITIONAL_CMAKE=-DBUILD_SHARED_LIBS\=true DST=$PWD ../sh/quik_build_native.sh ../lib/freetype
|
||||
# Clang Builds
|
||||
./docker-cross-compiler/sh/build_native.sh "$PWD/freetype" "osx-arm64 osx-x64"
|
||||
|
||||
# GCC Builds
|
||||
export REFUEL_ADDITIONAL_CMAKE="$REFUEL_ADDITIONAL_CMAKE -D COMPILE_OPTIONS=\"-static-libgcc;-static-libstdc++;-fno-exceptions\""
|
||||
./docker-cross-compiler/sh/build_native.sh "$PWD/freetype" "linux-arm linux-arm64 linux-x64 win-x64 win-x86"
|
||||
|
||||
# Copy out natives from their respective directories into runtimes
|
||||
mkdir -p \
|
||||
./runtimes/linux-arm/native \
|
||||
./runtimes/linux-arm64/native \
|
||||
./runtimes/linux-x64/native \
|
||||
./runtimes/win-x64/native \
|
||||
./runtimes/win-x86/native \
|
||||
./runtimes/osx-arm64 \
|
||||
./runtimes/osx-x64
|
||||
|
||||
cp ./out/linux-arm/libfreetype.so runtimes/linux-arm/native/libfreetype.so
|
||||
cp ./out/linux-arm64/libfreetype.so runtimes/linux-arm64/native/libfreetype.so
|
||||
cp ./out/linux-x64/libfreetype.so runtimes/linux-x64/native/libfreetype.so
|
||||
cp ./out/win-x64/libfreetype.dll runtimes/win-x64/native/libfreetype.dll
|
||||
cp ./out/win-x86/libfreetype.dll runtimes/win-x86/native/libfreetype.dll
|
||||
cp ./out/osx-arm64/libfreetype.dylib runtimes/osx-arm64/native/libfreetype.dylib
|
||||
cp ./out/osx-x64/libfreetype.dylib runtimes/osx-x64/native/libfreetype.dylib
|
||||
|
||||
dotnet build
|
||||
|
||||
1
docker-cross-compiler
Submodule
1
docker-cross-compiler
Submodule
Submodule docker-cross-compiler added at 518969e2c9
1
freetype
Submodule
1
freetype
Submodule
Submodule freetype added at b7c943c523
27
publish.sh
Executable file
27
publish.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd $(dirname "$0")
|
||||
|
||||
if [ -z "$REFUEL_API_KEY" ]
|
||||
then
|
||||
echo "Please define REFUEL_API_KEY"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$NUGET_USER_NAME" ]
|
||||
then
|
||||
echo "Please define NUGET_USER_NAME"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$NUGET_INDEX" ]
|
||||
then
|
||||
echo "Please define NUGET_INDEX"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dotnet nuget add source \
|
||||
-n ReFuel -u "$NUGET_USER_NAME" -p "$REFUEL_API_KEY" \
|
||||
--store-password-in-clear-text \
|
||||
"$NUGET_INDEX"
|
||||
dotnet nuget push -s ReFuel bin/*/*.nupkg
|
||||
Reference in New Issue
Block a user