Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/presentation/src/lib/graphics/text_engine/text_engine.cc @ 10771

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

orxonox/trunk: merged the new_class_id branche back to the trunk.
merged with command:
svn merge https://svn.orxonox.net/orxonox/branches/new_class_id trunk -r9683:HEAD
no conflicts… puh..

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