102 WWB_PUSHBUTTON = 1 << 7,
146 void ApplyAspectRatio();
165 template <
class NWID>
168 for (NWidgetBase *nwid_parent = this->
parent; nwid_parent !=
nullptr; nwid_parent = nwid_parent->parent) {
169 if (NWID *nwid =
dynamic_cast<NWID *
>(nwid_parent); nwid !=
nullptr)
return nwid;
179 template <
class NWID>
182 for (
const NWidgetBase *nwid_parent = this->
parent; nwid_parent !=
nullptr; nwid_parent = nwid_parent->parent) {
183 if (
const NWID *nwid =
dynamic_cast<const NWID *
>(nwid_parent); nwid !=
nullptr)
return nwid;
215 inline void SetPadding(uint8_t top, uint8_t right, uint8_t bottom, uint8_t left)
240 Rect GetCurrentRect()
const
243 r.left = this->
pos_x;
501class NWidgetContainer :
public NWidgetBase {
506 void Add(std::unique_ptr<NWidgetBase> &&wid);
532 std::vector<std::unique_ptr<NWidgetBase>>
children{};
554class NWidgetStacked :
public NWidgetContainer {
582class NWidgetPIPContainer :
public NWidgetContainer {
610class NWidgetHorizontal :
public NWidgetPIPContainer {
622class NWidgetHorizontalLTR :
public NWidgetHorizontal {
633class NWidgetVertical :
public NWidgetPIPContainer {
651class NWidgetMatrix :
public NWidgetPIPContainer {
677 void GetScrollOffsets(
int &start_x,
int &start_y,
int &base_offs_x,
int &base_offs_y);
704 void Add(std::unique_ptr<NWidgetBase> &&nwid);
705 void SetPIP(uint8_t pip_pre, uint8_t pip_inter, uint8_t pip_post);
706 void SetPIPRatio(uint8_t pip_ratio_pre, uint8_t pip_ratio_inter, uint8_t pip_ratio_post);
719 std::unique_ptr<NWidgetPIPContainer>
child{};
747 using size_type = int32_t;
748 static constexpr size_type max_size_type = std::numeric_limits<size_type>::max();
749 static constexpr size_type npos = max_size_type;
810 return this->is_vertical;
831 assert(num < Scrollbar::max_size_type);
845 assert(capacity < Scrollbar::max_size_type);
861 size_type old_pos = this->pos;
862 this->pos =
Clamp(position, 0, std::max(this->count - this->cap, 0));
863 return this->pos != old_pos;
875 if (difference == 0)
return false;
908 template <
typename Tcontainer>
911 assert(
static_cast<size_t>(this->
GetCount()) == container.size());
912 auto first = std::next(std::begin(container), this->
GetPosition());
914 return std::make_pair(first, last);
927 template <
typename Tcontainer>
930 assert(
static_cast<size_t>(this->
GetCount()) == container.size());
932 if (row == Scrollbar::npos)
return std::end(container);
934 return std::next(std::begin(container), row);
952 static void InvalidateDimensionCache();
954 static Dimension GetHorizontalDimension();
995 if (base >= max_space || step == 0)
return base;
996 if (step == 1)
return max_space;
997 uint increment = max_space - base;
998 increment -= increment % step;
999 return base + increment;
1133 union NWidgetPartUnion {
1147 constexpr NWidgetPartUnion() :
xy() {}
1152 constexpr NWidgetPartUnion(NWidgetPartPIP
pip) :
pip(
pip) {}
1155 constexpr NWidgetPartUnion(NWidgetPartAlignment
align) :
align(
align) {}
1423 return SetPadding(padding, padding, padding, padding);
1517std::unique_ptr<NWidgetBase>
MakeNWidgets(std::span<const NWidgetPart> nwid_parts, std::unique_ptr<NWidgetBase> &&container);
Types related to the graphics and/or input devices.
uint32_t SpriteID
The number of a sprite, without mapping bits and colourtables.
FontSize
Available font sizes.
@ Normal
Index of the normal font in the font tables.
StringAlignment
How to align the to-be drawn text.
@ SA_CENTER
Center both horizontally and vertically.
Colours
One of 16 base colours used for companies and windows/widgets.
TextColour
Colour of the strings, see _string_colourmap in table/string_colours.h or docs/ottd-colourtext-palett...
#define Rect
Macro that prevents name conflicts between included headers.
#define Point
Macro that prevents name conflicts between included headers.
constexpr bool IsInsideBS(const T x, const size_t base, const size_t size)
Checks if a value is between a window started at some base point.
constexpr T Clamp(const T a, const T min, const T max)
Clamp a value between an interval.
constexpr To ClampTo(From value)
Clamp the given value down to lie within the requested type.
Types related to strings.
uint32_t StringID
Numeric value that represents a string, independent of the selected language.
Dimensions (a width and height) of a rectangle in 2D.
Widget part for storing minimal text line data.
uint8_t lines
Number of text lines.
uint8_t spacing
Extra spacing around lines.
FontSize size
Font size of text lines.
Widget part for storing text colour.
TextColour colour
TextColour for DrawString.
FontSize size
Font size of text.
Padding dimensions to apply to each side of a Rect.
Data structure for an opened window.
Types related to windows.
EventState
State of handling an event.
static constexpr WidgetID INVALID_WIDGET
An invalid widget index.
ZoomLevel
All zoom levels we know.