Gered
10e057953e
Contains changes from "gwen-dotnet" removing dependancies on Windows, which ultimately means certain features (e.g. file load/save dialogs) do not work. Those classes still exist, but the code has been commented out.
99 lines
2.8 KiB
C#
99 lines
2.8 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|