Nirtcpp 2.1.0
Nirtcpp is a high-performance c++ graphics engine.
|
Base class of all GUI elements. More...
#include <nirtcpp/core/engine/IGUIElement.hpp>
Public Member Functions | |
IGUIElement (EGUI_ELEMENT_TYPE type, IGUIEnvironment *environment, IGUIElement *parent, s32 id, const core::rect< s32 > &rectangle) | |
Constructor. | |
virtual | ~IGUIElement () |
Destructor. | |
IGUIElement * | getParent () const |
Returns parent of this element. | |
core::rect< s32 > | getRelativePosition () const |
Returns the relative rectangle of this element. | |
void | setRelativePosition (const core::rect< s32 > &r) |
Sets the relative rectangle of this element. | |
void | setRelativePosition (const core::position2di &position) |
Sets the relative rectangle of this element, maintaining its current width and height. | |
void | setRelativePositionProportional (const core::rect< f32 > &r) |
Sets the relative rectangle of this element as a proportion of its parent's area. | |
core::rect< s32 > | getAbsolutePosition () const |
Gets the absolute rectangle of this element. | |
core::rect< s32 > | getAbsoluteClippingRect () const |
Returns the visible area of the element. | |
void | setNotClipped (bool noClip) |
Sets whether the element will ignore its parent's clipping rectangle. | |
bool | isNotClipped () const |
Gets whether the element will ignore its parent's clipping rectangle. | |
void | setMaxSize (core::dimension2du size) |
Sets the maximum size allowed for this element. | |
void | setMinSize (core::dimension2du size) |
Sets the minimum size allowed for this element. | |
void | setAlignment (EGUI_ALIGNMENT left, EGUI_ALIGNMENT right, EGUI_ALIGNMENT top, EGUI_ALIGNMENT bottom) |
The alignment defines how the borders of this element will be positioned when the parent element is resized. | |
EGUI_ALIGNMENT | getAlignLeft () const |
How left element border is aligned when parent is resized. | |
EGUI_ALIGNMENT | getAlignRight () const |
How right element border is aligned when parent is resized. | |
EGUI_ALIGNMENT | getAlignTop () const |
How top element border is aligned when parent is resized. | |
EGUI_ALIGNMENT | getAlignBottom () const |
How bottom element border is aligned when parent is resized. | |
virtual void | updateAbsolutePosition () |
Updates the absolute position. | |
virtual IGUIElement * | getElementFromPoint (const core::position2d< s32 > &point) |
Returns the topmost GUI element at the specific position. | |
virtual bool | isPointInside (const core::position2d< s32 > &point) const |
Returns true if a point is within this element. | |
virtual void | addChild (IGUIElement *child) |
Adds a GUI element as new child of this element. | |
virtual void | removeChild (IGUIElement *child) |
Removes a child. | |
virtual void | remove () |
Removes this element from its parent. | |
virtual void | draw () |
Draws the element and its children. | |
virtual void | OnPostRender (u32 timeMs) |
animate the element and its children. | |
virtual void | move (core::position2d< s32 > absoluteMovement) |
Moves this element. | |
virtual bool | isVisible () const |
Returns true if element is visible. | |
virtual bool | isTrulyVisible () const |
Check whether the element is truly visible, taking into accounts its parents' visibility. | |
virtual void | setVisible (bool visible) |
Sets the visible state of this element. | |
virtual bool | isSubElement () const |
Returns true if this element was created as part of its parent control. | |
virtual void | setSubElement (bool subElement) |
Sets whether this control was created as part of its parent. | |
void | setTabStop (bool enable) |
If set to true, the focus will visit this element when using the tab key to cycle through elements. | |
bool | isTabStop () const |
Returns true if this element can be focused by navigating with the tab key. | |
void | setTabOrder (s32 index) |
Sets the priority of focus when using the tab key to navigate between a group of elements. | |
s32 | getTabOrder () const |
Returns the number in the tab order sequence. | |
void | setTabGroup (bool isGroup) |
Sets whether this element is a container for a group of elements which can be navigated using the tab key. | |
bool | isTabGroup () const |
Returns true if this element is a tab group. | |
IGUIElement * | getTabGroup () |
Returns the container element which holds all elements in this element's tab group. | |
virtual bool | isEnabled () const |
Returns true if element is enabled. | |
virtual void | setEnabled (bool enabled) |
Sets the enabled state of this element. | |
virtual void | setText (const wchar_t *text) |
Sets the new caption of this element. | |
virtual const wchar_t * | getText () const |
Returns caption of this element. | |
virtual void | setToolTipText (const wchar_t *text) |
Sets the new caption of this element. | |
virtual const core::stringw & | getToolTipText () const |
Returns caption of this element. | |
virtual s32 | getID () const |
Returns id. Can be used to identify the element. | |
virtual void | setID (s32 id) |
Sets the id of this element. | |
virtual bool | OnEvent (const SEvent &event) override |
Called if an event happened. | |
virtual bool | bringToFront (IGUIElement *element) |
Brings a child to front. | |
virtual bool | sendToBack (IGUIElement *child) |
Moves a child to the back, so it's siblings are drawn on top of it. | |
virtual const core::list< IGUIElement * > & | getChildren () const |
Returns list with children of this element. | |
virtual IGUIElement * | getElementFromId (s32 id, bool searchchildren=false) const |
Finds the first element with the given id. | |
bool | isMyChild (IGUIElement *child) const |
bool | getNextElement (s32 startOrder, bool reverse, bool group, IGUIElement *&first, IGUIElement *&closest, bool includeInvisible=false, bool includeDisabled=false) const |
searches elements to find the closest next element to tab to | |
EGUI_ELEMENT_TYPE | getType () const |
Returns the type of the gui element. | |
virtual bool | hasType (EGUI_ELEMENT_TYPE type) const |
Returns true if the gui element supports the given type. | |
virtual const c8 * | getTypeName () const |
Returns the type name of the gui element. | |
virtual const c8 * | getName () const |
Returns the name of the element. | |
virtual void | setName (const c8 *name) |
Sets the name of the element. | |
virtual void | setName (const core::stringc &name) |
Sets the name of the element. | |
virtual void | serializeAttributes (io::IAttributes *out, io::SAttributeReadWriteOptions *options=0) const override |
Writes attributes of the scene node. | |
virtual void | deserializeAttributes (io::IAttributes *in, io::SAttributeReadWriteOptions *options=0) override |
Reads attributes of the scene node. | |
Public Member Functions inherited from nirt::IReferenceCounted | |
IReferenceCounted () | |
Constructor. | |
virtual | ~IReferenceCounted () |
Destructor. | |
void | grab () const |
Grabs the object. Increments the reference counter by one. | |
bool | drop () const |
Drops the object. Decrements the reference counter by one. | |
s32 | getReferenceCount () const |
Get the reference count. | |
const c8 * | getDebugName () const |
Returns the debug name of the object. | |
Public Member Functions inherited from nirt::IEventReceiver | |
virtual | ~IEventReceiver () |
Destructor. | |
Protected Member Functions | |
void | addChildToEnd (IGUIElement *child) |
void | recalculateAbsolutePosition (bool recursive) |
Protected Member Functions inherited from nirt::IReferenceCounted | |
void | setDebugName (const c8 *newName) |
Sets the debug name of the object. | |
Protected Attributes | |
core::list< IGUIElement * > | Children |
List of all children of this element. | |
IGUIElement * | Parent |
Pointer to the parent. | |
core::rect< s32 > | RelativeRect |
relative rect of element | |
core::rect< s32 > | AbsoluteRect |
absolute rect of element | |
core::rect< s32 > | AbsoluteClippingRect |
absolute clipping rect of element | |
core::rect< s32 > | DesiredRect |
core::rect< s32 > | LastParentRect |
for calculating the difference when resizing parent | |
core::rect< f32 > | ScaleRect |
relative scale of the element inside its parent | |
core::dimension2du | MaxSize |
maximum and minimum size of the element | |
core::dimension2du | MinSize |
bool | IsVisible |
is visible? | |
bool | IsEnabled |
is enabled? | |
bool | IsSubElement |
is a part of a larger whole and should not be serialized? | |
bool | NoClip |
does this element ignore its parent's clipping rectangle? | |
core::stringw | Text |
caption | |
core::stringw | ToolTipText |
tooltip | |
core::stringc | Name |
users can set this for identifying the element by string | |
s32 | ID |
users can set this for identifying the element by integer | |
bool | IsTabStop |
tab stop like in windows | |
s32 | TabOrder |
tab order | |
bool | IsTabGroup |
tab groups are containers like windows, use ctrl+tab to navigate | |
EGUI_ALIGNMENT | AlignLeft |
tells the element how to act when its parent is resized | |
EGUI_ALIGNMENT | AlignRight |
EGUI_ALIGNMENT | AlignTop |
EGUI_ALIGNMENT | AlignBottom |
IGUIEnvironment * | Environment |
GUI Environment. | |
EGUI_ELEMENT_TYPE | Type |
type of element | |
Base class of all GUI elements.
|
inlinevirtual |
Brings a child to front.
|
inlineoverridevirtual |
Reads attributes of the scene node.
Implement this to set the attributes of your scene node for scripting languages, editors, debuggers or xml deserialization purposes.
Reimplemented from nirt::io::IAttributeExchangingObject.
|
inlinevirtual |
Finds the first element with the given id.
id | Id to search for. |
searchchildren | Set this to true, if also children of this element may contain the element with the searched id and they should be searched too. |
|
inlinevirtual |
Returns the topmost GUI element at the specific position.
This will check this GUI element and all of its descendants, so it may return this GUI element. To check all GUI elements, call this function on device->getGUIEnvironment()->getRootGUIElement(). Note that the root element is the size of the screen, so doing so (with an on-screen point) will always return the root element if no other element is above it at that point.
point | The point at which to find a GUI element. |
|
inlinevirtual |
Returns the name of the element.
|
inline |
searches elements to find the closest next element to tab to
startOrder | The TabOrder of the current element, -1 if none |
reverse | true if searching for a lower number |
group | true if searching for a higher one |
first | element with the highest/lowest known tab order depending on search direction |
closest | the closest match, depending on tab order and direction |
includeInvisible | includes invisible elements in the search (default=false) |
includeDisabled | includes disabled elements in the search (default=false) |
|
inline |
Returns the type of the gui element.
This is needed for the .NET wrapper but will be used later for serializing and deserializing. If you wrote your own GUIElements, you need to set the type for your element as first parameter in the constructor of IGUIElement. For own (=unknown) elements, simply use EGUIET_ELEMENT as type
|
inlinevirtual |
Returns the type name of the gui element.
This is needed serializing elements. For serializing your own elements, override this function and return your own type name which is created by your IGUIElementFactory
|
inlinevirtual |
Returns true if the gui element supports the given type.
This is mostly used to check if you can cast a gui element to the class that goes with the type. Most gui elements will only support their own type, but if you derive your own classes from interfaces you can overload this function and add a check for the type of the base-class additionally. This allows for checks comparable to the dynamic_cast of c++ with enabled rtti. Note that you can't do that by calling BaseClass::hasType(type), but you have to do an explicit comparison check, because otherwise the base class usually just checks for the member variable Type which contains the type of your derived class.
|
inlinevirtual |
Returns true if element is enabled.
Currently elements do not care about parent-states. So if you want to affect children you have to enable/disable them all. The only exception to this are sub-elements which also check their parent.
|
inline |
returns true if the given element is a child of this one.
child | The child element to check |
|
inline |
Gets whether the element will ignore its parent's clipping rectangle.
|
inlinevirtual |
Returns true if a point is within this element.
Elements with a shape other than a rectangle should override this method
|
inlinevirtual |
Check whether the element is truly visible, taking into accounts its parents' visibility.
|
inlineoverridevirtual |
Called if an event happened.
Implements nirt::IEventReceiver.
|
inlinevirtual |
Moves a child to the back, so it's siblings are drawn on top of it.
|
inlineoverridevirtual |
Writes attributes of the scene node.
Implement this to expose the attributes of your scene node for scripting languages, editors, debuggers or xml serialization purposes.
Reimplemented from nirt::io::IAttributeExchangingObject.
|
inline |
Sets the maximum size allowed for this element.
If set to 0,0, there is no maximum size
|
inlinevirtual |
Sets the name of the element.
name | New name of the gui element. |
|
inlinevirtual |
Sets the name of the element.
name | New name of the gui element. |
|
inline |
Sets whether the element will ignore its parent's clipping rectangle.
noClip | If true, the element will not be clipped by its parent's clipping rectangle. |
|
inline |
Sets the relative rectangle of this element, maintaining its current width and height.
position | The new relative position to set. Width and height will not be changed. |
|
inline |
Sets the relative rectangle of this element.
r | The absolute position to set |
|
inline |
Sets the relative rectangle of this element as a proportion of its parent's area.
r | The rectangle to set, interpreted as a proportion of the parent's area. Meaningful values are in the range [0...1], unless you intend this element to spill outside its parent. |
|
inlinevirtual |
Sets whether this control was created as part of its parent.
For example, it is true when a scrollbar is part of a listbox. SubElements are not saved to disk when calling guiEnvironment->saveGUI()
|
inline |
Sets whether this element is a container for a group of elements which can be navigated using the tab key.
For example, windows are tab groups. Groups can be navigated using ctrl+tab, providing isTabStop is true.
|
inline |
Sets the priority of focus when using the tab key to navigate between a group of elements.
See setTabGroup, isTabGroup and getTabGroup for information on tab groups. Elements with a lower number are focused first
|
inline |
If set to true, the focus will visit this element when using the tab key to cycle through elements.
If this element is a tab group (see isTabGroup/setTabGroup) then ctrl+tab will be used instead.
|
protected |
the rectangle the element would prefer to be, if it was not constrained by parent or max/min size