OpenTTD Source: NWidgetCore Class Reference

OpenTTD Source 15.3

Public Member Functions | Data Fields | Protected Attributes | Friends
NWidgetCore Class Reference
Hierarchical widgets

Base class for a 'real' widget. More...

`#include <widget_type.h>`

Inheritance diagram for NWidgetCore:

## Public Member Functions
| NWidgetCore (WidgetType tp, Colours colour, WidgetID index, uint fill_x, uint fill_y, const WidgetData &widget_data, StringID tool_tip)
| Initialization of a 'real' widget.
void | SetString (StringID string)
| Set string of the nested widget.
void | SetStringTip (StringID string, StringID tool_tip)
| Set string and tool tip of the nested widget.
void | SetSprite (SpriteID sprite)
| Set sprite of the nested widget.
void | SetSpriteTip (SpriteID sprite, StringID tool_tip)
| Set sprite and tool tip of the nested widget.
void | SetMatrixDimension (uint32_t columns, uint32_t rows)
| Set the matrix dimension.
void | SetResizeWidgetType (ResizeWidgetValues type)
| Set the resize widget type of the nested widget.
void | SetToolTip (StringID tool_tip)
| Set the tool tip of the nested widget.
StringID | GetToolTip () const
| Get the tool tip of the nested widget.
void | SetTextStyle (TextColour colour, FontSize size)
| Set the text style of the nested widget.
void | SetAlignment (StringAlignment align)
| Set the text/image alignment of the nested widget.
StringID | GetString () const
| Get the string that has been set for this nested widget.
WidgetID | GetScrollbarIndex () const
| Get the `WidgetID` of this nested widget's scrollbar.
void | SetLowered (bool lowered)
| Lower or raise the widget.
bool | IsLowered () const
| Return whether the widget is lowered.
void | SetDisabled (bool disabled)
| Disable (grey-out) or enable the widget.
bool | IsDisabled () const
| Return whether the widget is disabled.
TextColour | GetTextColour () const
FontSize | GetFontSize () const
NWidgetCore * | GetWidgetFromPos (int x, int y) override
| Retrieve a widget by its position.
bool | IsHighlighted () const override
| Return whether the widget is highlighted.
TextColour | GetHighlightColour () const override
| Return the colour of the highlight.
void | SetHighlighted (TextColour highlight_colour) override
| Highlight the widget or not.
Public Member Functions inherited from NWidgetResizeBase
| NWidgetResizeBase (WidgetType tp, WidgetID index, uint fill_x, uint fill_y)
| Constructor for resizable nested widgets.
void | AdjustPaddingForZoom () override
void | SetMinimalSize (uint min_x, uint min_y)
| Set minimal size of the widget.
void | SetMinimalSizeAbsolute (uint min_x, uint min_y)
| Set absolute (post-scaling) minimal size of the widget.
void | SetMinimalTextLines (uint8_t min_lines, uint8_t spacing, FontSize size)
| Set minimal text lines for the widget.
void | SetToolbarMinimalSize (uint8_t toolbar_size)
| Set minimal size of the widget in toolbar-icon-relative width.
void | SetFill (uint fill_x, uint fill_y)
| Set the filling of the widget from initial size.
void | SetResize (uint resize_x, uint resize_y)
| Set resize step of the widget.
void | SetAspect (float ratio, AspectFlags flags=AspectFlag::ResizeX)
| Set desired aspect ratio of this widget.
void | SetAspect (int x_ratio, int y_ratio, AspectFlags flags=AspectFlag::ResizeX)
| Set desired aspect ratio of this widget, in terms of horizontal and vertical dimensions.
bool | UpdateMultilineWidgetSize (const std::string &str, int max_lines)
| Try to set optimum widget size for a multiline text widget.
bool | UpdateSize (uint min_x, uint min_y)
| Set absolute (post-scaling) minimal size of the widget.
bool | UpdateVerticalSize (uint min_y)
| Set absolute (post-scaling) minimal size of the widget.
void | AssignSizePosition (SizingType sizing, int x, int y, uint given_width, uint given_height, bool rtl) override
| Assign size and position to the widget.
Public Member Functions inherited from NWidgetBase
| NWidgetBase (WidgetType tp, WidgetID index=INVALID_WIDGET)
void | ApplyAspectRatio ()
virtual void | SetupSmallestSize (Window *w)=0
| Compute smallest size needed by the widget.
virtual void | FillWidgetLookup (WidgetLookup &widget_lookup)
| Fill the Window::widget_lookup with pointers to nested widgets in the tree.
virtual NWidgetBase * | GetWidgetOfType (WidgetType tp)
| Retrieve a widget by its type.
template<class NWID >
NWID * | GetParentWidget ()
| Get parent widget of type NWID.
template<class NWID >
const NWID * | GetParentWidget () const
| Get parent widget of type NWID.
WidgetID | GetIndex () const
void | SetPadding (uint8_t top, uint8_t right, uint8_t bottom, uint8_t left)
| Set additional space (padding) around the widget.
void | SetPadding (const RectPadding &padding)
| Set additional space (padding) around the widget.
uint | GetHorizontalStepSize (SizingType sizing) const
| Get the horizontal sizing step.
uint | GetVerticalStepSize (SizingType sizing) const
| Get the vertical sizing step.
virtual void | Draw (const Window *w)=0
| Draw the widgets of the tree.
virtual void | SetDirty (const Window *w) const
| Mark the widget as 'dirty' (in need of repaint).
Rect | GetCurrentRect () const

