Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/gui/src/lib/gui/gl/glgui_style.h @ 8554

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

style should be loadable through strings

File size: 5.0 KB
Line 
1/*!
2 * @file glgui_style.h
3 * @brief Definition of the OpenGL-GUI Style of a Class.
4*/
5
6#ifndef _GLGUI_STYLE_H
7#define _GLGUI_STYLE_H
8
9#include "glgui_defs.h"
10
11#include "font.h"
12#include "texture.h"
13#include "color.h"
14
15class TiXmlElement;
16
17namespace OrxGui
18{
19  //! A class for Defining Styles to the opengl-gui.
20  class GLGuiStyle
21  {
22  public:
23    GLGuiStyle(const TiXmlElement* root = NULL);
24    virtual ~GLGuiStyle();
25
26
27    /// Retrieve
28    inline float borderLeft(OrxGui::State state = GLGUI_DEFAULT_STYLE) const { return _style[state]._borderLeft; }
29    inline float borderRight(OrxGui::State state = GLGUI_DEFAULT_STYLE) const { return _style[state]._borderRight; }
30    inline float borderTop(OrxGui::State state = GLGUI_DEFAULT_STYLE) const { return _style[state]._borderTop; }
31    inline float borderBottom(OrxGui::State state = GLGUI_DEFAULT_STYLE) const { return _style[state]._borderBottom; }
32    inline float textSize(OrxGui::State state = GLGUI_DEFAULT_STYLE) const { return _style[state]._textSize; }
33    inline const Color& backgroundColor(OrxGui::State state= GLGUI_DEFAULT_STYLE) const { return _style[state]._backgroundColor; }
34    inline const Texture& backgrorundTexture(OrxGui::State state= GLGUI_DEFAULT_STYLE) const { return _style[state]._backgroundTexture; }
35    inline const Color& foregroundColor(OrxGui::State state= GLGUI_DEFAULT_STYLE) const { return _style[state]._foregroundColor; }
36
37    inline FeaturePosition featurePosition() const { return _featurePosition; }
38    inline const Font* const font() const { return _font; }
39    inline bool animated() const { return _animated; }
40    inline bool animatedStateChanges() const { return _animatedStateChanges; }
41
42
43
44    /// SETUP
45    void reset();
46    void loadParams(const TiXmlElement* root);
47
48    void setBorderLeft(float value);
49    void setBorderLeft(float value, OrxGui::State state);
50    void setBorderLeftS(float value, const std::string& stateName);
51
52    void setBorderRight(float value);
53    void setBorderRight(float value, OrxGui::State state);
54    void setBorderRightS(float value, const std::string& stateName);
55
56    void setBorderTop(float value);
57    void setBorderTop(float value, OrxGui::State state);
58    void setBorderTopS(float value, const std::string& stateName);
59
60    void setBorderBottom(float value);
61    void setBorderBottom(float value, OrxGui::State state);
62    void setBorderBottomS(float value, const std::string& stateName);
63
64    void setTextSize(float value);
65    void setTextSize(float value, OrxGui::State state);
66    void setTextSizeS(float value, const std::string& stateName);
67
68    void setBackgroundColor(const Color& color);
69    void setBackgroundColor(const Color& color, OrxGui::State state);
70    void setBackgroundColorS(float r, float g, float b, float a, const std::string& stateName);
71
72    void setBackgroundTexture(const Texture& texture);
73    void setBackgroundTexture(const Texture& texture, OrxGui::State state);
74    void setBackgroundTexture(const std::string& textureName, const std::string& stateName);
75
76    void setForegroundColor(const Color& color);
77    void setForegroundColor(const Color& color, OrxGui::State state);
78    void setForegroundColorS(float r, float g, float b, float a, const std::string& stateName);
79
80
81    void setFeaturePosition(FeaturePosition featurePosition);
82    void setFeaturePosition(const std::string& featurePosition);
83
84    void setFont(Font* font);
85    void setFont(const std::string& fontName);
86
87    void setAnimated(bool animated);
88    void setAnimatedStateChanges(bool animated);
89
90    private:
91      bool getState(const std::string& stateName, OrxGui::State* state);
92
93  private:
94    typedef struct
95    {
96      float             _borderLeft;           //!< The Distance to the left Border of the widget, before any internal Element starts.
97      float             _borderRight;          //!< The Distance to the right Border of the widget, before any internal Element starts.
98      float             _borderTop;            //!< The Distance to the top Border of the widget, before any internal Element starts
99      float             _borderBottom;         //!< The Distance to the bottom Border of the widget, before any internal Element starts
100
101      float             _textSize;             //!< The TextSize of the Widget.
102
103      Color             _backgroundColor;      //!< The BackgroundColor of the Widget.
104      Texture           _backgroundTexture;    //!< The BackgroundTexture of the Widget.
105
106      Color             _foregroundColor;      //!< The foregroundColor of the Widget.
107    }
108    StatedStyle;
109
110
111    StatedStyle         _style[GLGUI_STATE_COUNT];
112
113    FeaturePosition     _featurePosition;      //!< The Position a Feature will be layed at (checkbox(box), slider(text),...)
114    Font*               _font;                 //!< The Font used in the current Widget.
115
116
117    bool                _animated;             //!< If the Widget is animated (Texture might be an AnimatedTexture.)
118    bool                _animatedStateChanges; //!< If the Transitions between States are Animated automatically.
119  };
120}
121#endif /* _GLGUI_STYLE_H */
Note: See TracBrowser for help on using the repository browser.