using System.Drawing;
namespace Developpez.Dotnet.Drawing
{
///
/// Fournit des méthodes d'extension pour obtenir une police à partir d'une autre.
/// Les polices ainsi obtenues sont gérées par un , ce qui évite
/// de créer plusieurs fois les mêmes polices.
///
public static class FontExtensions
{
private static FontCache _cache;
static FontExtensions()
{
_cache = new FontCache();
}
///
/// Obtient une nouvelle police à partir d'une police existante, avec le style spécifié
///
/// Police de base
/// Style souhaité
/// Une police avec le style spécifié
public static Font SetStyle(this Font font, FontStyle style)
{
return _cache.GetFont(font, style);
}
///
/// Obtient une nouvelle police à partir d'une police existante, avec le style normal
///
/// Police de base
/// Une police avec le style normal
public static Font SetRegular(this Font font)
{
return _cache.GetFont(font, FontStyle.Regular);
}
///
/// Obtient une nouvelle police à partir d'une police existante, avec le style gras
///
/// Police de base
/// Une police avec le style gras
public static Font SetBold(this Font font)
{
return _cache.GetFont(font, FontStyle.Bold);
}
///
/// Obtient une nouvelle police à partir d'une police existante, avec le style italique
///
/// Police de base
/// Une police avec le style italique
public static Font SetItalic(this Font font)
{
return _cache.GetFont(font, FontStyle.Italic);
}
///
/// Obtient une nouvelle police à partir d'une police existante, avec le style souligné
///
/// Police de base
/// Une police avec le style souligné
public static Font SetUnderline(this Font font)
{
return _cache.GetFont(font, FontStyle.Underline);
}
///
/// Obtient une nouvelle police à partir d'une police existante, avec le style barré
///
/// Police de base
/// Une police avec le style barré
public static Font SetStrikeout(this Font font)
{
return _cache.GetFont(font, FontStyle.Strikeout);
}
///
/// Obtient une nouvelle police à partir d'une police existante, avec la taille spécifiée
///
/// Police de base
/// Taille en points de la police souhaitée
/// Une police avec la taille spécifiée
public static Font SetSize(this Font font, float emSize)
{
return _cache.GetFont(font.FontFamily, emSize, font.Style, font.Unit, font.GdiCharSet, font.GdiVerticalFont);
}
///
/// Obtient une nouvelle police à partir d'une police existante, avec la taille et l'unité spécifiées
///
/// Police de base
/// Taille de la police souhaitée, dans l'unité spécifiée
/// Unité de taille à utiliser
/// Une police avec la taille et l'unité spécifiées
public static Font SetSize(this Font font, float emSize, GraphicsUnit unit)
{
return _cache.GetFont(font.FontFamily, emSize, font.Style, unit, font.GdiCharSet, font.GdiVerticalFont);
}
///
/// Obtient une nouvelle police à partir d'une police existante, avec la famille spécifiée
///
/// Police de base
/// Famille de la police souhaitée
/// Une police avec la famille spécifiée
public static Font SetFontFamily(this Font font, FontFamily family)
{
return _cache.GetFont(family, font.Size, font.Style, font.Unit, font.GdiCharSet, font.GdiVerticalFont);
}
///
/// Obtient une nouvelle police à partir d'une police existante, avec la famille spécifiée
///
/// Police de base
/// Nom de la famille de la police souhaitée
/// Une police avec la famille spécifiée
public static Font SetFontFamily(this Font font, string familyName)
{
return _cache.GetFont(familyName, font.Size, font.Style, font.Unit, font.GdiCharSet, font.GdiVerticalFont);
}
}
}