## Data Fields
NWidgetDisplayFlags | disp_flags
| Flags that affect display and interaction with the widget.
Colours | colour
| Colour of this widget.
Data Fields inherited from NWidgetResizeBase
uint | min_x = 0
| Minimal horizontal size of only this widget.
uint | min_y = 0
| Minimal vertical size of only this widget.
bool | absolute = false
| Set if minimum size is fixed and should not be resized.
uint | uz_min_x = 0
| Unscaled Minimal horizontal size of only this widget.
uint | uz_min_y = 0
| Unscaled Minimal vertical size of only this widget.
uint8_t | uz_text_lines = 0
| 'Unscaled' text lines, stored for resize calculation.
uint8_t | uz_text_spacing = 0
| 'Unscaled' text padding, stored for resize calculation.
FontSize | uz_text_size {}
| 'Unscaled' font size, stored for resize calculation.
uint8_t | toolbar_size = 0
| Minimal size in terms of toolbar images.
Data Fields inherited from NWidgetBase
WidgetType | type {}
| Type of the widget / nested widget.
uint | fill_x = 0
| Horizontal fill stepsize (from initial size, `0` means not resizable).
uint | fill_y = 0
| Vertical fill stepsize (from initial size, `0` means not resizable).
uint | resize_x = 0
| Horizontal resize step (`0` means not resizable).
uint | resize_y = 0
| Vertical resize step (`0` means not resizable).
uint | smallest_x = 0
| Smallest horizontal size of the widget in a filled window.
uint | smallest_y = 0
| Smallest vertical size of the widget in a filled window.
uint | current_x = 0
| Current horizontal size (after resizing).
uint | current_y = 0
| Current vertical size (after resizing).
float | aspect_ratio = 0
| Desired aspect ratio of widget.
AspectFlags | aspect_flags = AspectFlag::ResizeX
| Which dimensions can be resized.
int | pos_x = 0
| Horizontal position of top-left corner of the widget in the window.
int | pos_y = 0
| Vertical position of top-left corner of the widget in the window.
RectPadding | padding {}
| Padding added to the widget. Managed by parent container widget. (parent container may swap left and right for RTL)
RectPadding | uz_padding {}
| Unscaled padding, for resize calculation.
NWidgetBase * | parent = nullptr
| Parent widget of this widget, automatically filled in when added to container.

## Protected Attributes
WidgetData | widget_data {}
| Data of the widget.
StringID | tool_tip {}
| Tooltip of the widget.
WidgetID | scrollbar_index = INVALID_WIDGET
| Index of an attached scrollbar.
TextColour | highlight_colour {}
| Colour of highlight.
TextColour | text_colour {}
| Colour of text within widget.
FontSize | text_size = FS_NORMAL
| Size of text within widget.
StringAlignment | align = SA_CENTER
| Alignment of text/image within widget.
Protected Attributes inherited from NWidgetBase
const WidgetID | index = INVALID_WIDGET
| Index of the nested widget (`INVALID_WIDGET` means 'not used').

## Friends
void | ApplyNWidgetPartAttribute (const struct NWidgetPart &nwid, NWidgetBase *dest)

