100 WWB_PUSHBUTTON = 1 << 7,
115enum class AspectFlag : uint8_t {
139 void ApplyAspectRatio();
140 virtual void AdjustPaddingForZoom();
154 template <
class NWID>
158 if (NWID *nwid =
dynamic_cast<NWID *
>(nwid_parent); nwid !=
nullptr)
return nwid;
168 template <
class NWID>
171 for (
const NWidgetBase *nwid_parent = this->
parent; nwid_parent !=
nullptr; nwid_parent = nwid_parent->
parent) {
172 if (
const NWID *nwid =
dynamic_cast<const NWID *
>(nwid_parent); nwid !=
nullptr)
return nwid;
177 virtual bool IsHighlighted()
const {
return false; }
178 virtual TextColour GetHighlightColour()
const {
return TC_INVALID; }
179 virtual void SetHighlighted([[maybe_unused]]
TextColour highlight_colour) {}
188 inline void SetPadding(uint8_t top, uint8_t right, uint8_t bottom, uint8_t left)
194 this->AdjustPaddingForZoom();
204 this->AdjustPaddingForZoom();
213 Rect GetCurrentRect()
const
216 r.left = this->
pos_x;
298 void AdjustPaddingForZoom()
override;
472 void AdjustPaddingForZoom()
override;
473 void Add(std::unique_ptr<NWidgetBase> &&wid);
485 std::vector<std::unique_ptr<NWidgetBase>>
children{};
538 void AdjustPaddingForZoom()
override;
629 void GetScrollOffsets(
int &start_x,
int &start_y,
int &base_offs_x,
int &base_offs_y);
657 void Add(std::unique_ptr<NWidgetBase> &&nwid);
658 void SetPIP(uint8_t pip_pre, uint8_t pip_inter, uint8_t pip_post);
659 void SetPIPRatio(uint8_t pip_ratio_pre, uint8_t pip_ratio_inter, uint8_t pip_ratio_post);
661 void AdjustPaddingForZoom()
override;
672 std::unique_ptr<NWidgetPIPContainer>
child{};
700 using size_type = int32_t;
701 static constexpr size_type max_size_type = std::numeric_limits<size_type>::max();
702 static constexpr size_type npos = max_size_type;
774 this->stepsize = ClampTo<size_type>(
stepsize);
784 assert(num < Scrollbar::max_size_type);
786 this->count = ClampTo<size_type>(num);
798 assert(capacity < Scrollbar::max_size_type);
800 this->cap = ClampTo<size_type>(capacity);
814 size_type old_pos = this->
pos;
815 this->pos =
Clamp(position, 0, std::max(this->count - this->cap, 0));
816 return this->pos != old_pos;
828 if (difference == 0)
return false;
831 case SS_BIG: difference *= this->
cap;
break;
861 template <
typename Tcontainer>
864 assert(
static_cast<size_t>(this->
GetCount()) == container.size());
865 auto first = std::next(std::begin(container), this->
GetPosition());
867 return std::make_pair(first, last);
880 template <
typename Tcontainer>
883 assert(
static_cast<size_t>(this->
GetCount()) == container.size());
885 if (row == Scrollbar::npos)
return std::end(container);
887 return std::next(std::begin(container), row);
905 static void InvalidateDimensionCache();
907 static Dimension GetHorizontalDimension();
948 if (base >= max_space || step == 0)
return base;
949 if (step == 1)
return max_space;
950 uint increment = max_space - base;
951 increment -= increment % step;
952 return base + increment;
1308 return SetPadding(padding, padding, padding, padding);
1394std::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 & Set()
Set all bits.
constexpr Timpl & Reset(Tvalue_type value)
Reset the value-th bit.
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.