Counter Strike : Global Offensive Source Code
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.
|
|
// Copyright Electonic Arts(C) 2006 - All Rights Reserved
#ifndef TLFONT_H
#define TLFONT_H
#include "../materialsystem/ifont.h"
// Forward declerations
class IFileSystem; class CTLFont; namespace TLFont { class FusionRasterizer; } namespace TLFontAux { class FontAuxTexture; }
// Cache TTF font file
#define MAX_FONTDATACACHE 20
struct sFontDataCache { char m_dataName[256]; unsigned char * m_dataMem; unsigned int m_dataSize; int m_refCount; };
// Font manager
class CTLFontManager { public:
CTLFontManager(IFileSystem *pFileSystem); ~CTLFontManager();
CTLFont* CreateFont(const char *pName, const char *pFontPath, int tall, int weight); void DestroyFont(CTLFont *pFont);
private:
unsigned char* LoadFontFile(const char *pFontPath, unsigned int *pDataSize);
IFileSystem *m_pFileSystem;
sFontDataCache m_fontDataCache[MAX_FONTDATACACHE]; };
// Font instance
class CTLFont : public IFont { public:
CTLFont(const char *pName, unsigned char *pData, unsigned int dataSize, int tall, int weight); ~CTLFont();
virtual void RenderToBuffer(int ch, int offsetx, int width, int height, unsigned char *pBuffer); virtual bool GetCharABCWidth(int ch, int &a, int &b, int &c); virtual int GetMaxHeight(); virtual int GetMaxWidth(); virtual int GetAscent(); virtual void* GetData(size_t * pSizeOut=NULL); virtual const char * GetName();
private:
// Convert a logical size to a point size
static float LSToPoint(float ls);
static const int MAX_NAME = 128; char m_name[MAX_NAME];
int m_tall; int m_weight; float m_pointSize;
// TLFont variables
TLFont::FusionRasterizer *m_pRasterizer;
// The TTF file
unsigned char *m_pData; unsigned int m_dataSize;
// Required for our Marlett hack
wchar_t m_charOffset; };
#endif
|