|
FifeGUI 0.2.0
A C++ GUI library designed for games.
|
#include <container.hpp>
Public Types | |
| enum class | LayoutPolicy : uint8_t { Absolute , AutoSize , Vertical , Horizontal , Circular } |
| Public Types inherited from fcn::Widget | |
| enum class | SelectionMode : uint8_t { None = 0 , Border = 1 , Background = 2 } |
Public Member Functions | |
| virtual void | add (Widget *widget) |
| virtual void | add (Widget *widget, int x, int y) |
| void | addContainerListener (ContainerListener *containerListener) |
| virtual void | addWidget (std::unique_ptr< Widget > widget) |
| virtual void | addWidget (std::unique_ptr< Widget > widget, int x, int y) |
| void | adjustSize () override |
| Container () | |
| Container (Container &&)=delete | |
| Container (Container const &)=delete | |
| void | draw (Graphics *graphics) override |
| void | expandContent () |
| void | expandContent (bool recursion) override |
| Widget * | findWidgetById (std::string const &id) override |
| Widget * | getBackgroundWidget () |
| Widget * | getChild (unsigned int index) const |
| Rectangle | getChildrenArea () override |
| virtual unsigned int | getHorizontalSpacing () const |
| virtual LayoutPolicy | getLayout () const |
| virtual unsigned int | getVerticalSpacing () const |
| bool | isLayouted () override |
| virtual bool | isOpaque () const |
| virtual bool | isUniformSize () const |
| Container & | operator= (Container &&)=delete |
| Container & | operator= (Container const &)=delete |
| void | remove (Widget *widget) override |
| void | removeAllChildren () override |
| void | removeContainerListener (ContainerListener *containerListener) |
| void | resizeToContent () |
| void | resizeToContent (bool recursion) override |
| void | setBackgroundWidget (Widget *widget) |
| virtual void | setHorizontalSpacing (unsigned int spacing) |
| virtual void | setLayout (LayoutPolicy policy) |
| virtual void | setOpaque (bool opaque) |
| virtual void | setUniformSize (bool uniform) |
| virtual void | setVerticalSpacing (unsigned int spacing) |
| Public Member Functions inherited from fcn::Widget | |
| virtual void | _draw (Graphics *graphics) |
| virtual FocusHandler * | _getFocusHandler () |
| virtual std::list< FocusListener * > const & | _getFocusListeners () |
| virtual FocusHandler * | _getInternalFocusHandler () |
| virtual std::list< KeyListener * > const & | _getKeyListeners () |
| virtual std::list< MouseListener * > const & | _getMouseListeners () |
| virtual void | _logic () |
| virtual void | _setFocusHandler (FocusHandler *focusHandler) |
| virtual void | _setParent (Widget *parent) |
| void | adaptLayout () |
| virtual void | adaptLayout (bool top) |
| void | addActionListener (ActionListener *actionListener) |
| void | addDeathListener (DeathListener *deathListener) |
| void | addFocusListener (FocusListener *focusListener) |
| void | addKeyListener (KeyListener *keyListener) |
| void | addMouseListener (MouseListener *mouseListener) |
| void | addWidgetListener (WidgetListener *widgetListener) |
| virtual void | drawBorder (Graphics *graphics) |
| virtual void | drawOutline (Graphics *graphics) |
| virtual void | drawSelectionFrame (Graphics *graphics) |
| void | expandContent () |
| virtual void | focusNext () |
| virtual void | focusPrevious () |
| virtual void | fontChanged () |
| virtual void | getAbsolutePosition (int &x, int &y) const |
| std::string const & | getActionEventId () const |
| Color const & | getBackgroundColor () const |
| Color const & | getBaseColor () const |
| Color const & | getBorderColor () const |
| unsigned int | getBorderSize () const |
| unsigned int | getChildrenCount () const |
| Rectangle const & | getDimension () const |
| Size const & | getFixedSize () const |
| Font * | getFont () const |
| Color const & | getForegroundColor () const |
| int | getHeight () const |
| std::string const & | getId () const |
| void | getLastPosition (int &x, int &y) const |
| int | getMarginBottom () const |
| int | getMarginLeft () const |
| int | getMarginRight () const |
| int | getMarginTop () const |
| Size const & | getMaxSize () const |
| Size const & | getMinSize () const |
| Color const & | getOutlineColor () const |
| unsigned int | getOutlineSize () const |
| unsigned int | getPaddingBottom () const |
| unsigned int | getPaddingLeft () const |
| unsigned int | getPaddingRight () const |
| unsigned int | getPaddingTop () const |
| virtual Widget * | getParent () const |
| Color const & | getSelectionColor () const |
| SelectionMode | getSelectionMode () const |
| virtual Widget * | getTop () const |
| unsigned int | getVisibleChildrenCount () const |
| Widget * | getWidgetAt (int x, int y) |
| virtual Widget * | getWidgetAt (int x, int y, Widget *exclude) |
| std::list< Widget * > | getWidgetsIn (Rectangle const &area) |
| virtual std::list< Widget * > | getWidgetsIn (Rectangle const &area, Widget *ignore) |
| int | getWidth () const |
| int | getX () const |
| int | getY () const |
| bool | isEnabled () const |
| bool | isFixedSize () const |
| bool | isFocusable () const |
| virtual bool | isFocused () const |
| bool | isHorizontalExpand () const |
| bool | isLastPositionSet () const |
| virtual bool | isModalFocusable () const |
| virtual bool | isModalFocused () const |
| virtual bool | isModalMouseInputFocusable () const |
| virtual bool | isModalMouseInputFocused () const |
| bool | isSetVisible () const |
| bool | isTabInEnabled () const |
| bool | isTabOutEnabled () const |
| bool | isVerticalExpand () const |
| bool | isVisible () const |
| virtual void | logic () |
| virtual void | moveToBottom (Widget *widget) |
| virtual void | moveToTop (Widget *widget) |
| Widget & | operator= (Widget &&)=delete |
| Widget & | operator= (Widget const &)=delete |
| virtual void | releaseModalFocus () |
| virtual void | releaseModalMouseInputFocus () |
| void | removeActionListener (ActionListener *actionListener) |
| void | removeDeathListener (DeathListener *deathListener) |
| void | removeFocusListener (FocusListener *focusListener) |
| void | removeKeyListener (KeyListener *keyListener) |
| void | removeMouseListener (MouseListener *mouseListener) |
| void | removeWidgetListener (WidgetListener *widgetListener) |
| virtual void | requestFocus () |
| virtual void | requestModalFocus () |
| virtual void | requestModalMouseInputFocus () |
| virtual void | requestMoveToBottom () |
| virtual void | requestMoveToTop () |
| void | resizeToContent () |
| void | setActionEventId (std::string const &actionEventId) |
| virtual void | setBackgroundColor (Color const &color) |
| virtual void | setBaseColor (Color const &color) |
| virtual void | setBorderColor (Color const &color) |
| void | setBorderSize (unsigned int size) |
| void | setDimension (Rectangle const &dimension) |
| void | setEnabled (bool enabled) |
| void | setFixedSize (Size const &size) |
| void | setFocusable (bool focusable) |
| virtual void | setFont (Font *font) |
| virtual void | setForegroundColor (Color const &color) |
| void | setHeight (int height) |
| void | setHorizontalExpand (bool expand) |
| void | setId (std::string const &id) |
| void | setInternalFocusHandler (FocusHandler *internalFocusHandler) |
| void | setLastPosition (int x, int y) |
| void | setMargin (int margin) |
| void | setMarginBottom (int margin) |
| void | setMarginLeft (int margin) |
| void | setMarginRight (int margin) |
| void | setMarginTop (int margin) |
| void | setMaxSize (Size const &size) |
| void | setMinSize (Size const &size) |
| virtual void | setOutlineColor (Color const &color) |
| void | setOutlineSize (unsigned int size) |
| void | setPadding (unsigned int padding) |
| void | setPaddingBottom (unsigned int padding) |
| void | setPaddingLeft (unsigned int padding) |
| void | setPaddingRight (unsigned int padding) |
| void | setPaddingTop (unsigned int padding) |
| void | setPosition (int x, int y) |
| virtual void | setSelectionColor (Color const &color) |
| virtual void | setSelectionMode (SelectionMode mode) |
| void | setSize (int width, int height) |
| void | setTabInEnabled (bool enabled) |
| void | setTabOutEnabled (bool enabled) |
| void | setVerticalExpand (bool expand) |
| void | setVisible (bool visible) |
| void | setWidth (int width) |
| void | setX (int x) |
| void | setY (int y) |
| virtual void | showPart (Rectangle rectangle) |
| virtual void | showWidgetPart (Widget *widget, Rectangle area) |
| Widget () | |
| Widget (Widget &&)=delete | |
| Widget (Widget const &)=delete | |
Protected Types | |
| using | ContainerListenerIterator = ContainerListenerList::iterator |
| using | ContainerListenerList = std::list<ContainerListener*> |
Protected Member Functions | |
| void | distributeWidgetAddedEvent (Widget *source) |
| void | distributeWidgetRemovedEvent (Widget *source) |
| Protected Member Functions inherited from fcn::Widget | |
| void | add (Widget *widget) |
| void | calculateSize () |
| void | distributeActionEvent () |
| void | distributeAncestorHiddenEvent (Widget *ancestor) |
| void | distributeAncestorMovedEvent (Widget *ancestor) |
| void | distributeAncestorShownEvent (Widget *ancestor) |
| void | distributeHiddenEvent () |
| void | distributeMovedEvent () |
| void | distributeResizedEvent () |
| void | distributeShownEvent () |
| std::list< Widget * > const & | getChildren () const |
| void | resizeToChildren () |
Additional Inherited Members | |
| Static Public Member Functions inherited from fcn::Widget | |
| static DeathListener * | _getGuiDeathListener () |
| static VisibilityEventHandler * | _getVisibilityEventHandler () |
| static void | _setGuiDeathListener (DeathListener *deathListener) |
| static void | _setVisibilityEventHandler (VisibilityEventHandler *visibilityEventHandler) |
| static void | setGlobalFont (Font *font) |
| static bool | widgetExists (Widget const *widget) |
| Static Protected Attributes inherited from fcn::Widget | |
| static DefaultFont | mDefaultFont |
| static Font * | mGlobalFont = nullptr |
| static DeathListener * | mGuiDeathListener = nullptr |
| static VisibilityEventHandler * | mVisibilityEventHandler = nullptr |
| static std::list< Widget * > | mWidgetInstances |
A composite widget capable of holding and managing child widgets.
A widget's position in the container is relative to the container itself and not the screen. A container is the most common widget to use as the Gui's top widget as makes the Gui able to contain more than one widget.
Definition at line 31 of file container.hpp.
|
protected |
Typedef.
Definition at line 317 of file container.hpp.
|
protected |
Typdef.
Definition at line 307 of file container.hpp.
|
strong |
The layout policy of the container.
Definition at line 37 of file container.hpp.
|
default |
Constructor.
A container is opaque as default, if you want a none opaque container call setOpaque(false).
References add(), addContainerListener(), addWidget(), adjustSize(), Container(), draw(), expandContent(), fcn::Widget::expandContent(), findWidgetById(), getChild(), getChildrenArea(), isOpaque(), remove(), removeAllChildren(), removeContainerListener(), resizeToContent(), fcn::Widget::resizeToContent(), setOpaque(), and fcn::Widget::Widget().
Referenced by Container().
|
virtual |
Adds a widget to the container.
| widget | The widget to add. |
Reimplemented in fcn::AdjustingContainer.
Definition at line 66 of file container.cpp.
References fcn::Widget::add(), distributeWidgetAddedEvent(), and fcn::Widget::Widget().
Referenced by fcn::AdjustingContainer::add(), addWidget(), addWidget(), and Container().
|
virtual |
Adds a widget to the container and also specifies the widget's position in the container.
The position is relative to the container and not relative to the screen.
| widget | The widget to add. |
| x | The x coordinate for the widget. |
| y | The y coordinate for the widget. |
Reimplemented in fcn::AdjustingContainer.
Definition at line 82 of file container.cpp.
References fcn::Widget::add(), distributeWidgetAddedEvent(), fcn::Widget::setPosition(), and fcn::Widget::Widget().
| void fcn::Container::addContainerListener | ( | ContainerListener * | containerListener | ) |
Adds a container listener to the container.
When a widget is added or removed an event will be sent to all container listeners of the container
| containerListener | The container listener to add. |
Definition at line 115 of file container.cpp.
References mContainerListeners.
Referenced by Container().
|
virtual |
Adds a widget to the container, transferring ownership.
| widget | The widget to add. |
Definition at line 72 of file container.cpp.
References add(), and fcn::Widget::Widget().
Referenced by Container().
|
virtual |
Adds a widget to the container at position, transferring ownership.
| widget | The widget to add. |
| x | X coordinate. |
| y | Y coordinate. |
Definition at line 89 of file container.cpp.
References add(), and fcn::Widget::Widget().
|
overridevirtual |
Adjust the size of the container after layout computations.
Reimplemented from fcn::Widget.
Reimplemented in fcn::Tab, and fcn::Window.
Definition at line 320 of file container.cpp.
References fcn::Widget::getBorderSize(), fcn::Widget::getHeight(), fcn::Widget::getPaddingBottom(), fcn::Widget::getPaddingLeft(), fcn::Widget::getPaddingRight(), fcn::Widget::getPaddingTop(), fcn::Widget::getWidth(), fcn::Widget::resizeToChildren(), and fcn::Widget::setSize().
Referenced by fcn::Tab::adjustSize(), and Container().
|
protected |
Distributes a widget added container event to all container listeners of the container.
| source | The source widget of the event. |
Definition at line 125 of file container.cpp.
References mContainerListeners, and fcn::Widget::Widget().
|
protected |
Distributes a widget removed container event to all container listeners of the container.
| source | The source widget of the event. |
Definition at line 135 of file container.cpp.
References mContainerListeners, and fcn::Widget::Widget().
Referenced by remove().
|
overridevirtual |
Draws the widget.
The call to draw is initiated by the widget's parent. The graphics object is set up so that all drawing is relative to the widget, i.e coordinate (0,0) is the top left corner of the widget. It is not possible to draw outside of a widget's dimension. If a widget has children, the parent's draw function will always be called before the children's draw functions are called.
NOTE: A widget with children won't draw its children unless the children area given by Widget::getChildrenArea returns a none empty rectangle inside the widgets dimension. The children area is considered relative to the widget's position.
| Graphics & Rendering | A graphics object to draw with. |
Implements fcn::Widget.
Reimplemented in fcn::Tab, and fcn::Window.
Definition at line 22 of file container.cpp.
References fcn::Widget::drawBorder(), fcn::Widget::drawSelectionFrame(), fcn::Graphics::fillRectangle(), fcn::Widget::getBaseColor(), fcn::Widget::getBorderSize(), fcn::Widget::getHeight(), fcn::Widget::getSelectionColor(), fcn::Widget::getSelectionMode(), fcn::Widget::getWidth(), fcn::Widget::isFocused(), isOpaque(), mBackgroundWidget, and fcn::Graphics::setColor().
Referenced by Container().
|
inline |
Expands the child widgets to the size of this widget, calls recursively all childs.
This is a convenience wrapper that calls expandContent(true).
Definition at line 1440 of file widget.hpp.
|
overridevirtual |
Expand children to occupy available space in this container.
| recursion | If true, expand children recursively. |
Reimplemented from fcn::Widget.
Reimplemented in fcn::FlowContainer.
Definition at line 329 of file container.cpp.
References getChildrenArea(), getHorizontalSpacing(), fcn::Widget::getParent(), getVerticalSpacing(), fcn::Rectangle::height, fcn::Widget::isHorizontalExpand(), fcn::Widget::isVerticalExpand(), fcn::Widget::mChildren, mLayout, mUniform, fcn::Math< float >::pi(), fcn::Rectangle::width, fcn::Rectangle::x, and fcn::Rectangle::y.
Referenced by Container().
|
overridevirtual |
Finds a widget given an id.
| id | The id to find a widget by. |
Reimplemented from fcn::Widget.
Definition at line 110 of file container.cpp.
References fcn::Widget::findWidgetById(), and fcn::Widget::Widget().
Referenced by Container().
| Widget * fcn::Container::getBackgroundWidget | ( | ) |
Get the background widget if one is set.
Definition at line 699 of file container.cpp.
References mBackgroundWidget, and fcn::Widget::Widget().
| Widget * fcn::Container::getChild | ( | unsigned int | index | ) | const |
Gets child by index.
| index | Child index. |
Definition at line 145 of file container.cpp.
References fcn::Widget::getChildren(), fcn::Widget::getChildrenCount(), and fcn::Widget::Widget().
Referenced by Container().
|
overridevirtual |
Gets the area of the widget occupied by the widget's children.
By default this method returns an empty rectangle as not all widgets are containers. If you want to make a container this method should return the area where the children resides. This method is used when drawing children of a widget when computing clip rectangles for the children.
NOTE: The returned rectangle should be relative to the widget, i.e a rectangle with x and y coordinate (0,0) and with width and height the same as the widget will let the children draw themselves in the whole widget.
An example of a widget that overloads this method is ScrollArea. A ScrollArea has a view of its constant and that view is the children area. The size of a ScrollArea's children area might vary depending on if the scroll bars of the ScrollArea is shown or not.
Reimplemented from fcn::Widget.
Reimplemented in fcn::Tab, and fcn::Window.
Definition at line 660 of file container.cpp.
References fcn::Widget::getBorderSize(), fcn::Widget::getHeight(), fcn::Widget::getPaddingBottom(), fcn::Widget::getPaddingLeft(), fcn::Widget::getPaddingRight(), fcn::Widget::getPaddingTop(), fcn::Widget::getWidth(), fcn::Rectangle::height, fcn::Rectangle::width, fcn::Rectangle::x, and fcn::Rectangle::y.
Referenced by fcn::FlowContainer::adjustContent(), Container(), expandContent(), and resizeToContent().
|
virtual |
Get the horizontal spacing between rows.
Definition at line 685 of file container.cpp.
References mHorizontalSpacing.
Referenced by fcn::FlowContainer::adjustContent(), expandContent(), and resizeToContent().
|
virtual |
Gets the layout of the container.
Definition at line 645 of file container.cpp.
References mLayout.
Referenced by fcn::TabbedArea::addTab().
|
virtual |
Get the vertical spacing between rows.
Definition at line 675 of file container.cpp.
References mVerticalSpacing.
Referenced by fcn::FlowContainer::adjustContent(), expandContent(), and resizeToContent().
|
inlineoverridevirtual |
Helper function to decide if we need to layout.
Reimplemented from fcn::Widget.
Definition at line 194 of file container.hpp.
References mLayout.
|
virtual |
Checks if the container is opaque or not.
Reimplemented in fcn::Window.
Definition at line 61 of file container.cpp.
References mOpaque.
Referenced by Container(), and draw().
|
virtual |
True if the container tries to expand the childs to a uniform size.
Definition at line 655 of file container.cpp.
References mUniform.
|
overridevirtual |
Removes a widget from the Container.
| widget | The widget to remove. |
| Exception | when the widget has not been added to the container. |
Reimplemented from fcn::Widget.
Definition at line 99 of file container.cpp.
References distributeWidgetRemovedEvent(), fcn::Widget::remove(), and fcn::Widget::Widget().
Referenced by Container(), and fcn::AdjustingContainer::remove().
|
overridevirtual |
Removes all widgets from the the container.
Reimplemented from fcn::Widget.
Definition at line 105 of file container.cpp.
References fcn::Widget::removeAllChildren().
Referenced by Container(), and fcn::AdjustingContainer::removeAllChildren().
| void fcn::Container::removeContainerListener | ( | ContainerListener * | containerListener | ) |
Removes a container listener from the container.
| containerListener | The container listener to remove. |
Definition at line 120 of file container.cpp.
References mContainerListeners.
Referenced by Container().
|
inline |
Resizes the widget's size to fit the content exactly, calls recursively all childs.
This is a convenience wrapper that calls resizeToContent(true).
Definition at line 1417 of file widget.hpp.
Referenced by fcn::AdjustingContainer::resizeToContent().
|
overridevirtual |
Resize this container to fit its children.
| recursion | If true, resize children recursively. |
Reimplemented from fcn::Widget.
Reimplemented in fcn::FlowContainer.
Definition at line 160 of file container.cpp.
References getChildrenArea(), fcn::Widget::getDimension(), getHorizontalSpacing(), getVerticalSpacing(), fcn::Rectangle::height, fcn::Widget::mChildren, mLayout, fcn::Math< float >::pi(), fcn::Widget::setSize(), fcn::Rectangle::width, fcn::Rectangle::x, and fcn::Rectangle::y.
Referenced by Container().
| void fcn::Container::setBackgroundWidget | ( | Widget * | widget | ) |
Set a widget that will be rendered behind other children as the background.
| widget | Background widget (ownership is not transferred). |
Definition at line 690 of file container.cpp.
References mBackgroundWidget, and fcn::Widget::Widget().
|
virtual |
Set the horizontal spacing between columns.
| spacing | spacing in pixels. |
Definition at line 680 of file container.cpp.
References mHorizontalSpacing.
|
virtual |
Sets the layout of the container.
| policy | The LayoutPolicy of the container. |
Reimplemented in fcn::FlowContainer.
Definition at line 640 of file container.cpp.
References mLayout.
Referenced by fcn::TabbedArea::addTab(), and fcn::FlowContainer::setLayout().
|
virtual |
Sets the container to be opaque or not.
If the container is opaque its background will be drawn, if it's not opaque its background will not be drawn, and thus making the container completely transparent.
NOTE: This is not the same as to set visibility. A non visible container will not itself nor will it draw its content.
| opaque | True if the container should be opaque, false otherwise. |
Reimplemented in fcn::Window.
Definition at line 56 of file container.cpp.
References mOpaque.
Referenced by Container().
|
virtual |
If enabled, the free space is distributed in a way that the size of the childrens will be equal (if possible).
Otherwise the free space will evenly distributed.
| uniform | Indicates if uniform size is enabled or not. |
Definition at line 650 of file container.cpp.
References mUniform.
|
virtual |
Set the vertical spacing between rows.
| spacing | spacing in pixels. |
Definition at line 670 of file container.cpp.
References mVerticalSpacing.
|
protected |
Optional widget that is rendered behind other children as the container background.
Definition at line 342 of file container.hpp.
Referenced by draw(), fcn::Window::draw(), getBackgroundWidget(), and setBackgroundWidget().
|
protected |
The container listeners of the container.
Definition at line 312 of file container.hpp.
Referenced by addContainerListener(), distributeWidgetAddedEvent(), distributeWidgetRemovedEvent(), and removeContainerListener().
|
protected |
HorizontalSpacing.
Definition at line 337 of file container.hpp.
Referenced by fcn::AdjustingContainer::adjustContent(), fcn::AdjustingContainer::adjustSize(), getHorizontalSpacing(), and setHorizontalSpacing().
|
protected |
Layout.
Definition at line 322 of file container.hpp.
Referenced by fcn::FlowContainer::adjustContent(), expandContent(), fcn::FlowContainer::expandContent(), getLayout(), isLayouted(), resizeToContent(), fcn::FlowContainer::resizeToContent(), and setLayout().
|
protected |
True if the container is opaque, false otherwise.
Definition at line 302 of file container.hpp.
Referenced by isOpaque(), fcn::Window::isOpaque(), setOpaque(), and fcn::Window::setOpaque().
|
protected |
Indicates if the childs should be expanded to a uniform size.
Definition at line 327 of file container.hpp.
Referenced by expandContent(), isUniformSize(), and setUniformSize().
|
protected |
VerticalSpacing.
Definition at line 332 of file container.hpp.
Referenced by fcn::AdjustingContainer::adjustContent(), fcn::AdjustingContainer::adjustSize(), getVerticalSpacing(), and setVerticalSpacing().