## Additional Inherited Members
Protected Member Functions inherited from NWidgetBase
void | StoreSizePosition (SizingType sizing, int x, int y, uint given_width, uint given_height)
| Store size and position.

## Detailed Description

Base class for a 'real' widget.

Definition at line 371 of file widget_type.h.

## Constructor & Destructor Documentation

## ◆ NWidgetCore()

NWidgetCore::NWidgetCore | ( | WidgetType | tp,
|  | Colours | colour,
|  | WidgetID | index,
|  | uint | fill_x,
|  | uint | fill_y,
|  | const WidgetData & | widget_data,
|  | StringID | tool_tip
| ) |  |

Initialization of a 'real' widget.

Parameters

  tp | Type of the widget.
  colour | Colour of the widget.
  index | Index of the widget.
  fill_x | Default horizontal filling.
  fill_y | Default vertical filling.
  widget_data | Data component of the widget.

See also
  Widget::data

Parameters

  tool_tip | Tool tip of the widget.

See also
  Widget::tooltips

Definition at line 1170 of file widget.cpp.

References colour, SetToolTip(), text_colour, widget_data, and WWT_CAPTION.

## Member Function Documentation

## ◆ GetFontSize()

FontSize NWidgetCore::GetFontSize | ( |  | ) | const
| inline

Definition at line 395 of file widget_type.h.

## ◆ GetHighlightColour()

TextColour NWidgetCore::GetHighlightColour | ( |  | ) | const
| inlineoverridevirtual

Return the colour of the highlight.

Reimplemented from NWidgetBase.

Definition at line 434 of file widget_type.h.

References highlight_colour.

## ◆ GetScrollbarIndex()

WidgetID NWidgetCore::GetScrollbarIndex | ( |  | ) | const

Get the `WidgetID` of this nested widget's scrollbar.

Returns
  The `WidgetID`.

Definition at line 1288 of file widget.cpp.

References scrollbar_index.

Referenced by DispatchMouseWheelEvent().

## ◆ GetString()

StringID NWidgetCore::GetString | ( |  | ) | const

Get the string that has been set for this nested widget.

Returns
  The string.

Definition at line 1279 of file widget.cpp.

References widget_data.

Referenced by NWidgetBadgeFilter::GetDropDownList().

## ◆ GetTextColour()

TextColour NWidgetCore::GetTextColour | ( |  | ) | const
| inline

Definition at line 394 of file widget_type.h.

## ◆ GetToolTip()

StringID NWidgetCore::GetToolTip | ( |  | ) | const

Get the tool tip of the nested widget.

Returns
  The tool tip string.

Definition at line 1261 of file widget.cpp.

References tool_tip.

Referenced by DispatchHoverEvent(), and DispatchRightClickEvent().

## ◆ GetWidgetFromPos()

NWidgetCore * NWidgetCore::GetWidgetFromPos | ( | int | x,
|  | int | y
| ) |  |
| overridevirtual

Retrieve a widget by its position.

Parameters

  x | Horizontal position relative to the left edge of the window.
  y | Vertical position relative to the top edge of the window.

Returns
  Returns the deepest nested widget that covers the given position, or `nullptr` if no widget can be found.

Implements NWidgetBase.

Definition at line 1293 of file widget.cpp.

References NWidgetBase::current_x, NWidgetBase::current_y, IsInsideBS(), NWidgetBase::pos_x, and NWidgetBase::pos_y.

Referenced by NWidgetNewGRFDisplay::GetWidgetFromPos(), NWidgetContainer::GetWidgetFromPos(), NWidgetStacked::GetWidgetFromPos(), NWidgetMatrix::GetWidgetFromPos(), and NWidgetBackground::GetWidgetFromPos().

## ◆ IsDisabled()

bool NWidgetCore::IsDisabled | ( |  | ) | const
| inline

Return whether the widget is disabled.

Definition at line 464 of file widget_type.h.

References Disabled, disp_flags, and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test().

Referenced by DispatchLeftClickEvent(), NWidgetBackground::Draw(), NWidgetScrollbar::Draw(), NWidgetLeaf::Draw(), and Window::OnHotkey().

## ◆ IsHighlighted()

bool NWidgetCore::IsHighlighted | ( |  | ) | const
| inlineoverridevirtual

Return whether the widget is highlighted.

Reimplemented from NWidgetBase.

