SDL_ttf++
C++wrapperfortheSDL_ttflibrary.
|
00001 00021 #ifndef SDL_TTF_FONTMANAGER_H 00022 #define SDL_TTF_FONTMANAGER_H 00023 00024 #include <map> 00025 #include <string> 00026 00027 #include "sdlpp_ttf/subsystem/TTF.h" 00028 #include "sdlpp_ttf/ttf/Font.h" 00029 00030 namespace sdl { 00031 namespace ttf { 00032 using namespace std; 00033 00038 struct FontManager { 00044 static FontManager& instance () { 00045 static FontManager instance_; 00046 return instance_; 00047 }; 00048 00049 //~FontManager (); 00050 00059 Font font (const string& fileName, int pointSize) { 00060 FontMap::iterator nameIter = fonts_.find (fileName); 00061 if (nameIter != fonts_.end ()) { 00062 FontSizeMap::iterator sizeIter = nameIter->second.find (pointSize); 00063 if (sizeIter != nameIter->second.end ()) { 00064 return sizeIter->second; 00065 } else { 00066 Font font (fileName, pointSize); 00067 nameIter->second.insert (make_pair (pointSize, font)); 00068 return font; 00069 } 00070 } else { 00071 Font font (fileName, pointSize); 00072 FontSizeMap sizeMap; 00073 sizeMap.insert (make_pair (pointSize, font)); 00074 fonts_.insert (make_pair (fileName, sizeMap)); 00075 return font; 00076 } 00077 }; 00078 00079 private: 00083 FontManager() : fonts_ () { subsystem::TTF::instance (); }; 00084 00090 FontManager (const FontManager& rhs); 00091 00099 FontManager& operator= (const FontManager& rhs); 00100 00105 typedef map<int, Font> FontSizeMap; 00106 00111 typedef map<string, FontSizeMap> FontMap; 00112 00116 FontMap fonts_; 00117 }; //FontManager 00118 }; //ttf 00119 }; //sdl 00120 00121 #endif //SDL_TTF_FONTMANAGER_H 00122