Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

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

orxonox/trunk: ClassList is now in std::list style
ShellCommand is now in std::list style

File size: 4.0 KB
Line 
1/*
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:
12   main-programmer: Benjamin Grauer
13   co-programmer: ...
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
18   adding them to orxonox. This is really important, because we do not
19   want to offend anyone.
20*/
21
22#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GRAPHICS
23
24#include "text_engine.h"
25#include "text.h"
26#include "font.h"
27
28using namespace std;
29
30#include <stdlib.h>
31#include <stdio.h>
32#include <string.h>
33
34#include "graphics_engine.h"
35#include "resource_manager.h"
36#include "class_list.h"
37
38#include "debug.h"
39#include "list.h"
40
41///////////////////
42/// TEXT-ENGINE ///
43///////////////////
44/**
45 *  standard constructor
46*/
47TextEngine::TextEngine ()
48{
49   this->setClassID(CL_TEXT_ENGINE, "TextEngine");
50   this->setName("TextEngine");
51   this->enableFonts();
52}
53
54/**
55 *  the singleton reference to this class
56*/
57TextEngine* TextEngine::singletonRef = NULL;
58
59/**
60 *  standard deconstructor
61
62*/
63TextEngine::~TextEngine ()
64{
65  // first remove all the remaining Texts (if any).
66  std::list<BaseObject*>* textList = ClassList::getList(CL_TEXT);
67  if (textList != NULL)
68  {
69    while(textList->size() > 0)
70    {
71      delete dynamic_cast<Text*>(textList->front());
72    }
73  }
74  // delete all remaining fonts (There should not be Anything to do here)
75  std::list<BaseObject*>* fontList = ClassList::getList(CL_FONT);
76  if (fontList != NULL)
77  {
78//    while (fontList->size() > 0)
79    {
80      Font* font = dynamic_cast<Font*>(fontList->front());
81      if (likely(font != Font::getDefaultFont()))
82        ResourceManager::getInstance()->unload(font, RP_GAME);
83    }
84  }
85  this->disableFonts();
86
87  TextEngine::singletonRef = NULL;
88}
89
90/**
91 *  function to enable TTF_Fonts
92*/
93void TextEngine::enableFonts()
94{
95  if (!TTF_WasInit())
96    {
97      if(TTF_Init()==-1)
98        PRINTF(1)("TTF_Init: %s\n", TTF_GetError());
99
100      TextEngine::checkVersion();
101    }
102  else
103    PRINTF(4)("Fonts already initialized\n");
104}
105
106/**
107 *  function to disable TTF_fonts
108*/
109void TextEngine::disableFonts()
110{
111  if (TTF_WasInit())
112    {
113      Font::removeDefaultFont();
114      TTF_Quit();
115    }
116  else
117    PRINTF(4)("Fonts were not initialized.\n");
118}
119
120/**
121 *  outputs some nice Debug information
122 *
123 * @todo there should also be something outputted about Font
124 */
125void TextEngine::debug() const
126{
127  list<BaseObject*>* textList = ClassList::getList(CL_TEXT);
128  if (textList != NULL)
129  {
130    PRINT(0)("+-------------------------------+\n");
131    PRINT(0)("+ TEXT ENGINE DEBUG INFORMATION +\n");
132    PRINT(0)("+-------------------------------+\n");
133    PRINT(0)("Reference: %p; Text Counts: %d\n", this, textList->size());
134
135    list<BaseObject*>::iterator text;
136    for ( text = textList->begin(); text != textList->end(); text++)
137      dynamic_cast<Text*>(*text)->debug();
138    PRINT(0)("+---------------------------TE--+\n");
139  }
140}
141
142
143/**
144 *  checks if the compiled version and the local version of SDL_ttf match.
145 * @returns true if match, false otherwise
146*/
147bool TextEngine::checkVersion()
148{
149  SDL_version compile_version;
150  SDL_version link_version;
151  TTF_VERSION(&compile_version);
152  link_version = *TTF_Linked_Version();
153
154  if (compile_version.major == link_version.major &&
155      compile_version.minor == link_version.minor &&
156      compile_version.patch == link_version.patch)
157    {
158      return true;
159    }
160  else
161    {
162      PRINTF(2)("compiled with SDL_ttf version: %d.%d.%d\n",
163                compile_version.major,
164                compile_version.minor,
165                compile_version.patch);
166
167      PRINTF(2)("running with SDL_ttf version: %d.%d.%d\n",
168                link_version.major,
169                link_version.minor,
170                link_version.patch);
171      return false;
172    }
173}
Note: See TracBrowser for help on using the repository browser.