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; } } }