Definition at line 428 of file widget_type.h.

References disp_flags, Highlight, and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test().

## ◆ IsLowered()

bool NWidgetCore::IsLowered | ( |  | ) | const
| inline

Return whether the widget is lowered.

Definition at line 449 of file widget_type.h.

References disp_flags, Lowered, and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test().

Referenced by NWidgetBackground::Draw(), NWidgetLeaf::Draw(), and Window::RaiseButtons().

## ◆ SetAlignment()

void NWidgetCore::SetAlignment | ( | StringAlignment | align | ) |

Set the text/image alignment of the nested widget.

Parameters

  align | Alignment to use.

Definition at line 1270 of file widget.cpp.

References align.

Referenced by ApplyNWidgetPartAttribute(), and NWidgetLeaf::NWidgetLeaf().

## ◆ SetDisabled()

void NWidgetCore::SetDisabled | ( | bool | disabled | ) |
| inline

Disable (grey-out) or enable the widget.

Parameters

  disabled | Widget must be disabled.

Definition at line 458 of file widget_type.h.

References Disabled, disp_flags, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Reset(), and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Set().

Referenced by Window::SetWidgetDisabledState(), ScriptDebugWindow::UpdateAIButtonsState(), and ScriptDebugWindow::UpdateGSButtonState().

## ◆ SetHighlighted()

void NWidgetCore::SetHighlighted | ( | TextColour | highlight_colour | ) |
| inlineoverridevirtual

Highlight the widget or not.

Parameters

  highlight_colour | Widget must be highlighted (blink).

Reimplemented from NWidgetBase.

Definition at line 421 of file widget_type.h.

References disp_flags, Highlight, highlight_colour, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Reset(), and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Set().

## ◆ SetLowered()

void NWidgetCore::SetLowered | ( | bool | lowered | ) |
| inline

Lower or raise the widget.

Parameters

  lowered | Widget must be lowered (drawn pressed down).

Definition at line 443 of file widget_type.h.

References disp_flags, Lowered, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Reset(), and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Set().

Referenced by DispatchLeftClickEvent(), NWidgetMatrix::Draw(), Window::RaiseButtons(), ShowDropDownList(), ScriptDebugWindow::UpdateAIButtonsState(), and ScriptDebugWindow::UpdateGSButtonState().

## ◆ SetMatrixDimension()

void NWidgetCore::SetMatrixDimension | ( | uint32_t | columns,
|  | uint32_t | rows
| ) |  |

Set the matrix dimension.

Parameters

  columns | The number of columns in the matrix (0 for autoscaling).
  rows | The number of rows in the matrix (0 for autoscaling).

Definition at line 1223 of file widget.cpp.

References widget_data.

## ◆ SetResizeWidgetType()

void NWidgetCore::SetResizeWidgetType | ( | ResizeWidgetValues | type | ) |

Set the resize widget type of the nested widget.

Parameters

  type | The new resize widget.

Definition at line 1232 of file widget.cpp.

References NWidgetBase::type, and widget_data.

Referenced by NWidgetLeaf::NWidgetLeaf().

## ◆ SetSprite()

void NWidgetCore::SetSprite | ( | SpriteID | sprite | ) |

Set sprite of the nested widget.

Parameters

  sprite | The new sprite.

Definition at line 1202 of file widget.cpp.

References widget_data.

Referenced by SetSpriteTip().

## ◆ SetSpriteTip()

void NWidgetCore::SetSpriteTip | ( | SpriteID | sprite,
|  | StringID | tool_tip
| ) |  |

Set sprite and tool tip of the nested widget.

Parameters

  sprite | The new sprite.
  tool_tip | The new tool_tip.

Definition at line 1212 of file widget.cpp.

References SetSprite(), and SetToolTip().

## ◆ SetString()

void NWidgetCore::SetString | ( | StringID | string | ) |

Set string of the nested widget.

Parameters

  string | The new string.

Definition at line 1182 of file widget.cpp.

References widget_data.

Referenced by SetStringTip().

## ◆ SetStringTip()

void NWidgetCore::SetStringTip | ( | StringID | string,
|  | StringID | tool_tip
| ) |  |

Set string and tool tip of the nested widget.

Parameters

  string | The new string.
  tool_tip | The new tool_tip.

Definition at line 1192 of file widget.cpp.

