peter1138@5108: /* $Id$ */ peter1138@5108: peter1138@5108: #ifndef FONTCACHE_H peter1138@5108: #define FONTCACHE_H peter1138@5108: peter1138@5108: /** Get the SpriteID mapped to the given font size and key */ peter1138@5108: SpriteID GetUnicodeGlyph(FontSize size, uint32 key); peter1138@5108: peter1138@5108: /** Map a SpriteID to the font size and key */ peter1138@5108: void SetUnicodeGlyph(FontSize size, uint32 key, SpriteID sprite); peter1138@5108: peter1138@5108: /** Initialize the glyph map */ peter1138@5108: void InitializeUnicodeGlyphMap(void); peter1138@5108: peter1138@5108: #ifdef WITH_FREETYPE peter1138@5108: peter1138@5108: typedef struct FreeTypeSettings { peter1138@5108: char small_font[260]; peter1138@5108: char medium_font[260]; peter1138@5108: char large_font[260]; peter1138@5108: uint small_size; peter1138@5108: uint medium_size; peter1138@5108: uint large_size; peter1138@5108: } FreeTypeSettings; peter1138@5108: peter1138@5108: extern FreeTypeSettings _freetype; peter1138@5108: peter1138@5108: void InitFreeType(void); peter1138@5108: const struct Sprite *GetGlyph(FontSize size, uint32 key); peter1138@5108: uint GetGlyphWidth(FontSize size, uint32 key); peter1138@5108: peter1138@5108: #else peter1138@5108: peter1138@5108: /* Stub for initializiation */ peter1138@5108: static inline void InitFreeType(void) {} peter1138@5108: peter1138@5108: /** Get the Sprite for a glyph */ peter1138@5108: static inline const Sprite *GetGlyph(FontSize size, uint32 key) peter1138@5108: { peter1138@5108: SpriteID sprite = GetUnicodeGlyph(size, key); peter1138@5108: if (sprite == 0) sprite = GetUnicodeGlyph(size, '?'); peter1138@5108: return GetSprite(sprite); peter1138@5108: } peter1138@5108: peter1138@5108: peter1138@5108: /** Get the width of a glyph */ peter1138@5108: static inline uint GetGlyphWidth(FontSize size, uint32 key) peter1138@5108: { peter1138@5108: SpriteID sprite = GetUnicodeGlyph(size, key); peter1138@5108: if (sprite == 0) sprite = GetUnicodeGlyph(size, '?'); peter1138@5108: return SpriteExists(sprite) ? GetSprite(sprite)->width + (size != FS_NORMAL) : 0; peter1138@5108: } peter1138@5108: peter1138@5108: #endif /* WITH_FREETYPE */ peter1138@5108: peter1138@5108: #endif /* FONTCACHE_H */