diff options
Diffstat (limited to 'libraries/irrlicht-1.8/tools/GUIEditor/CGUIPanel.h')
-rw-r--r-- | libraries/irrlicht-1.8/tools/GUIEditor/CGUIPanel.h | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/libraries/irrlicht-1.8/tools/GUIEditor/CGUIPanel.h b/libraries/irrlicht-1.8/tools/GUIEditor/CGUIPanel.h new file mode 100644 index 0000000..cb6f79a --- /dev/null +++ b/libraries/irrlicht-1.8/tools/GUIEditor/CGUIPanel.h | |||
@@ -0,0 +1,128 @@ | |||
1 | // Copyright 2006-2012 Asger Feldthaus | ||
2 | // This file is part of the "Irrlicht Engine". | ||
3 | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||
4 | |||
5 | #ifndef _C_GUI_PANEL_H_ | ||
6 | #define _C_GUI_PANEL_H_ | ||
7 | |||
8 | #include "IGUIElement.h" | ||
9 | #include "EGUIEditTypes.h" | ||
10 | |||
11 | namespace irr | ||
12 | { | ||
13 | namespace gui | ||
14 | { | ||
15 | |||
16 | class IGUIScrollBar; | ||
17 | class IGUITab; | ||
18 | |||
19 | enum E_SCROLL_BAR_MODE | ||
20 | { | ||
21 | //! The scrollbar will only show up when needed. | ||
22 | ESBM_AUTOMATIC = 0, | ||
23 | |||
24 | //! The scrollbar will never be visible. | ||
25 | ESBM_ALWAYS_INVISIBLE, | ||
26 | |||
27 | //! The scrollbar will always the visible. | ||
28 | ESBM_ALWAYS_VISIBLE, | ||
29 | |||
30 | //! just a count of how many are in this enum | ||
31 | ESBM_COUNT | ||
32 | }; | ||
33 | |||
34 | const c8* const GUIScrollBarModeNames[] = | ||
35 | { | ||
36 | "automatic", | ||
37 | "alwaysInvisible", | ||
38 | "alwaysVisible", | ||
39 | 0 | ||
40 | }; | ||
41 | |||
42 | class CGUIPanel : public IGUIElement | ||
43 | { | ||
44 | public: | ||
45 | CGUIPanel( IGUIEnvironment* environment, IGUIElement* parent, s32 id=-1, | ||
46 | const core::rect<s32>& rectangle = core::rect<s32>(0,0,100,100), | ||
47 | bool border=false, | ||
48 | E_SCROLL_BAR_MODE vMode=ESBM_AUTOMATIC, | ||
49 | E_SCROLL_BAR_MODE hMode=ESBM_ALWAYS_INVISIBLE ); | ||
50 | |||
51 | virtual ~CGUIPanel(); | ||
52 | |||
53 | //! draws the panel and its children | ||
54 | virtual void draw(); | ||
55 | |||
56 | //! returns true if it has a border, false if not | ||
57 | bool hasBorder() const; | ||
58 | |||
59 | //! sets whether the element draws a border | ||
60 | void setBorder(bool enabled); | ||
61 | |||
62 | //! returns a pointer to the vertical scrollbar | ||
63 | IGUIScrollBar* getVScrollBar() const; | ||
64 | |||
65 | //! returns a pointer to the horizontal scrollbar | ||
66 | IGUIScrollBar* getHScrollBar() const; | ||
67 | |||
68 | //! returns the vertical scrollbar visibility rule | ||
69 | E_SCROLL_BAR_MODE getVScrollBarMode() const; | ||
70 | |||
71 | //! sets the vertical scrollbar visibility rule | ||
72 | void setVScrollBarMode(E_SCROLL_BAR_MODE mode); | ||
73 | |||
74 | //! returns the horizontal scrollbar visibility rule | ||
75 | E_SCROLL_BAR_MODE getHScrollBarMode() const; | ||
76 | |||
77 | //! sets the horizontal scrollbar visibility rule | ||
78 | void setHScrollBarMode(E_SCROLL_BAR_MODE mode); | ||
79 | |||
80 | //! returns the visible area inside the panel, excluding scrollbar and border | ||
81 | core::rect<s32> getClientArea() const; | ||
82 | |||
83 | virtual bool OnEvent(const SEvent &event); | ||
84 | |||
85 | //! adds a child to the panel | ||
86 | virtual void addChild(IGUIElement* child); | ||
87 | |||
88 | //! removes a child from the panel | ||
89 | virtual void removeChild(IGUIElement* child); | ||
90 | |||
91 | //! updates the absolute position | ||
92 | virtual void updateAbsolutePosition(); | ||
93 | |||
94 | //! returns children of the inner pane | ||
95 | virtual const core::list<IGUIElement*>& getChildren(); | ||
96 | |||
97 | //! Returns the type name of the gui element. | ||
98 | virtual const c8* getTypeName() const | ||
99 | { | ||
100 | return GUIEditElementTypeNames[EGUIEDIT_GUIPANEL]; | ||
101 | } | ||
102 | |||
103 | virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0); | ||
104 | virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options=0); | ||
105 | |||
106 | protected: | ||
107 | void moveInnerPane(); | ||
108 | void resizeInnerPane(); | ||
109 | void calculateClientArea(); | ||
110 | |||
111 | private: | ||
112 | |||
113 | IGUIScrollBar* VScrollBar; | ||
114 | IGUIScrollBar* HScrollBar; | ||
115 | IGUITab* ClipPane; | ||
116 | IGUITab* InnerPane; | ||
117 | |||
118 | E_SCROLL_BAR_MODE VScrollBarMode; | ||
119 | E_SCROLL_BAR_MODE HScrollBarMode; | ||
120 | |||
121 | bool NeedsUpdate; | ||
122 | bool Border; | ||
123 | }; | ||
124 | |||
125 | } // namespace gui | ||
126 | } // namespace irr | ||
127 | |||
128 | #endif | ||