References SetString(), and SetToolTip().

Referenced by StationViewWindow::OnClick(), and SelectCompanyManagerFaceWindow::SelectDisplayPlanes().

## ◆ SetTextStyle()

void NWidgetCore::SetTextStyle | ( | TextColour | colour,
|  | FontSize | size
| ) |  |

Set the text style of the nested widget.

Parameters

  colour | TextColour to use.
  size | Font size to use.

Definition at line 1242 of file widget.cpp.

References colour, text_colour, and text_size.

Referenced by ApplyNWidgetPartAttribute().

## ◆ SetToolTip()

void NWidgetCore::SetToolTip | ( | StringID | tool_tip | ) |

Set the tool tip of the nested widget.

Parameters

  tool_tip | Tool tip string to use.

Definition at line 1252 of file widget.cpp.

References tool_tip.

Referenced by ApplyNWidgetPartAttribute(), NWidgetCore(), NWidgetLeaf::NWidgetLeaf(), SetSpriteTip(), and SetStringTip().

## Field Documentation

## ◆ align

StringAlignment NWidgetCore::align = SA_CENTER
| protected

Alignment of text/image within widget.

Definition at line 411 of file widget_type.h.

Referenced by NWidgetBackground::Draw(), NWidgetLeaf::Draw(), and SetAlignment().

## ◆ colour

Colours NWidgetCore::colour

Colour of this widget.

Definition at line 403 of file widget_type.h.

Referenced by NWidgetBackground::Draw(), NWidgetScrollbar::Draw(), NWidgetLeaf::Draw(), DepotWindow::DrawWidget(), NWidgetCore(), NWidgetLeaf::NWidgetLeaf(), SetScriptButtonColour(), SetTextStyle(), and ShowDropDownList().

## ◆ disp_flags

NWidgetDisplayFlags NWidgetCore::disp_flags

Flags that affect display and interaction with the widget.

Definition at line 402 of file widget_type.h.

Referenced by DropdownWindow::Close(), DispatchLeftClickEvent(), NWidgetViewport::Draw(), NWidgetScrollbar::Draw(), NWidgetLeaf::Draw(), HandleScrollbarScrolling(), IsDisabled(), IsHighlighted(), IsLowered(), Window::OnDropdownClose(), ScrollbarClickPositioning(), SetDisabled(), SetHighlighted(), SetLowered(), and ShowDropDownList().

## ◆ highlight_colour

TextColour NWidgetCore::highlight_colour {}
| protected

Colour of highlight.

Definition at line 408 of file widget_type.h.

Referenced by GetHighlightColour(), and SetHighlighted().

## ◆ scrollbar_index

WidgetID NWidgetCore::scrollbar_index = INVALID_WIDGET
| protected

Index of an attached scrollbar.

Definition at line 407 of file widget_type.h.

Referenced by ApplyNWidgetPartAttribute(), and GetScrollbarIndex().

## ◆ text_colour

TextColour NWidgetCore::text_colour {}
| protected

Colour of text within widget.

Definition at line 409 of file widget_type.h.

Referenced by NWidgetBackground::Draw(), NWidgetLeaf::Draw(), NWidgetCore(), and SetTextStyle().

## ◆ text_size

FontSize NWidgetCore::text_size = FS_NORMAL
| protected

Size of text within widget.

Definition at line 410 of file widget_type.h.

Referenced by NWidgetBackground::Draw(), NWidgetLeaf::Draw(), SetTextStyle(), NWidgetBackground::SetupSmallestSize(), and NWidgetLeaf::SetupSmallestSize().

## ◆ tool_tip

StringID NWidgetCore::tool_tip {}
| protected

Tooltip of the widget.

See also
  Widget::tool_tips

Definition at line 406 of file widget_type.h.

Referenced by GetToolTip(), and SetToolTip().

## ◆ widget_data

WidgetData NWidgetCore::widget_data {}
| protected

Data of the widget.

See also
  Widget::data

Definition at line 405 of file widget_type.h.

Referenced by ApplyNWidgetPartAttribute(), NWidgetLeaf::Draw(), GetString(), NWidgetCore(), SetMatrixDimension(), SetResizeWidgetType(), SetSprite(), SetString(), and NWidgetLeaf::SetupSmallestSize().

The documentation for this class was generated from the following files:

- src/widget_type.h
- src/widget.cpp