/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
///////////////////////////////////////////////////////////////////////////////
// //
// plWinFontCache Class Header //
// I've stopped keeping track, there are far too many reasons already to //
// hate Microsoft. Anyway, this class keeps track of various Win32 fonts we //
// allocate because Win98/ME seems to have problems re-allocating the exact //
// same freaking goddamn font over and over again. I mean, you'd think //
// there'd be a rule somewhere about deterministic behavior when calling //
// the exact same function with the exact same parameters over and over... //
// Oh, wait... //
// //
// Cyan, Inc. //
// //
//// Version History //////////////////////////////////////////////////////////
// //
// 11.25.2002 mcn - Created. //
// //
///////////////////////////////////////////////////////////////////////////////
#ifndef _plWinFontCache_h
#define _plWinFontCache_h
#include "hsColorRGBA.h"
#include "hsWindows.h" // EVIL
#include "hsTemplates.h"
#if HS_BUILD_FOR_WIN32
//// Class Definition /////////////////////////////////////////////////////////
class plWinFontCache
{
protected:
class plFontRecord
{
public:
HFONT fFont;
char *fFace; // Pointer is owned by fFontNameCache
int fHeight;
int fWeight;
hsBool fItalic;
UInt32 fQuality;
};
class plCustFont
{
public:
char *fFilename;
plCustFont( const char *c ) { fFilename = hsStrcpy( c ); }
~plCustFont() { delete [] fFilename; }
};
hsBool fInShutdown;
hsTArray fFontCache;
hsTArray fFontNameCache;
char *fCustFontDir;
hsTArray fCustFonts;
plWinFontCache();
HFONT IFindFont( const char *face, int height, int weight, hsBool italic, UInt32 quality );
HFONT IMakeFont( const char *face, int height, int weight, hsBool italic, UInt32 quality );
void ILoadCustomFonts( void );
public:
virtual ~plWinFontCache();
static plWinFontCache &GetInstance( void );
HFONT GetMeAFont( const char *face, int height, int weight, hsBool italic, UInt32 quality );
void FreeFont( HFONT font );
void Clear( void );
void LoadCustomFonts( const char *dir );
// Our custom font extension
static char *kCustFontExtension;
};
#endif // HS_BUILD_FOR_WIN32
#endif // _plWinFontCache_h