hl2_src-leak-2017/src/utils/xbox/FontMaker/glyphs.h

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