Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/heathaze/src/lib/graphics/text_engine/text.h @ 10611

Last change on this file since 10611 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.1 KB
Line 
1/*!
2 * @file text.h
3 * @brief Definition of a text Class, that is able to render text.
4 */
5
6#ifndef _TEXT_H
7#define _TEXT_H
8
9#include "element_2d.h"
10#include "color.h"
11#include "font.h"
12
13#define  TEXT_ALIGN_LEFT             E2D_ALIGN_LEFT
14#define  TEXT_ALIGN_RIGHT            E2D_ALIGN_RIGHT
15#define  TEXT_ALIGN_CENTER           E2D_ALIGN_CENTER
16#define  TEXT_ALIGN_SCREEN_CENTER    E2D_ALIGN_SCREEN_CENTER
17#define  TEXT_DEFAULT_COLOR          Color(1.0, 1.0, 1.0, 1.0f) //!< the default Color (white, fully visible)
18
19#define  TEXT_DEFAULT_ALIGNMENT      TEXT_ALIGN_LEFT            //!< default alignment
20#define  TEXT_DEFAULT_SIZE           20                         //!< default size of the Text
21
22// FORWARD DECLARATION
23struct SDL_Surface;
24
25//! Represents one textElement.
26class Text : public Element2D
27{
28  ObjectListDeclaration(Text);
29  public:
30    Text(const std::string& fontFile = "", unsigned int fontSize = TEXT_DEFAULT_SIZE);
31    Text(const Text& text);
32    virtual ~Text();
33    bool operator==(const Text& text) const;
34    bool operator==(const std::string& text) const;
35    Text& operator=(const Text& text);
36
37    /// Final Interfacing.
38    void setText(const std::string& text);
39    void append(const std::string& appendText);
40    void appendCharacter(char character);
41    const std::string& operator<<(const std::string& appendText);
42    void removeCharacters(unsigned int chars);
43    void clear();
44
45    /// SETUP
46    void setFont(const std::string& fontFile, unsigned int renderSize);
47    void setFont(const Font& font);
48    /** @param blending the blending intensity to set (between 0.0 and 1.0) */
49    inline void setBlending(float blending) { this->_font.setTransparency(blending); };
50    /** @param r red @param g green @param b blue @brief sets the Color of the Text to render (values in [0-1]) */
51    void setColor(float r, float g, float b) { this->_font.setDiffuseColor(Color(r, g, b, this->blending())); };
52    void setColor(float r, float g, float b, float a) { this->_font.setDiffuseColor(Color(r, g, b, a)); };
53    void setColor(const Color& color) { this->_font.setDiffuseColor(color); };
54    void setSize(float size);
55
56
57    /// RETRIEVE
58    /** @returns the String this Text displays */
59    inline const std::string& text() const { return this->_text; };
60
61    /** @returns the pointer to the stored Font (not changeable) */
62    inline const Font& font() const { return this->_font; };
63    /** @returns the Blending Value [0 invisible 1.0 full visible */
64    inline float blending() const { return this->_font.diffuseColor().a(); };
65    /** @returns: a Vector(r,g,b) @brief: retrieve a Vector holding the Color of the Text */
66    inline const Color& color() const { return this->_font.diffuseColor(); };
67    /** @returns the Size of the Text */
68    inline float size() const { return this->_size; };
69
70    virtual void draw() const;
71
72    void debug() const;
73
74  protected:
75    virtual void setupTextWidth();
76  private:
77    void init();
78
79  private:
80    Font              _font;           //!< Font of this text
81
82    std::string       _text;           //!< The text to display
83    float             _size;           //!< The size of the Text.
84};
85
86#endif /* _TEXT_H */
Note: See TracBrowser for help on using the repository browser.