This repository has been archived on 2023-07-11. You can view files and clone it, but cannot push or open issues or pull requests.
gwen-dotnet/Gwen/Font.cs

99 lines
2.8 KiB
C#
Raw Normal View History

using System;
namespace Gwen
{
/// <summary>
/// Represents font resource.
/// </summary>
public class Font : IDisposable
{
/// <summary>
/// Font face name. Exact meaning depends on renderer.
/// </summary>
public String FaceName { get; set; }
/// <summary>
/// Font size.
/// </summary>
public int Size { get; set; }
/// <summary>
/// Enables or disables font smoothing (default: disabled).
/// </summary>
public bool Smooth { get; set; }
//public bool Bold { get; set; }
//public bool DropShadow { get; set; }
/// <summary>
/// This should be set by the renderer if it tries to use a font where it's null.
/// </summary>
public object RendererData { get; set; }
/// <summary>
/// This is the real font size, after it's been scaled by Renderer.Scale()
/// </summary>
public float RealSize { get; set; }
private readonly Renderer.Base m_Renderer;
/// <summary>
/// Initializes a new instance of the <see cref="Font"/> class.
/// </summary>
public Font(Renderer.Base renderer)
: this(renderer, "Arial", 10)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="Font"/> class.
/// </summary>
/// <param name="renderer">Renderer to use.</param>
/// <param name="faceName">Face name.</param>
/// <param name="size">Font size.</param>
public Font(Renderer.Base renderer, String faceName, int size = 10)
{
m_Renderer = renderer;
FaceName = faceName;
Size = size;
Smooth = false;
//Bold = false;
//DropShadow = false;
}
/// <summary>
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
/// </summary>
public void Dispose()
{
m_Renderer.FreeFont(this);
GC.SuppressFinalize(this);
}
#if DEBUG
~Font()
{
throw new InvalidOperationException(String.Format("IDisposable object finalized: {0}", GetType()));
//Debug.Print(String.Format("IDisposable object finalized: {0}", GetType()));
}
#endif
/// <summary>
/// Duplicates font data (except renderer data which must be reinitialized).
/// </summary>
/// <returns></returns>
public Font Copy()
{
Font f = new Font(m_Renderer, FaceName);
f.Size = Size;
f.RealSize = RealSize;
f.RendererData = null; // must be reinitialized
//f.Bold = Bold;
//f.DropShadow = DropShadow;
return f;
}
}
}