using System;
using System.Collections.Generic;
using System.IO;
namespace Orvid.Graphics.FontSupport
{
///
/// The base class for adding support for different font formats.
///
public abstract class IFontProvider where F : Font
{
///
/// The name of the FontProvider.
///
public abstract string Name { get; }
///
/// Returns true if the given Font is a format
/// that this FontProvider supports.
///
/// Font to check.
/// True if supported.
public abstract bool SupportsFormat(Font f);
///
/// All fonts this FontProvider can provide.
///
public abstract List Fonts { get; }
///
/// Gets the TextRenderer that should be used to render this font.
///
/// The TextRenderer.
public abstract ITextRenderer GetTextRenderer(Font f);
///
/// Gets the FontMetrics for the specified font.
///
/// The Font to get the metrics for.
/// The FontMetrics.
public abstract FontMetrics GetFontMetrics(Font f);
///
/// Gets the specified font in a format supported by this provider.
///
/// Font to convert.
///
/// The converted Font, null if unable to convert.
///
/// True if conversion was successful.
public abstract bool GetCompatibleFont(Font fontIn, out Font fontOut);
///
/// Loads a Font from the specified Stream.
///
/// The Stream to load from.
/// The loaded font.
public abstract Font LoadFont(Stream s);
}
}