using System;
namespace Gwen
{
///
/// Represents font resource.
///
public class Font : IDisposable
{
///
/// Font face name. Exact meaning depends on renderer.
///
public String FaceName { get; set; }
///
/// Font size.
///
public int Size { get; set; }
///
/// Enables or disables font smoothing (default: disabled).
///
public bool Smooth { get; set; }
//public bool Bold { get; set; }
//public bool DropShadow { get; set; }
///
/// This should be set by the renderer if it tries to use a font where it's null.
///
public object RendererData { get; set; }
///
/// This is the real font size, after it's been scaled by Renderer.Scale()
///
public float RealSize { get; set; }
private readonly Renderer.Base m_Renderer;
///
/// Initializes a new instance of the class.
///
public Font(Renderer.Base renderer)
: this(renderer, "Arial", 10)
{
}
///
/// Initializes a new instance of the class.
///
/// Renderer to use.
/// Face name.
/// Font size.
public Font(Renderer.Base renderer, String faceName, int size = 10)
{
m_Renderer = renderer;
FaceName = faceName;
Size = size;
Smooth = false;
//Bold = false;
//DropShadow = false;
}
///
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
///
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
///
/// Duplicates font data (except renderer data which must be reinitialized).
///
///
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;
}
}
}