aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/irrlicht-1.8.1/include/IGUITabControl.h
blob: 660c4d038dbd0feef1d20581ea2a6be02725e44d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
// Copyright (C) 2002-2012 Nikolaus Gebhardt
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h

#ifndef __I_GUI_TAB_CONTROL_H_INCLUDED__
#define __I_GUI_TAB_CONTROL_H_INCLUDED__

#include "IGUIElement.h"
#include "SColor.h"
#include "IGUISkin.h"

namespace irr
{
namespace gui
{
	//! A tab-page, onto which other gui elements could be added.
	/** IGUITab refers to the page itself, not to the tab in the tabbar of an IGUITabControl. */
	class IGUITab : public IGUIElement
	{
	public:

		//! constructor
		IGUITab(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
			: IGUIElement(EGUIET_TAB, environment, parent, id, rectangle) {}

		//! Returns zero based index of tab if in tabcontrol.
		/** Can be accessed later IGUITabControl::getTab() by this number.
			Note that this number can change when other tabs are inserted or removed .
		*/
		virtual s32 getNumber() const = 0;

		//! sets if the tab should draw its background
		virtual void setDrawBackground(bool draw=true) = 0;

		//! sets the color of the background, if it should be drawn.
		virtual void setBackgroundColor(video::SColor c) = 0;

		//! returns true if the tab is drawing its background, false if not
		virtual bool isDrawingBackground() const = 0;

		//! returns the color of the background
		virtual video::SColor getBackgroundColor() const = 0;

		//! sets the color of the text
		virtual void setTextColor(video::SColor c) = 0;

		//! gets the color of the text
		virtual video::SColor getTextColor() const = 0;
	};

	//! A standard tab control
	/** \par This element can create the following events of type EGUI_EVENT_TYPE:
	\li EGET_TAB_CHANGED
	*/
	class IGUITabControl : public IGUIElement
	{
	public:

		//! constructor
		IGUITabControl(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
			: IGUIElement(EGUIET_TAB_CONTROL, environment, parent, id, rectangle) {}

		//! Adds a tab
		virtual IGUITab* addTab(const wchar_t* caption, s32 id=-1) = 0;

		//! Insert the tab at the given index
		/** \return The tab on success or NULL on failure. */
		virtual IGUITab* insertTab(s32 idx, const wchar_t* caption, s32 id=-1) = 0;

		//! Removes a tab from the tabcontrol
		virtual void removeTab(s32 idx) = 0;

		//! Clears the tabcontrol removing all tabs
		virtual void clear() = 0;

		//! Returns amount of tabs in the tabcontrol
		virtual s32 getTabCount() const = 0;

		//! Returns a tab based on zero based index
		/** \param idx: zero based index of tab. Is a value betwenn 0 and getTabcount()-1;
		\return Returns pointer to the Tab. Returns 0 if no tab
		is corresponding to this tab. */
		virtual IGUITab* getTab(s32 idx) const = 0;

		//! Brings a tab to front.
		/** \param idx: number of the tab.
		\return Returns true if successful. */
		virtual bool setActiveTab(s32 idx) = 0;

		//! Brings a tab to front.
		/** \param tab: pointer to the tab.
		\return Returns true if successful. */
		virtual bool setActiveTab(IGUITab *tab) = 0;

		//! Returns which tab is currently active
		virtual s32 getActiveTab() const = 0;

		//! get the the id of the tab at the given absolute coordinates
		/** \return The id of the tab or -1 when no tab is at those coordinates*/
		virtual s32 getTabAt(s32 xpos, s32 ypos) const = 0;

		//! Set the height of the tabs
		virtual void setTabHeight( s32 height ) = 0;

		//! Get the height of the tabs
		/** return Returns the height of the tabs */
		virtual s32 getTabHeight() const = 0;

		//! set the maximal width of a tab. Per default width is 0 which means "no width restriction".
		virtual void setTabMaxWidth(s32 width ) = 0;

		//! get the maximal width of a tab
		virtual s32 getTabMaxWidth() const = 0;

		//! Set the alignment of the tabs
		/** Use EGUIA_UPPERLEFT or EGUIA_LOWERRIGHT */
		virtual void setTabVerticalAlignment( gui::EGUI_ALIGNMENT alignment ) = 0;

		//! Get the alignment of the tabs
		/** return Returns the alignment of the tabs */
		virtual gui::EGUI_ALIGNMENT getTabVerticalAlignment() const = 0;

		//! Set the extra width added to tabs on each side of the text
		virtual void setTabExtraWidth( s32 extraWidth ) = 0;

		//! Get the extra width added to tabs on each side of the text
		/** return Returns the extra width of the tabs */
		virtual s32 getTabExtraWidth() const = 0;
	};


} // end namespace gui
} // end namespace irr

#endif