forked from MoonsideGames/MoonWorks
Font rendering update
parent
b49dc3720a
commit
65568ea234
|
@ -1 +1 @@
|
|||
Subproject commit 38a0d66e78f592dad4f6e0030aa1c7aceafc6b04
|
||||
Subproject commit 8852da6765c035e8c60a1987a644979bc617cdc3
|
|
@ -0,0 +1,17 @@
|
|||
namespace MoonWorks.Graphics.Font
|
||||
{
|
||||
public enum HorizontalAlignment
|
||||
{
|
||||
Left,
|
||||
Center,
|
||||
Right
|
||||
}
|
||||
|
||||
public enum VerticalAlignment
|
||||
{
|
||||
Baseline,
|
||||
Top,
|
||||
Middle,
|
||||
Bottom
|
||||
}
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using WellspringCS;
|
||||
|
||||
namespace MoonWorks.Graphics.Font
|
||||
{
|
||||
public class Font : IDisposable
|
||||
{
|
||||
public IntPtr Handle { get; }
|
||||
|
||||
private bool IsDisposed;
|
||||
|
||||
public unsafe Font(string path)
|
||||
{
|
||||
var bytes = File.ReadAllBytes(path);
|
||||
fixed (byte* pByte = &bytes[0])
|
||||
{
|
||||
Handle = Wellspring.Wellspring_CreateFont((IntPtr) pByte, (uint) bytes.Length);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void Dispose(bool disposing)
|
||||
{
|
||||
if (!IsDisposed)
|
||||
{
|
||||
Wellspring.Wellspring_DestroyFont(Handle);
|
||||
IsDisposed = true;
|
||||
}
|
||||
}
|
||||
|
||||
~Font()
|
||||
{
|
||||
// Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
|
||||
Dispose(disposing: false);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
// Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
|
||||
Dispose(disposing: true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -10,16 +10,14 @@ namespace MoonWorks.Graphics.Font
|
|||
public IntPtr Handle { get; }
|
||||
public Texture Texture { get; }
|
||||
|
||||
public Font Font { get; }
|
||||
|
||||
private bool IsDisposed;
|
||||
|
||||
public unsafe Packer(GraphicsDevice graphicsDevice, string path, uint textureWidth, uint textureHeight, uint padding = 1)
|
||||
public unsafe Packer(GraphicsDevice graphicsDevice, Font font, float fontSize, uint textureWidth, uint textureHeight, uint padding = 1)
|
||||
{
|
||||
var bytes = File.ReadAllBytes(path);
|
||||
fixed (byte* pByte = &bytes[0])
|
||||
{
|
||||
Handle = Wellspring.Wellspring_CreatePacker((IntPtr) pByte, (uint) bytes.Length, textureWidth, textureHeight, 0, padding);
|
||||
}
|
||||
|
||||
Font = font;
|
||||
Handle = Wellspring.Wellspring_CreatePacker(Font.Handle, fontSize, textureWidth, textureHeight, 0, padding);
|
||||
Texture = Texture.CreateTexture2D(graphicsDevice, textureWidth, textureHeight, TextureFormat.R8, TextureUsageFlags.Sampler);
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,6 @@ namespace MoonWorks.Graphics.Font
|
|||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct FontRange
|
||||
{
|
||||
public uint FontSize;
|
||||
public uint FirstCodepoint;
|
||||
public uint NumChars;
|
||||
public byte OversampleH;
|
||||
|
|
|
@ -26,8 +26,15 @@ namespace MoonWorks.Graphics.Font
|
|||
PrimitiveCount = 0;
|
||||
}
|
||||
|
||||
public unsafe void Draw(float x, float y, float depth, Color color, string text)
|
||||
{
|
||||
public unsafe void Draw(
|
||||
string text,
|
||||
float x,
|
||||
float y,
|
||||
float depth,
|
||||
Color color,
|
||||
HorizontalAlignment horizontalAlignment = HorizontalAlignment.Left,
|
||||
VerticalAlignment verticalAlignment = VerticalAlignment.Baseline
|
||||
) {
|
||||
fixed (char* chars = text)
|
||||
{
|
||||
var byteCount = System.Text.Encoding.UTF8.GetByteCount(text);
|
||||
|
@ -40,6 +47,8 @@ namespace MoonWorks.Graphics.Font
|
|||
y,
|
||||
depth,
|
||||
new Wellspring.Color { R = color.R, G = color.G, B = color.B, A = color.A },
|
||||
(Wellspring.HorizontalAlignment) horizontalAlignment,
|
||||
(Wellspring.VerticalAlignment) verticalAlignment,
|
||||
(IntPtr) bytes,
|
||||
(uint) byteCount
|
||||
);
|
||||
|
|
Loading…
Reference in New Issue