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;
180 virtual bool IsHighlighted()
const {
return false; }
181 virtual TextColour GetHighlightColour()
const {
return TC_INVALID; }
182 virtual void SetHighlighted([[maybe_unused]]
TextColour highlight_colour) {}
191 inline void SetPadding(uint8_t top, uint8_t right, uint8_t bottom, uint8_t left)
197 this->AdjustPaddingForZoom();
191 inline void SetPadding(uint8_t top, uint8_t right, uint8_t bottom, uint8_t left) {
…}
207 this->AdjustPaddingForZoom();
216 Rect GetCurrentRect()
const
219 r.left = this->
pos_x;
301 void AdjustPaddingForZoom()
override;
358 Colours alternate_colour = INVALID_COLOUR;
476 void AdjustPaddingForZoom()
override;
477 void Add(std::unique_ptr<NWidgetBase> &&wid);
489 std::vector<std::unique_ptr<NWidgetBase>>
children{};
542 void AdjustPaddingForZoom()
override;
633 void GetScrollOffsets(
int &start_x,
int &start_y,
int &base_offs_x,
int &base_offs_y);
661 void Add(std::unique_ptr<NWidgetBase> &&nwid);
662 void SetPIP(uint8_t pip_pre, uint8_t pip_inter, uint8_t pip_post);
663 void SetPIPRatio(uint8_t pip_ratio_pre, uint8_t pip_ratio_inter, uint8_t pip_ratio_post);
665 void AdjustPaddingForZoom()
override;
676 std::unique_ptr<NWidgetPIPContainer>
child{};
704 using size_type = int32_t;
705 static constexpr size_type max_size_type = std::numeric_limits<size_type>::max();
706 static constexpr size_type npos = max_size_type;
778 this->stepsize = ClampTo<size_type>(
stepsize);
788 assert(num < Scrollbar::max_size_type);
790 this->count = ClampTo<size_type>(num);
802 assert(capacity < Scrollbar::max_size_type);
804 this->cap = ClampTo<size_type>(capacity);
818 size_type old_pos = this->
pos;
819 this->pos =
Clamp(position, 0, std::max(this->count - this->cap, 0));
820 return this->pos != old_pos;
832 if (difference == 0)
return false;
835 case SS_BIG: difference *= this->
cap;
break;
865 template <
typename Tcontainer>
868 assert(
static_cast<size_t>(this->
GetCount()) == container.size());
869 auto first = std::next(std::begin(container), this->
GetPosition());
871 return std::make_pair(first, last);
884 template <
typename Tcontainer>
887 assert(
static_cast<size_t>(this->
GetCount()) == container.size());
889 if (row == Scrollbar::npos)
return std::end(container);
891 return std::next(std::begin(container), row);
909 static void InvalidateDimensionCache();
911 static Dimension GetHorizontalDimension();
952 if (base >= max_space || step == 0)
return base;
953 if (step == 1)
return max_space;
954 uint increment = max_space - base;
955 increment -= increment % step;
956 return base + increment;
1335 return SetPadding(padding, padding, padding, padding);
1421std::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.