67 lines
2.2 KiB
C#
67 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using Quik.Media.Font;
|
|
|
|
namespace Quik.PAL
|
|
{
|
|
/// <summary>
|
|
/// Flags that effect font search criterea.
|
|
/// </summary>
|
|
[Flags]
|
|
public enum FontMatchCriteria
|
|
{
|
|
None = 0,
|
|
Family = 1 << 0,
|
|
Slant = 1 << 1,
|
|
Weight = 1 << 2,
|
|
Stretch = 1 << 3,
|
|
All = Family | Slant | Weight | Stretch,
|
|
}
|
|
|
|
/// <summary>
|
|
/// An abstraction over the system font database.
|
|
/// </summary>
|
|
public interface IFontDataBase
|
|
{
|
|
/// <summary>
|
|
/// All the fonts installed in the system.
|
|
/// </summary>
|
|
IEnumerable<FontFace> All { get; }
|
|
|
|
public FontFace Serif => GetSystemFontFace(SystemFontFamily.Serif);
|
|
public FontFace Sans => GetSystemFontFace(SystemFontFamily.Sans);
|
|
public FontFace Monospace => GetSystemFontFace(SystemFontFamily.Monospace);
|
|
public FontFace Cursive => GetSystemFontFace(SystemFontFamily.Cursive);
|
|
public FontFace Fantasy => GetSystemFontFace(SystemFontFamily.Fantasy);
|
|
|
|
/// <summary>
|
|
/// Search for the given font face.
|
|
/// </summary>
|
|
/// <param name="prototype">The font face prototype.</param>
|
|
/// <param name="criteria">The match criteria</param>
|
|
/// <returns>A list of fonts sorted by the closest match first.</returns>
|
|
IEnumerable<FontFace> Search(FontFace prototype, FontMatchCriteria criteria = FontMatchCriteria.All);
|
|
|
|
/// <summary>
|
|
/// Get the font face file info if it exists.
|
|
/// </summary>
|
|
/// <param name="face">The face to look for.</param>
|
|
/// <returns>The file info if it exists.</returns>
|
|
FileInfo FontFileInfo(FontFace face);
|
|
|
|
/// <summary>
|
|
/// Open a font face.
|
|
/// </summary>
|
|
/// <param name="face">The font face to open.</param>
|
|
/// <returns>The stream to the font face.</returns>
|
|
Stream Open(FontFace face);
|
|
|
|
/// <summary>
|
|
/// Get a system font family.
|
|
/// </summary>
|
|
/// <param name="family">The family type to look up.</param>
|
|
/// <returns>The name of a font in this family.</returns>
|
|
FontFace GetSystemFontFace(SystemFontFamily family);
|
|
}
|
|
} |