Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/graphics/text_engine/text_engine.cc @ 7431

Last change on this file since 7431 was 7428, checked in by bensch, 18 years ago

orxonox/trunk: move the Pollution of the ShellCommand to some other File

File size: 4.0 KB
RevLine 
[4597]1/*
[3655]2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11   ### File Specific:
[3766]12   main-programmer: Benjamin Grauer
[3655]13   co-programmer: ...
[3766]14
15   for some fonts and licenses visit: =http://www.dafont.com/en/font.php=
16
17   !! IMPORTANT !! When using ttf fonts clear the license issues prior to
[4597]18   adding them to orxonox. This is really important, because we do not
[3767]19   want to offend anyone.
[3655]20*/
21
[5357]22#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GRAPHICS
[3655]23
[3766]24#include "text_engine.h"
[5344]25#include "text.h"
26#include "font.h"
[3655]27
28using namespace std;
29
[3766]30#include <stdlib.h>
31#include <stdio.h>
32#include <string.h>
[3655]33
[3766]34#include "graphics_engine.h"
[7193]35#include "util/loading/resource_manager.h"
[5077]36#include "class_list.h"
[3769]37
[3766]38#include "debug.h"
[3768]39///////////////////
40/// TEXT-ENGINE ///
41///////////////////
[3766]42/**
[4836]43 *  standard constructor
[3655]44*/
[4597]45TextEngine::TextEngine ()
[3655]46{
[4320]47   this->setClassID(CL_TEXT_ENGINE, "TextEngine");
[4597]48   this->setName("TextEngine");
[3769]49   this->enableFonts();
[3655]50}
51
52/**
[4836]53 *  the singleton reference to this class
[3655]54*/
[3766]55TextEngine* TextEngine::singletonRef = NULL;
[3655]56
57/**
[4836]58 *  standard deconstructor
[3655]59
60*/
[4597]61TextEngine::~TextEngine ()
[3655]62{
[5288]63  // first remove all the remaining Texts (if any).
[5885]64  const std::list<BaseObject*>* textList = ClassList::getList(CL_TEXT);
[5290]65  if (textList != NULL)
[5288]66  {
[5779]67    while(textList->size() > 0)
68      delete dynamic_cast<Text*>(textList->front());
[5288]69  }
[5347]70  // delete all remaining fonts (There should not be Anything to do here)
[5885]71  const std::list<BaseObject*>* fontList = ClassList::getList(CL_FONT);
[5287]72  if (fontList != NULL)
73  {
[5780]74    ///FIXME
[5779]75//    while (fontList->size() > 0)
[5287]76    {
[5780]77      Font* font = dynamic_cast<Font*>(fontList->back());
[5515]78      if (likely(font != Font::getDefaultFont()))
79        ResourceManager::getInstance()->unload(font, RP_GAME);
[5287]80    }
81  }
[3769]82  this->disableFonts();
[4597]83
[3766]84  TextEngine::singletonRef = NULL;
[3655]85}
[3766]86
87/**
[4836]88 *  function to enable TTF_Fonts
[3766]89*/
[4746]90void TextEngine::enableFonts()
[3766]91{
92  if (!TTF_WasInit())
93    {
94      if(TTF_Init()==-1)
[4597]95        PRINTF(1)("TTF_Init: %s\n", TTF_GetError());
[3766]96
97      TextEngine::checkVersion();
98    }
99  else
100    PRINTF(4)("Fonts already initialized\n");
101}
102
103/**
[4836]104 *  function to disable TTF_fonts
[7428]105 */
[4746]106void TextEngine::disableFonts()
[3766]107{
108  if (TTF_WasInit())
109    {
[5336]110      Font::removeDefaultFont();
[3766]111      TTF_Quit();
112    }
113  else
114    PRINTF(4)("Fonts were not initialized.\n");
115}
116
117/**
[4836]118 *  outputs some nice Debug information
[5347]119 *
120 * @todo there should also be something outputted about Font
121 */
[4746]122void TextEngine::debug() const
[3774]123{
[5885]124  const list<BaseObject*>* textList = ClassList::getList(CL_TEXT);
[5287]125  if (textList != NULL)
126  {
127    PRINT(0)("+-------------------------------+\n");
128    PRINT(0)("+ TEXT ENGINE DEBUG INFORMATION +\n");
129    PRINT(0)("+-------------------------------+\n");
[5779]130    PRINT(0)("Reference: %p; Text Counts: %d\n", this, textList->size());
[4597]131
[5885]132    list<BaseObject*>::const_iterator text;
[5779]133    for ( text = textList->begin(); text != textList->end(); text++)
134      dynamic_cast<Text*>(*text)->debug();
[5287]135    PRINT(0)("+---------------------------TE--+\n");
136  }
[3774]137}
138
139
140/**
[4836]141 *  checks if the compiled version and the local version of SDL_ttf match.
142 * @returns true if match, false otherwise
[3766]143*/
[4746]144bool TextEngine::checkVersion()
[3766]145{
146  SDL_version compile_version;
147  SDL_version link_version;
148  TTF_VERSION(&compile_version);
149  link_version = *TTF_Linked_Version();
150
151  if (compile_version.major == link_version.major &&
152      compile_version.minor == link_version.minor &&
153      compile_version.patch == link_version.patch)
154    {
155      return true;
156    }
157  else
158    {
[4597]159      PRINTF(2)("compiled with SDL_ttf version: %d.%d.%d\n",
160                compile_version.major,
161                compile_version.minor,
162                compile_version.patch);
163
164      PRINTF(2)("running with SDL_ttf version: %d.%d.%d\n",
165                link_version.major,
166                link_version.minor,
167                link_version.patch);
[3766]168      return false;
169    }
170}
Note: See TracBrowser for help on using the repository browser.