Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/new_class_id/src/lib/graphics/text_engine/text_engine.cc @ 9715

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

renamed newclassid to classid and newobjectlist to objectlist

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