summaryrefslogtreecommitdiff
path: root/utils/xbox/FontMaker/glyphs.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/xbox/FontMaker/glyphs.h')
-rw-r--r--utils/xbox/FontMaker/glyphs.h104
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