101 lines
3.2 KiB
C++
101 lines
3.2 KiB
C++
//========= 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
|