SDL_ttf++
C++wrapperfortheSDL_ttflibrary.

ttf/FontManager.h

Go to the documentation of this file.
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 
 All Classes Namespaces Files Functions Enumerations Enumerator