Files @ r10673:d53513e30781
Branch filter:

Location: cpp/openttd-patchpack/source/src/fontcache.h

translators
(svn r14977) -Update: WebTranslator2 update to 2009-01-10 18:44:17
arabic_egypt - 4 fixed by khaloofah (4)
brazilian_portuguese - 26 fixed by tucalipe (26)
bulgarian - 3 fixed by Ar4i (3)
catalan - 3 fixed by arnaullv (3)
croatian - 35 fixed by tifached (35)
czech - 52 fixed, 10 changed by Hadez (62)
danish - 4 fixed by ThomasA (4)
dutch - 6 fixed by Excel20 (4), habell (2)
finnish - 15 fixed by UltimateSephiroth (15)
french - 15 fixed by glx (15)
hungarian - 6 fixed by alyr (6)
indonesian - 6 fixed, 64 changed by fanioz (70)
italian - 3 fixed, 1 changed by lorenzodv (4)
portuguese - 6 fixed by rmrebelo (6)
romanian - 6 fixed by kkmic (6)
/* $Id$ */

/** @file fontcache.h Functions to read fonts from files and cache them. */

#ifndef FONTCACHE_H
#define FONTCACHE_H

#include "gfx_type.h"

/** Get the SpriteID mapped to the given font size and key */
SpriteID GetUnicodeGlyph(FontSize size, uint32 key);

/** Map a SpriteID to the font size and key */
void SetUnicodeGlyph(FontSize size, uint32 key, SpriteID sprite);

/** Initialize the glyph map */
void InitializeUnicodeGlyphMap();

#ifdef WITH_FREETYPE

struct FreeTypeSettings {
	char small_font[MAX_PATH];
	char medium_font[MAX_PATH];
	char large_font[MAX_PATH];
	uint small_size;
	uint medium_size;
	uint large_size;
	bool small_aa;
	bool medium_aa;
	bool large_aa;
};

extern FreeTypeSettings _freetype;

void InitFreeType();
void UninitFreeType();
const struct Sprite *GetGlyph(FontSize size, uint32 key);
uint GetGlyphWidth(FontSize size, uint32 key);

/**
 * We would like to have a fallback font as the current one
 * doesn't contain all characters we need.
 * This function must set all fonts of settings.
 * @param settings the settings to overwrite the fontname of.
 * @param language_isocode the language, e.g. en_GB.
 * @param winlangid the language ID windows style.
 * @return true if a font has been set, false otherwise.
 */
bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, int winlangid);

#else

/* Stub for initializiation */
static inline void InitFreeType() {}
static inline void UninitFreeType() {}

/** Get the Sprite for a glyph */
static inline const Sprite *GetGlyph(FontSize size, uint32 key)
{
	SpriteID sprite = GetUnicodeGlyph(size, key);
	if (sprite == 0) sprite = GetUnicodeGlyph(size, '?');
	return GetSprite(sprite, ST_FONT);
}


/** Get the width of a glyph */
static inline uint GetGlyphWidth(FontSize size, uint32 key)
{
	SpriteID sprite = GetUnicodeGlyph(size, key);
	if (sprite == 0) sprite = GetUnicodeGlyph(size, '?');
	return SpriteExists(sprite) ? GetSprite(sprite, ST_FONT)->width + (size != FS_NORMAL) : 0;
}

#endif /* WITH_FREETYPE */

#endif /* FONTCACHE_H */