105 lines
3.1 KiB
C++
105 lines
3.1 KiB
C++
//-----------------------------------------------------------------------------
|
|
// 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
|