initial
This commit is contained in:
90
materialsystem/shaderapidx9/ctlfont.h
Normal file
90
materialsystem/shaderapidx9/ctlfont.h
Normal file
@@ -0,0 +1,90 @@
|
||||
// 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
|
||||
Reference in New Issue
Block a user