|
|
//========= Copyright � 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef GAMEUISYSTEMSURFACE_H
#define GAMEUISYSTEMSURFACE_H
#ifdef _WIN32
#pragma once
#endif
#include "igameuisystemmgr.h"
#include "materialsystem/imaterialsystem.h"
#include "vgui_surfacelib/ifontsurface.h"
#include "tier1/utldict.h"
#include "rendersystem/irenderdevice.h"
class CFontTextureCache; class KeyValues;
//-----------------------------------------------------------------------------
// This class is the interface to the font and font texture, systems.
// Load fonts given by schemes into the systems using this class.
//-----------------------------------------------------------------------------
class CGameUISystemSurface : public IGameUISystemSurface {
public:
CGameUISystemSurface(); ~CGameUISystemSurface();
InitReturnVal_t Init(); void Shutdown();
void PrecacheFontCharacters( FontHandle_t font, wchar_t *pCharacterString = NULL );
FontHandle_t CreateFont(); bool SetFontGlyphSet( FontHandle_t font, const char *windowsFontName, int tall, int weight, int blur, int scanlines, int flags, int nRangeMin = 0, int nRangeMax = 0 ); int GetFontTall( FontHandle_t font ); void GetCharABCwide( FontHandle_t font, int ch, int &a, int &b, int &c ); int GetCharacterWidth( FontHandle_t font, int ch ); const char *GetFontName( FontHandle_t font );
bool AddCustomFontFile( const char *fontFileName );
// Helper fxns for loading bitmap fonts
bool AddBitmapFontFile( const char *fontFileName ); void SetBitmapFontName( const char *pName, const char *pFontFilename ); const char *GetBitmapFontName( const char *pName ); bool SetBitmapFontGlyphSet( FontHandle_t font, const char *windowsFontName, float scalex, float scaley, int flags);
void ClearTemporaryFontCache( void );
// Causes fonts to get reloaded, etc.
void ResetFontCaches();
bool SupportsFontFeature( FontFeature_t feature );
void DrawSetTextureRGBA( int id, const unsigned char* rgba, int wide, int tall ){} void DrawSetTextureRGBAEx( int id, const unsigned char* rgba, int wide, int tall, ImageFormat format ){}
bool GetUnicodeCharRenderPositions( FontCharRenderInfo& info, Vector2D *pPositions ); IMaterial *GetTextureForChar( FontCharRenderInfo &info, float **texCoords ); IMaterial *GetTextureAndCoordsForChar( FontCharRenderInfo &info, float *texCoords );
// Used for debugging.
void DrawFontTexture( int textureId, int xPos, int yPos ); void DrawFontTexture( IRenderContext *pRenderContext, int textureId, int xPos, int yPos ); IMaterial *GetMaterial( int textureId ); HRenderTexture GetTextureHandle( int textureId );
void GetProportionalBase( int &width, int &height ) { width = BASE_WIDTH; height = BASE_HEIGHT; }
void SetLanguage( const char *pLanguage ); const char *GetLanguage();
private: enum { BASE_HEIGHT = 480, BASE_WIDTH = 640 }; bool m_bIsInitialized; CUtlVector< CUtlSymbol > m_CustomFontFileNames; CUtlVector< CUtlSymbol > m_BitmapFontFileNames; CUtlDict< int, int > m_BitmapFontFileMapping;
};
extern CGameUISystemSurface *g_pGameUISystemSurface;
#endif // GAMEUISYSTEMSURFACE_H
|