101 WWB_PUSHBUTTON = 1 << 7,
116enum 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;
477 void AdjustPaddingForZoom()
override;
478 void Add(std::unique_ptr<NWidgetBase> &&wid);
490 std::vector<std::unique_ptr<NWidgetBase>>
children;
547 void AdjustPaddingForZoom()
override;
548 void SetPIP(uint8_t pip_pre, uint8_t pip_inter, uint8_t pip_post);
549 void SetPIPRatio(uint8_t pip_ratio_pre, uint8_t pip_ratio_inter, uint8_t pip_rato_post);
638 void GetScrollOffsets(
int &start_x,
int &start_y,
int &base_offs_x,
int &base_offs_y);
666 void Add(std::unique_ptr<NWidgetBase> &&nwid);
667 void SetPIP(uint8_t pip_pre, uint8_t pip_inter, uint8_t pip_post);
668 void SetPIPRatio(uint8_t pip_ratio_pre, uint8_t pip_ratio_inter, uint8_t pip_ratio_post);
670 void AdjustPaddingForZoom()
override;
681 std::unique_ptr<NWidgetPIPContainer>
child;
709 using size_type = int32_t;
710 static constexpr size_type max_size_type = std::numeric_limits<size_type>::max();
711 static constexpr size_type npos = max_size_type;
785 this->stepsize = ClampTo<size_type>(
stepsize);
795 assert(num < Scrollbar::max_size_type);
797 this->count = ClampTo<size_type>(num);
809 assert(capacity < Scrollbar::max_size_type);
811 this->cap = ClampTo<size_type>(capacity);
825 size_type old_pos = this->
pos;
826 this->pos =
Clamp(position, 0, std::max(this->count - this->cap, 0));
827 return this->pos != old_pos;
839 if (difference == 0)
return false;
842 case SS_BIG: difference *= this->
cap;
break;
872 template <
typename Tcontainer>
875 assert(
static_cast<size_t>(this->
GetCount()) == container.size());
876 auto first = std::next(std::begin(container), this->
GetPosition());
878 return std::make_pair(first, last);
891 template <
typename Tcontainer>
894 assert(
static_cast<size_t>(this->
GetCount()) == container.size());
896 if (row == Scrollbar::npos)
return std::end(container);
898 return std::next(std::begin(container), row);
916 static void InvalidateDimensionCache();
918 static Dimension GetHorizontalDimension();
959 if (base >= max_space || step == 0)
return base;
960 if (step == 1)
return max_space;
961 uint increment = max_space - base;
962 increment -= increment % step;
963 return base + increment;
1317 return SetPadding(padding, padding, padding, padding);
1403std::unique_ptr<NWidgetBase>
MakeNWidgets(std::span<const NWidgetPart> nwid_parts, std::unique_ptr<NWidgetBase> &&container);
Helper types related to the allocation of memory.
Functions related to bit mathematics.
debug_inline constexpr bool HasBit(const T x, const uint8_t y)
Checks if a bit in a value is set.
#define CLRBITS(x, y)
Clears several bits in a variable.
#define SETBITS(x, y)
Sets several bits in a variable.
Base class that provides memory initialization on dynamically created objects.
#define DECLARE_ENUM_AS_BIT_SET(enum_type)
Operators to allow to work with enum as with type safe bit set in C++.
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.
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.