|
FifeGUI 0.3.0
A C++ GUI library designed for games.
|
#include <adjustingcontainer.hpp>
Public Types | |
| enum class | Alignment : uint8_t { Left = 0 , Center , Right } |
| Public Types inherited from fcn::Container | |
| enum class | LayoutPolicy : uint8_t { Absolute = 0 , AutoSize , Vertical , Horizontal , Circular } |
| Public Types inherited from fcn::Widget | |
| enum | BorderSide : uint8_t { BORDER_NONE = 0 , BORDER_LEFT = 1 << 0 , BORDER_TOP = 1 << 1 , BORDER_RIGHT = 1 << 2 , BORDER_BOTTOM = 1 << 3 , BORDER_ALL = BORDER_LEFT | BORDER_TOP | BORDER_RIGHT | BORDER_BOTTOM } |
| enum | BorderStyle : uint8_t { BORDER_STYLE_BEVEL = 0 , BORDER_STYLE_FLAT = 1 } |
| enum class | SelectionMode : uint8_t { None = 0 , Border = 1 , Background = 2 } |
Public Member Functions | |
| void | add (Widget *widget) override |
| void | add (Widget *widget, int x, int y) override |
| virtual void | adjustContent () |
| AdjustingContainer (AdjustingContainer &&)=delete | |
| AdjustingContainer (AdjustingContainer const &)=delete | |
| void | adjustSize () override |
| void | expandContent (bool recursion) override |
| Rectangle | getChildrenArea () override |
| Alignment | getColumnAlignment (unsigned int column) const |
| virtual unsigned int | getNumberOfColumns () const |
| AdjustingContainer & | operator= (AdjustingContainer &&)=delete |
| AdjustingContainer & | operator= (AdjustingContainer const &)=delete |
| void | remove (Widget *widget) override |
| void | removeAllChildren () override |
| void | resizeToContent (bool recursion=true) override |
| virtual void | setColumnAlignment (unsigned int column, Alignment alignment) |
| virtual void | setNumberOfColumns (unsigned int numberOfColumns) |
| Public Member Functions inherited from fcn::Container | |
| 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 (bool recursion=true) override |
| void | setBackgroundWidget (Widget *widget) |
| virtual void | setHorizontalSpacing (unsigned int spacing) |
| virtual void | setLayout (LayoutPolicy policy) |
| virtual void | setOpacity (float opacity) |
| 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 | addDropTargetListener (DropTargetListener *listener) |
| void | addFocusListener (FocusListener *focusListener) |
| void | addKeyListener (KeyListener *keyListener) |
| void | addMouseListener (MouseListener *mouseListener) |
| void | addWidgetListener (WidgetListener *widgetListener) |
| bool | captureMouse () |
| bool | contains (int x, int y) const |
| virtual void | drawBorder (Graphics *graphics) |
| void | drawBorder (Graphics *graphics, unsigned int sides) const |
| 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 | getBorderSides () const |
| unsigned int | getBorderSize () const |
| unsigned int | getBorderStyle () 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 | hasMouseCapture () const |
| bool | isDescendantOf (Widget const *ancestor) const noexcept |
| bool | isEnabled () const |
| bool | isFixedSize () const |
| bool | isFocusable () const |
| virtual bool | isFocused () const |
| bool | isHorizontalExpand () const |
| bool | isInsideActiveMouseModal () const noexcept |
| bool | isLastPositionSet () const |
| virtual bool | isModalFocusable () const |
| virtual bool | isModalFocused () const |
| virtual bool | isModalMouseInputFocusable () const |
| bool | isMouseInside (MouseEvent const &mouseEvent) const |
| bool | isSetVisible () const |
| bool | isTabInEnabled () const |
| bool | isTabOutEnabled () const |
| virtual bool | isUnderMouseModal () const |
| bool | isVerticalExpand () const |
| bool | isVisible () const |
| virtual void | logic () |
| virtual void | moveToBottom (Widget *widget) |
| virtual void | moveToTop (Widget *widget) |
| virtual void | onFocusChanged () |
| virtual void | onFocusGained () |
| virtual void | onFocusLost () |
| Widget & | operator= (Widget &&)=delete |
| Widget & | operator= (Widget const &)=delete |
| void | releaseMouse () |
| void | removeActionListener (ActionListener *actionListener) |
| void | removeDeathListener (DeathListener *deathListener) |
| void | removeDropTargetListener (DropTargetListener *listener) |
| void | removeFocusListener (FocusListener *focusListener) |
| void | removeKeyListener (KeyListener *keyListener) |
| void | removeMouseListener (MouseListener *mouseListener) |
| void | removeWidgetListener (WidgetListener *widgetListener) |
| virtual void | requestFocus () |
| virtual void | requestMoveToBottom () |
| virtual void | requestMoveToTop () |
| void | setActionEventId (std::string const &actionEventId) |
| virtual void | setBackgroundColor (Color const &color) |
| virtual void | setBaseColor (Color const &color) |
| void | setBorderBottom (unsigned int size, unsigned int style) |
| virtual void | setBorderColor (Color const &color) |
| void | setBorderSides (unsigned int sides) |
| void | setBorderSize (unsigned int size) |
| void | setBorderStyle (unsigned int style) |
| void | setBorderTop (unsigned int size, unsigned int style) |
| virtual void | setDimension (Rectangle const &dimension) |
| void | setEnabled (bool enabled) |
| void | setFixedSize (Size const &size) |
| void | setFocusable (bool focusable) |
| virtual void | setFocused (bool focused) |
| virtual void | setFont (Font *font) |
| virtual void | setForegroundColor (Color const &color) |
| virtual 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) |
| virtual void | setSize (int width, int height) |
| void | setTabInEnabled (bool enabled) |
| void | setTabOutEnabled (bool enabled) |
| void | setVerticalExpand (bool expand) |
| void | setVisible (bool visible) |
| virtual void | setWidth (int width) |
| void | setX (int x) |
| void | setY (int y) |
| virtual void | showPart (Rectangle rectangle) |
| virtual void | showWidgetPart (Widget *widget, Rectangle area) |
| virtual void | textInput (TextInputEvent &event) |
| Widget () | |
| Widget (Widget &&)=delete | |
| Widget (Widget const &)=delete | |
Protected Attributes | |
| std::vector< Alignment > | mColumnAlignment |
| std::vector< unsigned int > | mColumnWidths |
| std::vector< Widget * > | mContainedWidgets |
| unsigned int | mHeight {0} |
| unsigned int | mNumberOfColumns {1} |
| unsigned int | mNumberOfRows {1} |
| std::vector< unsigned int > | mRowHeights |
| unsigned int | mWidth {0} |
| Protected Attributes inherited from fcn::Container | |
| Widget * | mBackgroundWidget {nullptr} |
| ContainerListenerList | mContainerListeners |
| unsigned int | mHorizontalSpacing {2} |
| LayoutPolicy | mLayout {LayoutPolicy::Absolute} |
| float | mOpacity {1.0F} |
| bool | mOpaque {true} |
| bool | mUniform {false} |
| unsigned int | mVerticalSpacing {2} |
| Protected Attributes inherited from fcn::Widget | |
| std::string | mActionEventId |
| std::list< ActionListener * > | mActionListeners |
| Color | mBackgroundColor {0xf9fafb} |
| Color | mBaseColor {0xe5e7eb} |
| Color | mBorderColor {0xd1d5db} |
| unsigned int | mBorderSides {BORDER_ALL} |
| unsigned int | mBorderSize {0} |
| unsigned int | mBorderStyle {BORDER_STYLE_FLAT} |
| std::list< Widget * > | mChildren |
| Font * | mCurrentFont {nullptr} |
| std::list< DeathListener * > | mDeathListeners |
| Rectangle | mDimension |
| std::list< DropTargetListener * > | mDropTargetListeners |
| bool | mEnabled {true} |
| Size | mFixedSize {-1, -1} |
| bool | mFixedSizeUsed {false} |
| bool | mFocusable {false} |
| bool | mFocused {false} |
| FocusHandler * | mFocusHandler {nullptr} |
| std::list< FocusListener * > | mFocusListeners |
| Color | mForegroundColor {0x1f2933} |
| bool | mHExpand {false} |
| std::string | mId |
| FocusHandler * | mInternalFocusHandler {nullptr} |
| std::list< KeyListener * > | mKeyListeners |
| int | mLastX {0} |
| int | mLastY {0} |
| int | mMarginBottom {0} |
| int | mMarginLeft {0} |
| int | mMarginRight {0} |
| int | mMarginTop {0} |
| Size | mMaxSize {std::numeric_limits<int>::max(), std::numeric_limits<int>::max()} |
| Size | mMinSize {0, 0} |
| std::list< MouseListener * > | mMouseListeners |
| Rectangle | mOffsetRect |
| Color | mOutlineColor {0x9ca3af} |
| unsigned int | mOutlineSize {0} |
| unsigned int | mPaddingBottom {0} |
| unsigned int | mPaddingLeft {0} |
| unsigned int | mPaddingRight {0} |
| unsigned int | mPaddingTop {0} |
| Widget * | mParent {nullptr} |
| Color | mSelectionColor {0x3b82f6} |
| SelectionMode | mSelectionMode {SelectionMode::None} |
| bool | mTabIn {true} |
| bool | mTabOut {true} |
| bool | mVExpand {false} |
| bool | mVisible {true} |
| std::list< WidgetListener * > | mWidgetListeners |
Self-adjusting Container class.
AdjustingContainers are an easy way to have the GUI position a group of widgets for you. It organizes elements in a table layout with fixed columns and variable rows.
The user specifies
* <ul> * <li>the number of columns</li> * <li>horizontal spacing between columns</li> * <li>vertical spacing between rows</li> * <li>padding around the sides of the container</li> * <li>each column's alignment</li> * </ul> *
These properties give the user a lot of flexibility to make the widgets look just right.
Output:
* <pre> *+---------------------------------------------------------------------------+ *| | *| A longer phrase Short Super long and wordy text | *| | *| Short Super long and wordy text Short | *| | *| Short A longer phrase A longer phrase | *| | *+---------------------------------------------------------------------------+ * </pre> *
As you can see, each column is only as big as its largest element. The AdjustingContainer will resize itself and rearrange its contents based on whatever widgets it contains, allowing dynamic addition and removal while the program is running. It also plays nicely with ScrollAreas, allowing you to show a fixed, maximum size while not limiting the actual container.
Definition at line 82 of file adjustingcontainer.hpp.
|
strong |
Possible alignment values for each column.
LEFT - Align content to the left of the column. MIDDLE - Align content to the middle of the column. RIGHT - Align content to the right of the column.
Definition at line 92 of file adjustingcontainer.hpp.
| fcn::AdjustingContainer::AdjustingContainer | ( | ) |
Definition at line 19 of file adjustingcontainer.cpp.
|
overridevirtual |
Adds a widget to the container.
| widget | The widget to add. |
Reimplemented from fcn::Container.
Definition at line 92 of file adjustingcontainer.cpp.
References fcn::Container::add(), and mContainedWidgets.
Referenced by add().
|
overridevirtual |
Adds a widget to the container at a given position.
The position is relative to the container (not the screen).
| widget | The widget to add. |
| x | The x coordinate for the widget. |
| y | The y coordinate for the widget. |
Reimplemented from fcn::Container.
Definition at line 98 of file adjustingcontainer.cpp.
References add().
|
virtual |
Rearrange the widgets and resize the container.
Definition at line 173 of file adjustingcontainer.cpp.
References adjustSize(), mColumnAlignment, mColumnWidths, mContainedWidgets, fcn::Container::mHorizontalSpacing, mNumberOfColumns, fcn::Widget::mPaddingLeft, fcn::Widget::mPaddingTop, mRowHeights, fcn::Container::mVerticalSpacing, and fcn::throwException().
Referenced by resizeToContent().
|
overridevirtual |
Resizes the widget's size to fit the content exactly.
Reimplemented from fcn::Widget.
Definition at line 121 of file adjustingcontainer.cpp.
References fcn::Widget::getBorderSize(), mColumnWidths, mContainedWidgets, mHeight, fcn::Container::mHorizontalSpacing, mNumberOfColumns, mNumberOfRows, fcn::Widget::mPaddingBottom, fcn::Widget::mPaddingLeft, fcn::Widget::mPaddingRight, fcn::Widget::mPaddingTop, mRowHeights, fcn::Container::mVerticalSpacing, mWidth, fcn::Widget::setHeight(), and fcn::Widget::setWidth().
Referenced by adjustContent().
|
overridevirtual |
Expands child widgets to fit this widget's size.
| recursion | If true, call expandContent recursively on children. |
Reimplemented from fcn::Widget.
Definition at line 72 of file adjustingcontainer.cpp.
|
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.
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.
Definition at line 76 of file adjustingcontainer.cpp.
References fcn::Widget::getBorderSize(), fcn::Widget::getHeight(), fcn::Widget::getWidth(), fcn::Rectangle::height, fcn::Rectangle::width, fcn::Rectangle::x, and fcn::Rectangle::y.
| AdjustingContainer::Alignment fcn::AdjustingContainer::getColumnAlignment | ( | unsigned int | column | ) | const |
Get a specific column's alignment.
| column | the column number, starting from 0. |
Definition at line 58 of file adjustingcontainer.cpp.
References mColumnAlignment.
|
virtual |
Get the number of columns the widget is divided.
The number of rows is derived automatically from the number of widgets based on the number of columns.
Definition at line 47 of file adjustingcontainer.cpp.
References mNumberOfColumns.
|
overridevirtual |
Removes a specific child from the widget.
THIS METHOD IS NOT SAFE TO CALL INSIDE A WIDGETS LOGIC FUNCTION INSIDE ANY LISTER FUNCTIONS!
| widget | The widget to remove. |
Reimplemented from fcn::Widget.
Definition at line 109 of file adjustingcontainer.cpp.
References mContainedWidgets, and fcn::Container::remove().
|
overridevirtual |
Remvoes all children from the widget.
THIS METHOD IS NOT SAFE TO CALL INSIDE A WIDGETS LOGIC FUNCTION INSIDE ANY LISTER FUNCTIONS!
Reimplemented from fcn::Widget.
Definition at line 103 of file adjustingcontainer.cpp.
References mContainedWidgets, and fcn::Container::removeAllChildren().
|
overridevirtual |
Resize the adjusting container to fit its children.
| recursion | If true, propagate resize to child containers. |
Reimplemented from fcn::Widget.
Definition at line 66 of file adjustingcontainer.cpp.
References adjustContent(), and fcn::Container::resizeToContent().
|
virtual |
Set a specific column's alignment.
| column | the column number, starting from 0. |
| alignment | the column's alignment. See enum with alignments. |
Definition at line 52 of file adjustingcontainer.cpp.
References mColumnAlignment.
|
virtual |
Set the number of columns to divide the widgets into.
The number of rows is derived automatically from the number of widgets based on the number of columns. Default column alignment is left.
| numberOfColumns | the number of columns. |
Definition at line 31 of file adjustingcontainer.cpp.
References mColumnAlignment, and mNumberOfColumns.
|
protected |
The alignment of each column.
Definition at line 190 of file adjustingcontainer.hpp.
Referenced by adjustContent(), getColumnAlignment(), setColumnAlignment(), and setNumberOfColumns().
|
protected |
Computed width for each column (in pixels).
Definition at line 185 of file adjustingcontainer.hpp.
Referenced by adjustContent(), and adjustSize().
|
protected |
The widgets contained in the adjusting container in layout order.
Definition at line 180 of file adjustingcontainer.hpp.
Referenced by add(), adjustContent(), adjustSize(), remove(), and removeAllChildren().
|
protected |
Cached container height used during layout.
Definition at line 205 of file adjustingcontainer.hpp.
Referenced by adjustSize().
|
protected |
Number of columns in the layout.
Definition at line 210 of file adjustingcontainer.hpp.
Referenced by adjustContent(), adjustSize(), getNumberOfColumns(), and setNumberOfColumns().
|
protected |
Number of rows in the layout (derived from children count).
Definition at line 215 of file adjustingcontainer.hpp.
Referenced by adjustSize().
|
protected |
Computed height for each row (in pixels).
Definition at line 195 of file adjustingcontainer.hpp.
Referenced by adjustContent(), and adjustSize().
|
protected |
Cached container width used during layout.
Definition at line 200 of file adjustingcontainer.hpp.
Referenced by adjustSize().