OpenTTD Source: BaseSettingEntry Struct Reference

OpenTTD Source 14.0-beta3

Public Member Functions | Data Fields | Protected Member Functions
BaseSettingEntry Struct Referenceabstract

Data structure describing a single setting in a tab. More...

Inheritance diagram for BaseSettingEntry:

## Public Member Functions
virtual void | Init (byte level=0)
| Initialization of a setting entry. More...
virtual void | FoldAll ()
virtual void | UnFoldAll ()
virtual void | ResetAll ()=0
void | SetLastField (bool last_field)
| Set whether this is the last visible entry of the parent node. More...
virtual uint | Length () const =0
virtual void | GetFoldingState ([[maybe_unused]] bool &all_folded, [[maybe_unused]] bool &all_unfolded) const
virtual bool | IsVisible (const BaseSettingEntry *item) const
| Check whether an entry is visible and not folded or filtered away. More...
virtual BaseSettingEntry * | FindEntry (uint row, uint *cur_row)
| Find setting entry at row row_num. More...
virtual uint | GetMaxHelpHeight ([[maybe_unused]] int maxw)
bool | IsFiltered () const
| Check whether an entry is hidden due to filters. More...
virtual bool | UpdateFilterState (SettingFilter &filter, bool force_visible)=0
virtual uint | Draw (GameSettings *settings_ptr, int left, int right, int y, uint first_row, uint max_row, BaseSettingEntry *selected, uint cur_row=0, uint parent_last=0) const
| Draw a row in the settings panel. More...

## Data Fields
byte | flags
| Flags of the setting entry. More...
byte | level
| Nesting level of this setting entry.

## Protected Member Functions
virtual void | DrawSetting (GameSettings *settings_ptr, int left, int right, int y, bool highlight) const =0

## Detailed Description

Data structure describing a single setting in a tab.

Definition at line 1225 of file settings_gui.cpp.

## Member Function Documentation

## ◆ Draw()

uint BaseSettingEntry::Draw | ( | GameSettings * | settings_ptr,
|  | int | left,
|  | int | right,
|  | int | y,
|  | uint | first_row,
|  | uint | max_row,
|  | BaseSettingEntry * | selected,
|  | uint | cur_row = `0`,
|  | uint | parent_last = `0`
| ) |  | const
| virtual

Draw a row in the settings panel.

The scrollbar uses rows of the page, while the page data structure is a tree of SettingsPage and SettingEntry objects. As a result, the drawing routing traverses the tree from top to bottom, counting rows in cur_row until it reaches first_row. Then it enables drawing rows while traversing until max_row is reached, at which point drawing is terminated.

The parent_last parameter ensures that the vertical lines at the left are only drawn when another entry follows, that it prevents output like

    *  |-- setting
    *  |-- (-) - Title
    *  |    |-- setting
    *  |    |-- setting
    *

The left-most vertical line is not wanted. It is prevented by setting the appropriate bit in the parent_last parameter.

Parameters

  settings_ptr | Pointer to current values of all settings
  left | Left-most position in window/panel to start drawing first_row
  right | Right-most x position to draw strings at.
  y | Upper-most position in window/panel to start drawing first_row
  first_row | First row number to draw
  max_row | Row-number to stop drawing (the row-number of the row below the last row to draw)
  selected | Selected entry by the user.
  cur_row | Current row number (internal variable)
  parent_last | Last-field booleans of parent page level (page level i sets bit i to 1 if it is its last field)

Returns
  Row number of the next row to draw

Reimplemented in SettingsPage.

Definition at line 1405 of file settings_gui.cpp.

## ◆ FindEntry()

BaseSettingEntry * BaseSettingEntry::FindEntry | ( | uint | row_num,
|  | uint * | cur_row
| ) |  |
| virtual

Find setting entry at row row_num.

Parameters

  row_num | Index of entry to return
  cur_row | Current row number

Returns
  The requested setting entry or `nullptr` if it not found (folded or filtered)

Reimplemented in SettingsPage.

Definition at line 1368 of file settings_gui.cpp.

References IsFiltered().

Referenced by SettingsContainer::FindEntry().

## ◆ Init()

void BaseSettingEntry::Init | ( | byte | level = `0` | ) |
| virtual

Initialization of a setting entry.

Parameters

  level | Page nesting level of this entry

Reimplemented in SettingsPage, and SettingEntry.

Definition at line 1345 of file settings_gui.cpp.

References level.

Referenced by SettingEntry::Init(), and SettingsPage::Init().

## ◆ IsFiltered()

bool BaseSettingEntry::IsFiltered | ( |  | ) | const
| inline

Check whether an entry is hidden due to filters.

Returns
  true if hidden.

Definition at line 1253 of file settings_gui.cpp.

References SEF_FILTERED.

Referenced by FindEntry(), SettingsPage::FindEntry(), SettingsPage::FoldAll(), SettingsPage::GetFoldingState(), IsVisible(), SettingsPage::IsVisible(), SettingEntry::Length(), SettingsPage::Length(), and SettingsPage::UnFoldAll().

## ◆ IsVisible()

bool BaseSettingEntry::IsVisible | ( | const BaseSettingEntry * | item | ) | const
| virtual

Check whether an entry is visible and not folded or filtered away.

Note: This does not consider the scrolling range; it might still require scrolling to make the setting really visible.

Parameters

  item | Entry to search for.

Returns
  true if entry is visible.

Reimplemented in SettingsPage.

Definition at line 1356 of file settings_gui.cpp.

References IsFiltered().

## ◆ SetLastField()

void BaseSettingEntry::SetLastField | ( | bool | last_field | ) |
| inline

Set whether this is the last visible entry of the parent node.

Parameters

  last_field | Value to set

Definition at line 1241 of file settings_gui.cpp.

References CLRBITS, SEF_LAST_FIELD, and SETBITS.

## Field Documentation

## ◆ flags

byte BaseSettingEntry::flags

Flags of the setting entry.

See also
  SettingEntryFlags

Definition at line 1226 of file settings_gui.cpp.

Referenced by SettingEntry::SetButtons(), SettingEntry::UpdateFilterState(), and SettingsPage::UpdateFilterState().

The documentation for this struct was generated from the following file:

- src/settings_gui.cpp