75 lines
2.8 KiB
C++
75 lines
2.8 KiB
C++
#pragma once
|
|
|
|
struct SFontData;
|
|
class CFontData;
|
|
|
|
#define VERBOSE_FONT_OUTPUT 0
|
|
|
|
// const int BITMAP_FONT_LANGUAGES = XC_LANGUAGE_ENGLISH
|
|
// | XC_LANGUAGE_GERMAN
|
|
// | XC_LANGUAGE_FRENCH
|
|
// | XC_LANGUAGE_SPANISH
|
|
// | XC_LANGUAGE_ITALIAN
|
|
// | XC_LANGUAGE_PORTUGUESE
|
|
// | XC_LANGUAGE_BRAZILIAN;
|
|
|
|
using namespace std;
|
|
|
|
class UIAbstractBitmapFont
|
|
{
|
|
protected:
|
|
string m_fontname;
|
|
|
|
IggyBitmapFontProvider *m_bitmapFontProvider;
|
|
|
|
bool m_registered;
|
|
|
|
unsigned int m_numGlyphs;
|
|
|
|
public:
|
|
UIAbstractBitmapFont(const string &fontname);
|
|
~UIAbstractBitmapFont();
|
|
|
|
void registerFont();
|
|
|
|
// Virtual Functions.
|
|
virtual IggyFontMetrics *GetFontMetrics(IggyFontMetrics *metrics) = 0;
|
|
virtual S32 GetCodepointGlyph(U32 codepoint) = 0;
|
|
virtual IggyGlyphMetrics *GetGlyphMetrics(S32 glyph, IggyGlyphMetrics *metrics) = 0;
|
|
virtual rrbool IsGlyphEmpty(S32 glyph) = 0;
|
|
virtual F32 GetKerningForGlyphPair(S32 first_glyph, S32 second_glyph) = 0;
|
|
virtual rrbool CanProvideBitmap(S32 glyph, F32 pixel_scale) = 0;
|
|
virtual rrbool GetGlyphBitmap(S32 glyph, F32 pixel_scale, IggyBitmapCharacter *bitmap) = 0;
|
|
virtual void FreeGlyphBitmap(S32 glyph, F32 pixel_scale, IggyBitmapCharacter *bitmap) = 0;
|
|
|
|
// Static Callbacks
|
|
// Just wrappers for the virtual functions.
|
|
static IggyFontMetrics * RADLINK GetFontMetrics_Callback(void *user_context, IggyFontMetrics *metrics);
|
|
static S32 RADLINK GetCodepointGlyph_Callback(void *user_context, U32 codepoint);
|
|
static IggyGlyphMetrics * RADLINK GetGlyphMetrics_Callback(void *user_context, S32 glyph, IggyGlyphMetrics *metrics);
|
|
static rrbool RADLINK IsGlyphEmpty_Callback(void *user_context, S32 glyph);
|
|
static F32 RADLINK GetKerningForGlyphPair_Callback(void *user_context, S32 first_glyph, S32 second_glyph);
|
|
static rrbool RADLINK CanProvideBitmap_Callback(void *user_context, S32 glyph, F32 pixel_scale);
|
|
static rrbool RADLINK GetGlyphBitmap_Callback(void *user_context, S32 glyph, F32 pixel_scale, IggyBitmapCharacter *bitmap);
|
|
static void RADLINK FreeGlyphBitmap_Callback(void *user_context, S32 glyph, F32 pixel_scale, IggyBitmapCharacter *bitmap);
|
|
};
|
|
|
|
class UIBitmapFont : public UIAbstractBitmapFont
|
|
{
|
|
protected:
|
|
CFontData *m_cFontData;
|
|
|
|
public:
|
|
UIBitmapFont(SFontData &sfontdata);
|
|
|
|
~UIBitmapFont();
|
|
|
|
virtual IggyFontMetrics * GetFontMetrics(IggyFontMetrics *metrics);
|
|
virtual S32 GetCodepointGlyph(U32 codepoint);
|
|
virtual IggyGlyphMetrics * GetGlyphMetrics(S32 glyph, IggyGlyphMetrics *metrics);
|
|
virtual rrbool IsGlyphEmpty(S32 glyph);
|
|
virtual F32 GetKerningForGlyphPair(S32 first_glyph, S32 second_glyph);
|
|
virtual rrbool CanProvideBitmap(S32 glyph, F32 pixel_scale);
|
|
virtual rrbool GetGlyphBitmap(S32 glyph, F32 pixel_scale, IggyBitmapCharacter *bitmap);
|
|
virtual void FreeGlyphBitmap(S32 glyph, F32 pixel_scale, IggyBitmapCharacter *bitmap);
|
|
}; |