aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/others/irrlicht-1.8.1/tools/GUIEditor/CGUIPanel.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/others/irrlicht-1.8.1/tools/GUIEditor/CGUIPanel.h')
-rw-r--r--src/others/irrlicht-1.8.1/tools/GUIEditor/CGUIPanel.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/src/others/irrlicht-1.8.1/tools/GUIEditor/CGUIPanel.h b/src/others/irrlicht-1.8.1/tools/GUIEditor/CGUIPanel.h
new file mode 100644
index 0000000..cb6f79a
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/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
11namespace irr
12{
13namespace gui
14{
15
16class IGUIScrollBar;
17class IGUITab;
18
19enum 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
34const c8* const GUIScrollBarModeNames[] =
35{
36 "automatic",
37 "alwaysInvisible",
38 "alwaysVisible",
39 0
40};
41
42class CGUIPanel : public IGUIElement
43{
44public:
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
106protected:
107 void moveInnerPane();
108 void resizeInnerPane();
109 void calculateClientArea();
110
111private:
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