void Font::Init(const char* filename, int size) { if (loadedFonts <= 0 && TTF_WasInit() == 0) { if (TTF_Init() == -1) throw TTFException(TTF_GetError()); } this->name = new char[strlen(filename) + 1]; strcpy(this->name, filename); this->size = size; if ((this->font = TTF_OpenFont(this->name, this->size)) == NULL) { throw TTFException(TTF_GetError()); } loadedFonts++; }
bool Application::OnInit() { std::string textException = "OnInit() => "; try { SettingsCreator::ConfigureSettingsFile(); InitializeSDLSystem(); InitializeVideoSystem(); InitializeTTFSystem(); InitializeAudioSystem(); InitializeResources(); StateManager::SetActiveState(STATE_MENU); return true; } catch (const SDLException& sdlException) { textException.append(sdlException.WhatHappens()); throw SDLException(textException); } catch (const TTFException& ttfException) { textException.append(ttfException.WhatHappens()); throw TTFException(textException); } catch (const MixerException& mixerException) { textException.append(mixerException.WhatHappens()); throw MixerException(textException); } catch (const GenericException& exception) { textException.append(exception.WhatHappens()); throw GenericException(textException); } return false; }
void MenuState::OnActivate() { try { // Cargar recursos fontManager = FontManager::GetInstance(); lazyFont = new Font(fontManager->GetFont(FontManager::Lazy)); lazyFont->Initialize(); SDL_Color textColor = {255, 255, 255}; lazyFont->SetStyle(TTF_STYLE_UNDERLINE); lazyFont->SetOutline(TTF_STYLE_BOLD); lazyFont->SetHinting(TTF_HINTING_NONE); lazyFont->SetKerning(false); lazyFont->SetSize(26); message = TTF_RenderText_Solid(lazyFont->GetTTF_Font(), "MenuState", textColor); if (!message) { throw TTFException(); } } catch (const TTFException& ttfException) { throw ttfException; } catch (const GenericException& genericException) { throw genericException; } }
int Font::setSize(int size) { if (this->size == size) return size; int old = this->size; if (this->font != NULL) { TTF_CloseFont(this->font); this->font = NULL; } this->size = size; if ((this->font = TTF_OpenFont(this->name, this->size)) == NULL) { throw TTFException(TTF_GetError()); } return old; }
void Application::InitializeTTFSystem() { // Initialize SDL_ttf if (TTF_Init() == -1) { throw TTFException(); } }