diff options
Diffstat (limited to 'utils/xbox/FontMaker/glyphs.h')
| -rw-r--r-- | utils/xbox/FontMaker/glyphs.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/utils/xbox/FontMaker/glyphs.h b/utils/xbox/FontMaker/glyphs.h new file mode 100644 index 0000000..7aaa117 --- /dev/null +++ b/utils/xbox/FontMaker/glyphs.h @@ -0,0 +1,104 @@ +//----------------------------------------------------------------------------- +// Name: Glyphs.cpp +// +// Desc: Functions and global variables for keeping track of font glyphs +// +// Hist: 09.06.02 - Revised Fontmaker sample +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//----------------------------------------------------------------------------- +#ifndef GLYPHS_H +#define GLYPHS_H + +//----------------------------------------------------------------------------- +// Name: struct GLYPH_ATTR +// Desc: A structure to hold attributes for one glpyh. The left, right, etc. +// values are texture coordinate offsets into the resulting texture image +// (which ends up in the .tga file). The offset, width, etc. values are +// spacing information, used when rendering the font. +//----------------------------------------------------------------------------- +struct FILE_GLYPH_ATTR +{ + FLOAT fLeft, fTop, fRight, fBottom; +}; + +struct GLYPH_ATTR : public FILE_GLYPH_ATTR +{ + int a, b, c; + int x, y, w, h; +}; + + + + +//----------------------------------------------------------------------------- +// Name: class CTextureFont +// Desc: A class to hold all information about a texture-based font +//----------------------------------------------------------------------------- +class CTextureFont +{ +public: + // current ttf font + LOGFONT m_LogFont; + HFONT m_hFont; + + BOOL m_bAntialiasEffect; + BOOL m_bShadowEffect; + BOOL m_bOutlineEffect; + int m_nBlur; + int m_nScanlines; + + // Glyph info + BYTE* m_ValidGlyphs; + WCHAR m_cMaxGlyph; + WORD* m_TranslatorTable; + BOOL m_bIncludeNullCharacter; + DWORD m_dwNumGlyphs; + GLYPH_ATTR* m_pGlyphs; + + // Texture info + DWORD m_dwTextureWidth; + DWORD m_dwTextureHeight; + DWORD* m_pBits; + + CHAR m_strFontName[MAX_PATH]; + + // current custom font + const char *m_pCustomFilename; + unsigned char m_customGlyphs[256]; + char *m_pCustomGlyphFiles[256]; + int m_maxCustomCharHeight; + +public: + HRESULT DeleteGlyph( WORD wGlyph ); + HRESULT InsertGlyph( WORD wGlyph ); + HRESULT ExtractValidGlyphsFromRange( WORD wStartGlyph, WORD wEndGlyph ); + HRESULT ExtractValidGlyphsFromFile( const CHAR* strFileName ); + HRESULT BuildTranslatorTable(); + HRESULT CalculateAndRenderGlyphs(); + HRESULT ReadCustomFontFile( CHAR* strFileName ); + HRESULT ReadFontInfoFile( CHAR* strFileName ); + HRESULT WriteFontInfoFile( CHAR* strFileName ); + HRESULT WriteFontImageFile( CHAR* strFileName, bool bAdditiveMode, bool bCustomFont ); + + VOID ClearFont(); + VOID DestroyObjects(); + + CTextureFont(); + ~CTextureFont(); + +private: + GLYPH_ATTR* RenderCustomGlyphs( HBITMAP hBitmap ); + + GLYPH_ATTR* RenderTTFGlyphs( HFONT hFont, HBITMAP hBitmap, + DWORD dwTextureWidth, DWORD dwTextureHeight, + BOOL bOutlineEffect, BOOL bShadowEffect, + int nScanlineEffect, int nBlurEffect, + BOOL bAntialias, + BYTE* ValidGlyphs, DWORD dwNumGlyphs ); +}; + + + + +#endif // GLYPHS_H |