You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
3.8 KiB
115 lines
3.8 KiB
using UnityEngine; |
|
using UnityEditor; |
|
using System.Collections; |
|
using System; |
|
using System.Runtime.InteropServices; |
|
|
|
|
|
namespace TMPro.EditorUtilities |
|
{ |
|
/* |
|
public class TMPro_FontPlugin |
|
{ |
|
[UnmanagedFunctionPointer(CallingConvention.StdCall)] |
|
private delegate void DebugLog(string log); |
|
private static readonly DebugLog debugLog = DebugWrapper; |
|
private static readonly IntPtr functionPointer = Marshal.GetFunctionPointerForDelegate(debugLog); |
|
|
|
private static void DebugWrapper(string log) |
|
{ |
|
Debug.Log(log); |
|
} |
|
|
|
public static void LinkDebugLog() |
|
{ |
|
LinkDebug(functionPointer); |
|
} |
|
|
|
[DllImport("TMPro_Plugin")] |
|
private static extern void LinkDebug([MarshalAs(UnmanagedType.FunctionPtr)]IntPtr debugCall); |
|
|
|
[DllImport("TMPro_Plugin")] |
|
public static extern |
|
int Initialize_FontEngine(); |
|
|
|
[DllImport("TMPro_Plugin")] |
|
public static extern |
|
int Destroy_FontEngine(); |
|
|
|
[DllImport("TMPro_Plugin")] |
|
public static extern |
|
int Load_TrueType_Font(string fontPath); |
|
|
|
[DllImport("TMPro_Plugin")] |
|
public static extern |
|
int FT_Size_Font(int fontSize); |
|
|
|
[DllImport("TMPro_Plugin")] |
|
public static extern |
|
int Render_Character(byte[] buffer_fill, byte[] buffer_edge, int buffer_width, int buffer_height, int offset, int asc, FaceStyles style, float thickness, RenderModes rasterMode, ref FT_GlyphInfo glyphInfo); |
|
|
|
[DllImport("TMPro_Plugin")] |
|
public static extern |
|
int Render_Characters(byte[] buffer, int buffer_width, int buffer_height, int character_padding, int[] asc_set, int char_count, FaceStyles style, float style_mod, bool autoSize, RenderModes renderMode, int method, ref FT_FaceInfo fontData, FT_GlyphInfo[] Output); |
|
|
|
[DllImport("TMPro_Plugin")] |
|
public static extern |
|
int FT_GetKerningPairs(string fontPath, int[] characterSet, int setCount, FT_KerningPair[] kerningPairs); |
|
|
|
[DllImport("TMPro_Plugin")] |
|
public static extern |
|
float Check_RenderProgress(); |
|
|
|
[DllImport("TMPro_Plugin")] |
|
internal static extern |
|
void SendCancellationRequest(CancellationRequestType request); |
|
} |
|
|
|
public enum FaceStyles { Normal, Bold, Italic, Bold_Italic, Outline, Bold_Sim }; |
|
public enum RenderModes { HintedSmooth = 0, Smooth = 1, RasterHinted = 2, Raster = 3, DistanceField16 = 6, DistanceField32 = 7 }; // SignedDistanceField64 = 8 |
|
|
|
internal enum CancellationRequestType : byte { None = 0x0, CancelInProgess = 0x1, WindowClosed = 0x2 }; |
|
|
|
[StructLayout(LayoutKind.Sequential)] |
|
public struct FT_KerningPair |
|
{ |
|
public int ascII_Left; |
|
public int ascII_Right; |
|
public float xAdvanceOffset; |
|
} |
|
|
|
|
|
[StructLayout(LayoutKind.Sequential)] |
|
public struct FT_GlyphInfo |
|
{ |
|
public int id; |
|
public float x; |
|
public float y; |
|
public float width; |
|
public float height; |
|
public float xOffset; |
|
public float yOffset; |
|
public float xAdvance; |
|
} |
|
|
|
|
|
[StructLayout(LayoutKind.Sequential)] |
|
public struct FT_FaceInfo |
|
{ |
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] |
|
public string name; |
|
public int pointSize; |
|
public int padding; |
|
public float lineHeight; |
|
public float baseline; |
|
public float ascender; |
|
public float descender; |
|
public float centerLine; |
|
public float underline; |
|
public float underlineThickness; |
|
public int characterCount; |
|
public int atlasWidth; |
|
public int atlasHeight; |
|
} |
|
*/ |
|
}
|
|
|