/*==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