You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.1 KiB
104 lines
3.1 KiB
//----------------------------------------------------------------------------- |
|
// 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
|
|
|