102 WWB_PUSHBUTTON = 1 << 7,
118enum class AspectFlag : uint8_t {
142 void ApplyAspectRatio();
143 virtual void AdjustPaddingForZoom();
157 template <
class NWID>
161 if (NWID *nwid =
dynamic_cast<NWID *
>(nwid_parent); nwid !=
nullptr)
return nwid;
171 template <
class NWID>
174 for (
const NWidgetBase *nwid_parent = this->
parent; nwid_parent !=
nullptr; nwid_parent = nwid_parent->
parent) {
175 if (
const NWID *nwid =
dynamic_cast<const NWID *
>(nwid_parent); nwid !=
nullptr)
return nwid;
181 virtual bool IsHighlighted()
const {
return false; }
182 virtual TextColour GetHighlightColour()
const {
return TC_INVALID; }
183 virtual void SetHighlighted([[maybe_unused]]
TextColour highlight_colour) {}
192 inline void SetPadding(uint8_t top, uint8_t right, uint8_t bottom, uint8_t left)
198 this->AdjustPaddingForZoom();
192 inline void SetPadding(uint8_t top, uint8_t right, uint8_t bottom, uint8_t left) {
…}
208 this->AdjustPaddingForZoom();
217 Rect GetCurrentRect()
const
220 r.left = this->
pos_x;
304 void AdjustPaddingForZoom()
override;
361 Colours alternate_colour = INVALID_COLOUR;
476 void AdjustPaddingForZoom()
override;
477 void Add(std::unique_ptr<NWidgetBase> &&wid);
487 void Clear() { this->
children.clear(); }
490 std::vector<std::unique_ptr<NWidgetBase>>
children{};
542 void AdjustPaddingForZoom()
override;
631 void GetScrollOffsets(
int &start_x,
int &start_y,
int &base_offs_x,
int &base_offs_y);
658 void Add(std::unique_ptr<NWidgetBase> &&nwid);
659 void SetPIP(uint8_t pip_pre, uint8_t pip_inter, uint8_t pip_post);
660 void SetPIPRatio(uint8_t pip_ratio_pre, uint8_t pip_ratio_inter, uint8_t pip_ratio_post);
662 void AdjustPaddingForZoom()
override;
673 std::unique_ptr<NWidgetPIPContainer>
child{};
701 using size_type = int32_t;
702 static constexpr size_type max_size_type = std::numeric_limits<size_type>::max();
703 static constexpr size_type npos = max_size_type;
775 this->stepsize = ClampTo<size_type>(
stepsize);
785 assert(num < Scrollbar::max_size_type);
787 this->count = ClampTo<size_type>(num);
799 assert(capacity < Scrollbar::max_size_type);
801 this->cap = ClampTo<size_type>(capacity);
815 size_type old_pos = this->
pos;
816 this->pos =
Clamp(position, 0, std::max(this->count - this->cap, 0));
817 return this->pos != old_pos;
829 if (difference == 0)
return false;
832 case SS_BIG: difference *= this->
cap;
break;
862 template <
typename Tcontainer>
865 assert(
static_cast<size_t>(this->
GetCount()) == container.size());
866 auto first = std::next(std::begin(container), this->
GetPosition());
868 return std::make_pair(first, last);
881 template <
typename Tcontainer>
884 assert(
static_cast<size_t>(this->
GetCount()) == container.size());
886 if (row == Scrollbar::npos)
return std::end(container);
888 return std::next(std::begin(container), row);
906 static void InvalidateDimensionCache();
908 static Dimension GetHorizontalDimension();
949 if (base >= max_space || step == 0)
return base;
950 if (step == 1)
return max_space;
951 uint increment = max_space - base;
952 increment -= increment % step;
953 return base + increment;
1356 return SetPadding(padding, padding, padding, padding);
1442std::unique_ptr<NWidgetBase>
MakeNWidgets(std::span<const NWidgetPart> nwid_parts, std::unique_ptr<NWidgetBase> &&container);
Functions related to bit mathematics.
constexpr bool Test(Tvalue_type value) const
Test if the value-th bit is set.
constexpr Timpl & Reset()
Reset all bits.
constexpr Timpl & Set()
Set all bits.
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.
@ FS_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.
TextColour
Colour of the strings, see _string_colourmap in table/string_colours.h or docs/ottd-colourtext-palett...
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.
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.
Coordinates of a point in 2D.
Padding dimensions to apply to each side of a Rect.
Specification of a rectangle with absolute coordinates of all edges.
Data structure for an opened window.
Types related to windows.
EventState
State of handling an event.
ZoomLevel
All zoom levels we know.