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.
 
 
 
 
 
 

90 lines
2.0 KiB

// 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