OpenTTD
Public Member Functions | Data Fields | Protected Member Functions
BaseSettingEntry Struct Reference

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

Inheritance diagram for BaseSettingEntry:
SettingEntry SettingsPage

Public Member Functions

virtual void Init (byte level=0)
 Initialization of a setting entry.
virtual void FoldAll ()
virtual void UnFoldAll ()
void SetLastField (bool last_field)
 Set whether this is the last visible entry of the parent node.
virtual uint Length () const =0
virtual void GetFoldingState (bool &all_folded, bool &all_unfolded) const
virtual bool IsVisible (const BaseSettingEntry *item) const
 Check whether an entry is visible and not folded or filtered away.
virtual BaseSettingEntryFindEntry (uint row, uint *cur_row)
 Find setting entry at row row_num.
virtual uint GetMaxHelpHeight (int maxw)
bool IsFiltered () const
 Check whether an entry is hidden due to filters.
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.

Data Fields

byte flags
 Flags of the setting entry.
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 707 of file settings_gui.cpp.

Member Function Documentation

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_ptrPointer to current values of all settings
leftLeft-most position in window/panel to start drawing first_row
rightRight-most x position to draw strings at.
yUpper-most position in window/panel to start drawing first_row
first_rowFirst row number to draw
max_rowRow-number to stop drawing (the row-number of the row below the last row to draw)
selectedSelected entry by the user.
cur_rowCurrent row number (internal variable)
parent_lastLast-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 896 of file settings_gui.cpp.

References _colour_gradient, _current_text_dir, flags, HasBit(), IsFiltered(), level, LEVEL_WIDTH, SEF_LAST_FIELD, and TD_RTL.

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

Find setting entry at row row_num.

Parameters
row_numIndex of entry to return
cur_rowCurrent row number
Returns
The requested setting entry or NULL if it not found (folded or filtered)

Reimplemented in SettingsPage.

Definition at line 859 of file settings_gui.cpp.

References IsFiltered().

Referenced by SettingsContainer::FindEntry().

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

Initialization of a setting entry.

Parameters
levelPage nesting level of this entry

Reimplemented in SettingsPage, and SettingEntry.

Definition at line 835 of file settings_gui.cpp.

References level.

bool BaseSettingEntry::IsFiltered ( ) const
inline
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
itemEntry to search for.
Returns
true if entry is visible.

Reimplemented in SettingsPage.

Definition at line 846 of file settings_gui.cpp.

References IsFiltered().

void BaseSettingEntry::SetLastField ( bool  last_field)
inline

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

Parameters
last_fieldValue to set

Definition at line 722 of file settings_gui.cpp.

References CLRBITS, flags, SEF_LAST_FIELD, and SETBITS.

Field Documentation

byte BaseSettingEntry::flags

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