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