OpenTTD Source: NWidgetScrollbar Class Reference

OpenTTD Source 15.0-RC2

Public Member Functions | Static Public Member Functions | Static Private Attributes
NWidgetScrollbar Class Reference
Hierarchical widgets

Nested widget to display and control a scrollbar in a window. More...

`#include <widget_type.h>`

Inheritance diagram for NWidgetScrollbar:

## Public Member Functions
| NWidgetScrollbar (WidgetType tp, Colours colour, WidgetID index)
| Scrollbar widget.
void | SetupSmallestSize (Window *w) override
| Compute smallest size needed by the widget.
void | Draw (const Window *w) override
| Draw the widgets of the tree.
Public Member Functions inherited from 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.
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 | 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 | 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 | SetDirty (const Window *w) const
| Mark the widget as 'dirty' (in need of repaint).
Rect | GetCurrentRect () const
Public Member Functions inherited from Scrollbar
| Scrollbar (bool is_vertical)
size_type | GetCount () const
| Gets the number of elements in the list.
size_type | GetCapacity () const
| Gets the number of visible elements of the scrollbar.
size_type | GetPosition () const
| Gets the position of the first visible element in the list.
bool | IsVisible (size_type item) const
| Checks whether given current item is visible in the list.
bool | IsVertical () const
| Is the scrollbar vertical or not?
void | SetStepSize (size_t stepsize)
| Set the distance to scroll when using the buttons or the wheel.
void | SetCount (size_t num)
| Sets the number of elements in the list.
void | SetCapacity (size_t capacity)
| Set the capacity of visible elements.
void | SetCapacityFromWidget (Window *w, WidgetID widget, int padding=0)
| Set capacity of visible elements from the size and resize properties of a widget.
bool | SetPosition (size_type position)
| Sets the position of the first visible element.
bool | UpdatePosition (int difference, ScrollbarStepping unit=SS_SMALL)
| Updates the position of the first visible element by the given amount.
void | ScrollTowards (size_type position)
| Scroll towards the given position; if the item is visible nothing happens, otherwise it will be shown either at the bottom or top of the window depending on where in the list it was.
size_type | GetScrolledRowFromWidget (int clickpos, const Window *const w, WidgetID widget, int padding=0, int line_height=-1) const
| Compute the row of a scrolled widget that a user clicked in.
template<typename Tcontainer >
auto | GetVisibleRangeIterators (Tcontainer &container) const
| Get a pair of iterators for the range of visible elements in a container.
template<typename Tcontainer >
auto | GetScrolledItemFromWidget (Tcontainer &container, int clickpos, const Window *const w, WidgetID widget, int padding=0, int line_height=-1) const
| Return an iterator pointing to the element of a scrolled widget that a user clicked in.
EventState | UpdateListPositionOnKeyPress (int &list_position, uint16_t keycode) const
| Update the given list position as if it were on this scroll bar when the given keycode was pressed.

## Static Public Member Functions
static void | InvalidateDimensionCache ()
static Dimension | GetVerticalDimension ()
static Dimension | GetHorizontalDimension ()

## Static Private Attributes
static Dimension | vertical_dimension = {0, 0}
| Cached size of vertical scrollbar button.
static Dimension | horizontal_dimension = {0, 0}
| Cached size of horizontal scrollbar button.

## Additional Inherited Members
Public Types inherited from Scrollbar
enum | ScrollbarStepping : uint8_t { SS_RAW , SS_SMALL , SS_BIG }
| Stepping sizes when scrolling. More...
using | size_type = int32_t
Data Fields inherited from NWidgetCore
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.
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.
Static Public Attributes inherited from Scrollbar
static constexpr size_type | max_size_type = std::numeric_limits<size_type>::max()
static constexpr size_type | npos = max_size_type
Protected Member Functions inherited from NWidgetBase
void | StoreSizePosition (SizingType sizing, int x, int y, uint given_width, uint given_height)
| Store size and position.
Protected Attributes inherited from NWidgetCore
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').

## Detailed Description

Nested widget to display and control a scrollbar in a window.

Also assign the scrollbar to other widgets using SetScrollbar() to make the mousewheel work.

Definition at line 908 of file widget_type.h.

## Constructor & Destructor Documentation

## ◆ NWidgetScrollbar()

NWidgetScrollbar::NWidgetScrollbar | ( | WidgetType | tp,
|  | Colours | colour,
|  | WidgetID | index
| ) |  |

Scrollbar widget.

Parameters

  tp | Scrollbar type. (horizontal/vertical)
  colour | Colour of the scrollbar.
  index | Index of the widget.

Definition at line 2544 of file widget.cpp.

## Member Function Documentation

## ◆ Draw()

void NWidgetScrollbar::Draw | ( | const Window * | w | ) |
| overridevirtual

Draw the widgets of the tree.

The function calls Window::DrawWidget for each widget with a non-negative index, after the widget itself is painted.

Parameters

  w | Window that owns the tree.

Implements NWidgetBase.

Definition at line 2586 of file widget.cpp.

References BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Any(), WidgetDimensions::bevel, NWidgetCore::colour, NWidgetBase::current_x, NWidgetBase::current_y, NWidgetCore::disp_flags, DrawHorizontalScrollbar(), DrawVerticalScrollbar(), FILLRECT_CHECKER, GetColourGradient(), GfxFillRect(), NWidgetCore::IsDisabled(), Window::mouse_capture_widget, NWID_HSCROLLBAR, WidgetDimensions::scaled, ScrollbarDown, ScrollbarUp, Rect::Shrink(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), and NWidgetBase::type.

## ◆ GetHorizontalDimension()

Dimension NWidgetScrollbar::GetHorizontalDimension | ( |  | ) |
| static

Definition at line 2628 of file widget.cpp.

## ◆ GetVerticalDimension()

Dimension NWidgetScrollbar::GetVerticalDimension | ( |  | ) |
| static

Definition at line 2618 of file widget.cpp.

## ◆ InvalidateDimensionCache()

void NWidgetScrollbar::InvalidateDimensionCache | ( |  | ) |
| static

Definition at line 2612 of file widget.cpp.

## ◆ SetupSmallestSize()

void NWidgetScrollbar::SetupSmallestSize | ( | Window * | w | ) |
| overridevirtual

Compute smallest size needed by the widget.

The smallest size of a widget is the smallest size that a widget needs to display itself properly. In addition, filling and resizing of the widget are computed. The function calls Window::UpdateWidgetSize for each leaf widget and background widget without child with a non-negative index.

Parameters

  w | Window owning the widget.

Note
  After the computation, the results can be queried by accessing the smallest_x and smallest_y data members of the widget.

Implements NWidgetBase.

Definition at line 2565 of file widget.cpp.

References NWidgetResizeBase::min_x, NWidgetResizeBase::min_y, NWID_HSCROLLBAR, NWID_VSCROLLBAR, NWidgetResizeBase::SetMinimalSizeAbsolute(), NWidgetBase::smallest_x, NWidgetBase::smallest_y, and NWidgetBase::type.

## Field Documentation

## ◆ horizontal_dimension

Dimension NWidgetScrollbar::horizontal_dimension = {0, 0}
| staticprivate

Cached size of horizontal scrollbar button.

Definition at line 2639 of file widget_type.h.

## ◆ vertical_dimension

Dimension NWidgetScrollbar::vertical_dimension = {0, 0}
| staticprivate

Cached size of vertical scrollbar button.

Definition at line 2638 of file widget_type.h.

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

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