src/GUIFontManager.cpp

Go to the documentation of this file.
00001 #include "glwx.h"
00002 
00003 vector<GUIFont *> GUIFontManager::guiFontList;
00004 GUIFont *GUIFontManager::currentFont    = NULL;
00005 GUIFont *GUIFontManager::defaultFont    = NULL;
00006 
00007 int GUIFontManager::getCharacterWidth(char Char, GUIFont *font)
00008 {
00009   GUIFont *currentFont = getDefaultFont();
00010   if(!font)
00011   {
00012     if(currentFont)
00013       return  currentFont->getFontObject()->getCharHorizontalGlyphs()[Char];  
00014   }
00015   else
00016     return font->getFontObject()->getCharHorizontalGlyphs()[Char];
00017   return 0;
00018 }
00019 
00020 int GUIFontManager::getCharacterWidth(char Char, int fontIndex)
00021 {
00022   GUIFont *currentFont = getFont(fontIndex);
00023   currentFont          = currentFont ? currentFont : getDefaultFont();
00024   if(currentFont)
00025     return  currentFont->getFontObject()->getCharHorizontalGlyphs()[Char];  
00026 
00027   return 0;
00028 }
00029 
00030 void  GUIFontManager::setCurrentFont(size_t index)
00031 {
00032   setCurrentFont(getFont(index));
00033 }
00034 
00035 void GUIFontManager::setCurrentFont(GUIFont *currentFont_)
00036 {
00037   if(!currentFont_ && !(currentFont_ = defaultFont))
00038     return;
00039   
00040   if(!currentFont || currentFont->operator!=(*currentFont_))
00041   {
00042     currentFont = currentFont_;
00043   }
00044 }
00045 
00046 GUIFont *GUIFontManager::getCurrentFont()
00047 {
00048   return currentFont;
00049 }
00050 
00051 void GUIFontManager::setDefaultFont(size_t index)
00052 {
00053   setDefaultFont(getFont(index));
00054 }
00055 
00056 void GUIFontManager::setDefaultFont(GUIFont *defaultFont_)
00057 {
00058   defaultFont = defaultFont_;
00059 }
00060 
00061 GUIFont *GUIFontManager::getDefaultFont()
00062 {
00063   return defaultFont;
00064 }
00065 
00066 int GUIFontManager::findFontIndex(GUIFont *font)
00067 {
00068   if(!font)
00069     return -1;
00070 
00071   for(size_t i = 0; i < guiFontList.size(); i++)
00072     if(guiFontList[i]->operator ==(*font))
00073        return int(i);
00074 
00075   return -1;
00076 }
00077 
00078 GUIFont *GUIFontManager::getFont(size_t index)
00079 {
00080   return index >= guiFontList.size() ? NULL : guiFontList[index];
00081 }
00082 
00083 int GUIFontManager::addFont(const TiXmlElement *fontNode)
00084 {
00085   GUIFont *newFont  = new GUIFont();
00086   int      index    = -1;
00087 
00088   if(newFont->loadXMLSettings(fontNode))
00089   {
00090     index = findFontIndex(newFont);
00091     if(index >= 0)
00092     {
00093       deleteObject(newFont);
00094     }
00095     else
00096     {
00097         if(newFont->build())
00098         {
00099           addFont(newFont);
00100           index = int(guiFontList.size() - 1);
00101         }
00102                 else {
00103                         deleteObject(newFont);
00104                 }
00105     }
00106   }
00107   else {
00108     deleteObject(newFont);
00109   }
00110   return index; 
00111 }
00112 
00113 bool GUIFontManager::addFont(GUIFont *font)
00114 {
00115   if(!font)
00116     return false;
00117 
00118   guiFontList.push_back(font); 
00119   return true;
00120 }
00121 
00122 void GUIFontManager::clear()
00123 {
00124   for(size_t i = 0; i < guiFontList.size(); i++)
00125     deleteObject(guiFontList[i]); 
00126   
00127   guiFontList.clear();
00128 }

Generated on Wed Dec 5 20:32:03 2007 for GLWX by  doxygen 1.5.3