Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/graphics/text_engine/text.h @ 8548

Last change on this file since 8548 was 8518, checked in by bensch, 19 years ago

merged the gui back to the trunk

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