FifeGUI 0.3.0
A C++ GUI library designed for games.
adjustingcontainer.hpp
1// SPDX-License-Identifier: LGPL-2.1-or-later OR BSD-3-Clause
2// SPDX-FileCopyrightText: 2004 - 2008 Olof Naessén and Per Larsson
3// SPDX-FileCopyrightText: 2013 - 2026 Fifengine contributors
4
5#ifndef INCLUDE_FIFECHAN_WIDGETS_ADJUSTINGCONTAINER_HPP_
6#define INCLUDE_FIFECHAN_WIDGETS_ADJUSTINGCONTAINER_HPP_
7
8// Standard library includes
9#include <vector>
10
11// Project headers (subdirs before local)
12#include "fifechan/widgets/container.hpp"
13
14namespace fcn
15{
82 class FIFEGUI_API AdjustingContainer : public Container
83 {
84 public:
92 enum class Alignment : uint8_t
93 {
94 Left = 0,
95 Center,
96 Right
97 };
98
100
101 ~AdjustingContainer() override;
102
103 AdjustingContainer(AdjustingContainer const &) = delete;
104 AdjustingContainer& operator=(AdjustingContainer const &) = delete;
106 AdjustingContainer& operator=(AdjustingContainer&&) = delete;
107
116 virtual void setNumberOfColumns(unsigned int numberOfColumns);
117
125 virtual unsigned int getNumberOfColumns() const;
126
133 virtual void setColumnAlignment(unsigned int column, Alignment alignment);
134
141 Alignment getColumnAlignment(unsigned int column) const;
142
146 virtual void adjustContent();
147
148 // Inherited from Container
149
151
156 void resizeToContent(bool recursion = true) override;
157
158 void adjustSize() override;
159
161
162 void expandContent(bool recursion) override;
163
164 Rectangle getChildrenArea() override;
165
166 // virtual void logic();
167
168 void add(Widget* widget) override;
169
170 void add(Widget* widget, int x, int y) override;
171
172 void remove(Widget* widget) override;
173
174 void removeAllChildren() override;
175
176 protected:
180 std::vector<Widget*> mContainedWidgets;
181
185 std::vector<unsigned int> mColumnWidths;
186
190 std::vector<Alignment> mColumnAlignment;
191
195 std::vector<unsigned int> mRowHeights;
196
200 unsigned int mWidth{0};
201
205 unsigned int mHeight{0};
206
210 unsigned int mNumberOfColumns{1};
211
215 unsigned int mNumberOfRows{1};
216 };
217} // namespace fcn
218
219#endif // INCLUDE_FIFECHAN_WIDGETS_ADJUSTINGCONTAINER_HPP_
Self-adjusting Container class.
unsigned int mNumberOfRows
Number of rows in the layout (derived from children count).
std::vector< Alignment > mColumnAlignment
The alignment of each column.
unsigned int mWidth
Cached container width used during layout.
std::vector< unsigned int > mColumnWidths
Computed width for each column (in pixels).
unsigned int mHeight
Cached container height used during layout.
std::vector< Widget * > mContainedWidgets
The widgets contained in the adjusting container in layout order.
unsigned int mNumberOfColumns
Number of columns in the layout.
Alignment
Possible alignment values for each column.
std::vector< unsigned int > mRowHeights
Computed height for each row (in pixels).
Container()
Constructor.
void resizeToContent(bool recursion=true) override
Resize this container to fit its children.
void expandContent(bool recursion) override
Expand children to occupy available space in this container.
Represents a rectangular area (X, Y, Width, Height).
Definition rectangle.hpp:22
Abstract base class defining the common behavior, properties, and lifecycle of all GUI elements.
Definition widget.hpp:56
Used replacement tokens by configure_file():