OpenTTD

Public Types | Public Member Functions | Private Attributes
Scrollbar Class Reference

Scrollbar data structure. More...

`#include <widget_type.h>`

Inheritance diagram for Scrollbar:

## Public Types
enum | ScrollbarStepping { SS_RAW, SS_SMALL, SS_BIG }
| Stepping sizes when scrolling. More...

## Public Member Functions
| Scrollbar (bool is_vertical)
uint16 | GetCount () const
| Gets the number of elements in the list. More...
uint16 | GetCapacity () const
| Gets the number of visible elements of the scrollbar. More...
uint16 | GetPosition () const
| Gets the position of the first visible element in the list. More...
bool | IsVisible (uint16 item) const
| Checks whether given current item is visible in the list. More...
bool | IsVertical () const
| Is the scrollbar vertical or not? More...
void | SetStepSize (uint16 stepsize)
| Set the distance to scroll when using the buttons or the wheel. More...
void | SetCount (int num)
| Sets the number of elements in the list. More...
void | SetCapacity (int capacity)
| Set the capacity of visible elements. More...
void | SetCapacityFromWidget (Window *w, int widget, int padding=0)
| Set capacity of visible elements from the size and resize properties of a widget. More...
void | SetPosition (int position)
| Sets the position of the first visible element. More...
void | UpdatePosition (int difference, ScrollbarStepping unit=SS_SMALL)
| Updates the position of the first visible element by the given amount. More...
void | ScrollTowards (int 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. More...
int | GetScrolledRowFromWidget (int clickpos, const Window *const w, int widget, int padding=0, int line_height=-1) const
| Compute the row of a scrolled widget that a user clicked in. More...

## Private Attributes
const bool | is_vertical
| Scrollbar has vertical orientation.
uint16 | count
| Number of elements in the list.
uint16 | cap
| Number of visible elements of the scroll bar.
uint16 | pos
| Index of first visible item of the list.
uint16 | stepsize
| Distance to scroll, when pressing the buttons or using the wheel.

## Detailed Description

Scrollbar data structure.

Definition at line 589 of file widget_type.h.

## Member Enumeration Documentation

## ◆ ScrollbarStepping

enum Scrollbar::ScrollbarStepping

Stepping sizes when scrolling.

Enumerator
SS_RAW | Step in single units.
SS_SMALL | Step in stepsize units.
SS_BIG | Step in cap units.

Definition at line 599 of file widget_type.h.

## Member Function Documentation

## ◆ GetCapacity()

uint16 Scrollbar::GetCapacity | ( |  | ) | const
| inline

Gets the number of visible elements of the scrollbar.

Returns
  the number of visible elements

Definition at line 622 of file widget_type.h.

Referenced by DispatchMouseWheelEvent(), CompanyStationsWindow::DrawWidget(), BuildIndustryWindow::DrawWidget(), BuildVehicleWindow::DrawWidget(), GameSettingsWindow::DrawWidget(), and AIDebugWindow::OnPaint().

## ◆ GetCount()

uint16 Scrollbar::GetCount | ( |  | ) | const
| inline

Gets the number of elements in the list.

Returns
  the number of elements

Definition at line 613 of file widget_type.h.

Referenced by DispatchMouseWheelEvent(), NewGRFParametersWindow::OnClick(), BuildAirportWindow::OnClick(), NewGRFWindow::OnDragDrop(), NewGRFParametersWindow::OnInvalidateData(), NewGRFWindow::OnMouseDrag(), StoryBookWindow::OnPaint(), AIDebugWindow::OnPaint(), SignListWindow::SetStringParameters(), NewGRFParametersWindow::SetStringParameters(), and CompanyStationsWindow::SetStringParameters().

## ◆ GetPosition()

uint16 Scrollbar::GetPosition | ( |  | ) | const
| inline

Gets the position of the first visible element in the list.

Returns
  the position of the element

Definition at line 631 of file widget_type.h.

Referenced by IndustryCargoesWindow::CalculatePositionInWidget(), AIDebugWindow::ChangeToAI(), TimetableWindow::DrawWidget(), DepotWindow::DrawWidget(), CompanyStationsWindow::DrawWidget(), BuildIndustryWindow::DrawWidget(), MessageHistoryWindow::DrawWidget(), BuildVehicleWindow::DrawWidget(), GameSettingsWindow::DrawWidget(), BuildObjectWindow::OnClick(), AISettingsWindow::OnClick(), BuildAirportWindow::OnClick(), StationViewWindow::OnClick(), AIDebugWindow::OnPaint(), and DropdownWindow::OnTick().

## ◆ GetScrolledRowFromWidget()

int Scrollbar::GetScrolledRowFromWidget | ( | int | clickpos,
|  | const Window *const | w,
|  | int | widget,
|  | int | padding = `0`,
|  | int | line_height = `-1`
| ) |  | const

Compute the row of a scrolled widget that a user clicked in.

Parameters

  clickpos | Vertical position of the mouse click (without taking scrolling into account).
  w | The window the click was in.
  widget | Widget number of the widget clicked in.
  padding | Amount of empty space between the widget edge and the top of the first row. Default value is `0`.
  line_height | Height of a single row. A negative value means using the vertical resize step of the widget.

Returns
  Row number clicked at. If clicked at a wrong position, #INT_MAX is returned.

Definition at line 1959 of file widget.cpp.

References Window::GetRowFromWidget().

Referenced by AIListWindow::OnClick(), SignListWindow::OnClick(), BuildBridgeWindow::OnClick(), NewGRFParametersWindow::OnClick(), CompanyStationsWindow::OnClick(), NewGRFInspectWindow::OnClick(), StoryBookWindow::OnClick(), TownDirectoryWindow::OnClick(), MessageHistoryWindow::OnClick(), BuildVehicleWindow::OnClick(), IndustryDirectoryWindow::OnClick(), StationViewWindow::OnClick(), GameSettingsWindow::OnClick(), SavePresetWindow::OnClick(), NewGRFWindow::OnDragDrop(), VehicleGroupWindow::OnMouseDrag(), and NewGRFWindow::OnMouseDrag().

## ◆ IsVertical()

bool Scrollbar::IsVertical | ( |  | ) | const
| inline

Is the scrollbar vertical or not?

Returns
  True iff the scrollbar is vertical.

Definition at line 650 of file widget_type.h.

## ◆ IsVisible()

bool Scrollbar::IsVisible | ( | uint16 | item | ) | const
| inline

Checks whether given current item is visible in the list.

Parameters

  item | to check

Returns
  true iff the item is visible

Definition at line 641 of file widget_type.h.

References IsInsideBS().

Referenced by AISettingsWindow::DrawWidget(), and OrdersWindow::OnInvalidateData().

## ◆ ScrollTowards()

void Scrollbar::ScrollTowards | ( | int | position | ) |
| inline

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.

Parameters

  position | the position to scroll towards.

Definition at line 731 of file widget_type.h.

Referenced by BuildObjectWindow::EnsureSelectedObjectClassIsVisible(), ReplaceVehicleWindow::GenerateLists(), NewGRFWindow::OnDragDrop(), OrdersWindow::OnInvalidateData(), NewGRFWindow::OnInvalidateData(), and NetworkContentListWindow::ScrollToSelected().

## ◆ SetCapacity()

void Scrollbar::SetCapacity | ( | int | capacity | ) |
| inline

Set the capacity of visible elements.

Parameters

  capacity | the new capacity

Note
  updates the position if needed

Definition at line 686 of file widget_type.h.

Referenced by BuildAirportWindow::BuildAirportClassDropDown(), TownAuthorityWindow::GetNthSetBit(), and DepotWindow::OnResize().

## ◆ SetCapacityFromWidget()

void Scrollbar::SetCapacityFromWidget | ( | Window * | w,
|  | int | widget,
|  | int | padding = `0`
| ) |  |

Set capacity of visible elements from the size and resize properties of a widget.

Parameters

  w | Window.
  widget | Widget with size and resize properties.
  padding | Padding to subtract from the size.

Note
  Updates the position if needed.

Definition at line 1973 of file widget.cpp.

References NWidgetBase::current_x, NWidgetBase::current_y, Window::GetWidget(), NWidgetBase::resize_x, and NWidgetBase::resize_y.

Referenced by TextfileWindow::OnResize(), SubsidyListWindow::OnResize(), AIListWindow::OnResize(), SignListWindow::OnResize(), BuildBridgeWindow::OnResize(), GoalListWindow::OnResize(), BuildObjectWindow::OnResize(), NewGRFParametersWindow::OnResize(), ReplaceVehicleWindow::OnResize(), AISettingsWindow::OnResize(), BuildIndustryWindow::OnResize(), StoryBookWindow::OnResize(), NewGRFInspectWindow::OnResize(), CompanyStationsWindow::OnResize(), TimetableWindow::OnResize(), SaveLoadWindow::OnResize(), NewGRFWindow::OnResize(), VehicleGroupWindow::OnResize(), NetworkGameWindow::OnResize(), TownDirectoryWindow::OnResize(), NetworkContentListWindow::OnResize(), RefitWindow::OnResize(), SpriteAlignerWindow::OnResize(), DepotWindow::OnResize(), MessageHistoryWindow::OnResize(), BuildRailStationWindow::OnResize(), AIDebugWindow::OnResize(), IndustryDirectoryWindow::OnResize(), BuildVehicleWindow::OnResize(), OrdersWindow::OnResize(), NetworkLobbyWindow::OnResize(), StationViewWindow::OnResize(), SavePresetWindow::OnResize(), VehicleDetailsWindow::OnResize(), GameSettingsWindow::OnResize(), SelectStationWindow< T >::OnResize(), and IndustryCargoesWindow::OnResize().

## ◆ SetCount()

void Scrollbar::SetCount | ( | int | num | ) |
| inline

Sets the number of elements in the list.

Parameters

  num | the number of elements in the list

Note
  updates the position if needed

Definition at line 670 of file widget_type.h.

Referenced by AIListWindow::AIListWindow(), BuildAirportWindow::BuildAirportClassDropDown(), NetworkContentListWindow::BuildContentList(), NetworkGameWindow::BuildGUINetworkGameList(), IndustryCargoesWindow::ComputeCargoDisplay(), IndustryCargoesWindow::ComputeIndustryDisplay(), ReplaceVehicleWindow::GenerateLists(), GetUnitNumberDigits(), SignListWindow::OnEditboxChanged(), SubsidyListWindow::OnInvalidateData(), GoalListWindow::OnInvalidateData(), NewGRFParametersWindow::OnInvalidateData(), OrdersWindow::OnInvalidateData(), SpriteAlignerWindow::OnInvalidateData(), MessageHistoryWindow::OnInvalidateData(), NewGRFWindow::OnInvalidateData(), AIDebugWindow::OnInvalidateData(), GameSettingsWindow::OnInvalidateData(), SelectStationWindow< T >::OnInvalidateData(), TownAuthorityWindow::OnPaint(), TimetableWindow::OnPaint(), VehicleGroupWindow::OnPaint(), StoryBookWindow::OnPaint(), RefitWindow::OnPaint(), AIDebugWindow::OnPaint(), StationViewWindow::OnPaint(), NetworkLobbyWindow::OnPaint(), BuildVehicleWindow::OnPaint(), VehicleDetailsWindow::OnPaint(), StoryBookWindow::OnResize(), AISettingsWindow::RebuildVisibleSettings(), SavePresetWindow::SavePresetWindow(), TextfileWindow::SetupScrollbars(), BuildBridgeWindow::SortBridgeList(), and NewGRFWindow::TagNameFilter().

## ◆ SetPosition()

void Scrollbar::SetPosition | ( | int | position | ) |
| inline

Sets the position of the first visible element.

Parameters

  position | the position of the element

Definition at line 701 of file widget_type.h.

Referenced by BuildAirportWindow::BuildAirportClassDropDown(), ReplaceVehicleWindow::OnDropdownSelect(), and AIDebugWindow::OnPaint().

## ◆ SetStepSize()

void Scrollbar::SetStepSize | ( | uint16 | stepsize | ) |
| inline

Set the distance to scroll when using the buttons or the wheel.

Parameters

  stepsize | Scrolling speed.

Definition at line 659 of file widget_type.h.

## ◆ UpdatePosition()

void Scrollbar::UpdatePosition | ( | int | difference,
|  | ScrollbarStepping | unit = `SS_SMALL`
| ) |  |
| inline

Updates the position of the first visible element by the given amount.

If the position would be too low or high it will be clamped appropriately

Parameters

  difference | the amount of change requested
  unit | The stepping unit of difference

Definition at line 714 of file widget_type.h.

References Clamp(), and max().

Referenced by DispatchMouseWheelEvent(), and DropdownWindow::OnTick().

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

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