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

Scrollbar data structure. More...

#include <widget_type.h>

Inheritance diagram for Scrollbar:
NWidgetScrollbar

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

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

◆ GetPosition()

uint16 Scrollbar::GetPosition ( ) const
inline

◆ 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
clickposVertical position of the mouse click (without taking scrolling into account).
wThe window the click was in.
widgetWidget number of the widget clicked in.
paddingAmount of empty space between the widget edge and the top of the first row. Default value is 0.
line_heightHeight 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
itemto 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
positionthe 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
capacitythe 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
wWindow.
widgetWidget with size and resize properties.
paddingPadding 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

◆ SetPosition()

void Scrollbar::SetPosition ( int  position)
inline

Sets the position of the first visible element.

Parameters
positionthe 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
stepsizeScrolling 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
differencethe amount of change requested
unitThe 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: