/** ** Reload OpenGL fonts */ void ReloadFonts() { for (FontMap::iterator it = Fonts.begin(); it != Fonts.end(); ++it) { CFont &font = *it->second; font.Reload(); } }
/** ** Free OpenGL fonts */ void FreeOpenGLFonts() { for (FontMap::iterator it = Fonts.begin(); it != Fonts.end(); ++it) { CFont &font = *it->second; font.FreeOpenGL(); } }
/** ** Load all fonts. */ void LoadFonts() { for (FontMap::iterator it = Fonts.begin(); it != Fonts.end(); ++it) { CFont &font = *it->second; font.Load(); } // TODO: remove this SmallFont = CFont::Get("small"); GameFont = CFont::Get("game"); }
/** ** Get a font ** ** @param ident Font identifier ** ** @return The font */ /* static */ CFont *CFont::Get(const std::string &ident) { std::map<std::string, CFont *>::iterator it = Fonts.find(ident); if (it == Fonts.end()) { DebugPrint("font not found: %s\n" _C_ ident.c_str()); return nullptr; } CFont *font = it->second; if (font == nullptr) { DebugPrint("font not found: %s\n" _C_ ident.c_str()); return nullptr; } return font; }
Font *Font::Create(TextFormat &inFormat,double inScale,GlyphRotation inRotation,bool inNative,bool inInitRef) { FontInfo info(inFormat,inScale,inRotation,inNative); Font *font = 0; FontMap::iterator fit = sgFontMap.find(info); if (fit!=sgFontMap.end()) { font = fit->second; if (inInitRef) font->IncRef(); return font; } FontFace *face = 0; AutoGCRoot *bytes = 0; FontBytesMap::iterator fbit = sgRegisteredFonts.find(WideToUTF8(inFormat.font).c_str()); if (fbit!=sgRegisteredFonts.end()) { bytes = fbit->second; } if (bytes != NULL) face = FontFace::CreateFreeType(inFormat,inScale,bytes); if (!face) face = FontFace::CreateCFFIFont(inFormat,inScale); if (!face && inNative) face = FontFace::CreateNative(inFormat,inScale); if (!face) face = FontFace::CreateFreeType(inFormat,inScale,NULL); if (!face && !inNative) face = FontFace::CreateNative(inFormat,inScale); if (!face) return 0; font = new Font(face,info.height,inRotation,inInitRef); // Store for Ron ... font->IncRef(); sgFontMap[info] = font; return font; }
/** ** Clean up the font module. */ void CleanFonts() { for (FontMap::iterator it = Fonts.begin(); it != Fonts.end(); ++it) { CFont *font = it->second; font->Clean(); delete font; } if (UseOpenGL) { FontColorGraphics.clear(); } Fonts.clear(); for (FontColorMap::iterator it = FontColors.begin(); it != FontColors.end(); ++it) { delete it->second; } FontColors.clear(); SmallFont = NULL; GameFont = NULL; }
/** ** Clean up the font module. */ void CleanFonts() { for (FontMap::iterator it = Fonts.begin(); it != Fonts.end(); ++it) { CFont *font = it->second; font->Clean(); delete font; } #if defined(USE_OPENGL) || defined(USE_GLES) if (UseOpenGL) { FontColorGraphics.clear(); } #endif Fonts.clear(); for (FontColorMap::iterator it = FontColors.begin(); it != FontColors.end(); ++it) { delete it->second; } FontColors.clear(); SmallFont = nullptr; GameFont = nullptr; }
Font *Font::Create(TextFormat &inFormat,double inScale,GlyphRotation inRotation,bool inNative,bool inInitRef) { FontInfo info(inFormat,inScale,inRotation,inNative); Font *font = 0; FontMap::iterator fit = sgFontMap.find(info); if (fit!=sgFontMap.end()) { font = fit->second; if (inInitRef) font->IncRef(); return font; } FontFace *face = 0; if (inNative) face = FontFace::CreateNative(inFormat,inScale); #ifndef IPHONE if (!face) face = FontFace::CreateFreeType(inFormat,inScale); #endif if (!face && !inNative) face = FontFace::CreateNative(inFormat,inScale); if (!face) return 0; font = new Font(face,info.height,inRotation,inInitRef); // Store for Ron ... font->IncRef(); sgFontMap[info] = font; return font; }
Font *Font::Create(TextFormat &inFormat,double inScale,bool inNative,bool inInitRef) { FontInfo info(inFormat,inScale,inNative); Font *font = 0; FontMap::iterator fit = sgFontMap.find(info); if (fit!=sgFontMap.end()) { font = fit->second; if (inInitRef) font->IncRef(); return font; } FontFace *face = 0; AutoGCRoot *bytes = 0; FontBytesMap::iterator fbit = sgRegisteredFonts.find(WideToUTF8(inFormat.font).c_str()); if (fbit!=sgRegisteredFonts.end()) { bytes = fbit->second; } if (bytes != NULL) face = FontFace::CreateFreeType(inFormat,inScale,bytes); if (!face) face = FontFace::CreateCFFIFont(inFormat,inScale); if (!face && inNative) face = FontFace::CreateNative(inFormat,inScale); if (!face) face = FontFace::CreateFreeType(inFormat,inScale,NULL); if (!face && !inNative) face = FontFace::CreateNative(inFormat,inScale); if (!face) return 0; font = new Font(face,info.height,inInitRef); // Store for Ron ... font->IncRef(); sgFontMap[info] = font; // Clear out any old fonts for (FontMap::iterator fit = sgFontMap.begin(); fit!=sgFontMap.end();) { if (fit->second->GetRefCount()==1) { fit->second->DecRef(); FontMap::iterator next = fit; next++; sgFontMap.erase(fit); fit = next; } else ++fit; } return font; }