OpenTTD Source 20241224-master-gee860a5c8e
|
Definitions about widgets. More...
#include "core/alloc_type.hpp"
#include "core/bitmath_func.hpp"
#include "core/math_func.hpp"
#include "strings_type.h"
#include "gfx_type.h"
#include "window_type.h"
Go to the source code of this file.
Data Structures | |
class | NWidgetBase |
Baseclass for nested widgets. More... | |
class | NWidgetResizeBase |
Base class for a resizable nested widget. More... | |
class | NWidgetCore |
Base class for a 'real' widget. More... | |
class | NWidgetContainer |
Baseclass for container widgets. More... | |
class | NWidgetStacked |
Stacked widgets, widgets all occupying the same space in the window. More... | |
class | NWidgetPIPContainer |
Container with pre/inter/post child space. More... | |
class | NWidgetHorizontal |
Horizontal container. More... | |
class | NWidgetHorizontalLTR |
Horizontal container that doesn't change the direction of the widgets for RTL languages. More... | |
class | NWidgetVertical |
Vertical container. More... | |
class | NWidgetMatrix |
Matrix container with implicitly equal sized (virtual) sub-widgets. More... | |
class | NWidgetSpacer |
Spacer widget. More... | |
class | NWidgetBackground |
Nested widget with a child. More... | |
class | NWidgetViewport |
Nested widget to display a viewport in a window. More... | |
class | Scrollbar |
Scrollbar data structure. More... | |
class | NWidgetScrollbar |
Nested widget to display and control a scrollbar in a window. More... | |
class | NWidgetLeaf |
Leaf widget. More... | |
struct | NWidgetPartDataTip |
Widget part for storing data and tooltip information. More... | |
struct | NWidgetPartWidget |
Widget part for storing basic widget information. More... | |
struct | NWidgetPartPaddings |
Widget part for storing padding. More... | |
struct | NWidgetPartPIP |
Widget part for storing pre/inter/post spaces. More... | |
struct | NWidgetPartTextLines |
Widget part for storing minimal text line data. More... | |
struct | NWidgetPartTextStyle |
Widget part for storing text colour. More... | |
struct | NWidgetPartAlignment |
Widget part for setting text/image alignment within a widget. More... | |
struct | NWidgetPartAspect |
struct | NWidgetPart |
Partial widget specification to allow NWidgets to be written nested. More... | |
union | NWidgetPart::NWidgetPartUnion |
Typedefs | |
using | WidgetLookup = std::map< WidgetID, class NWidgetBase * > |
Lookup between widget IDs and NWidget objects. | |
typedef std::unique_ptr< NWidgetBase > | NWidgetFunctionType() |
Pointer to function returning a nested widget. | |
Enumerations | |
enum | ArrowWidgetValues { AWV_DECREASE , AWV_INCREASE , AWV_LEFT , AWV_RIGHT } |
Values for an arrow widget. More... | |
enum | ResizeWidgetValues { RWV_SHOW_BEVEL , RWV_HIDE_BEVEL } |
WidgetData values for a resize box widget. More... | |
enum | WidgetType { WWT_EMPTY , WWT_PANEL , WWT_INSET , WWT_IMGBTN , WWT_IMGBTN_2 , WWT_ARROWBTN , WWT_TEXTBTN , WWT_TEXTBTN_2 , WWT_LABEL , WWT_TEXT , WWT_MATRIX , WWT_FRAME , WWT_CAPTION , WWT_DEBUGBOX , WWT_SHADEBOX , WWT_DEFSIZEBOX , WWT_STICKYBOX , WWT_RESIZEBOX , WWT_CLOSEBOX , WWT_DROPDOWN , WWT_EDITBOX , WWT_LAST , NWID_HORIZONTAL , NWID_HORIZONTAL_LTR , NWID_VERTICAL , NWID_MATRIX , NWID_SPACER , NWID_SELECTION , NWID_LAYER , NWID_VIEWPORT , NWID_BUTTON_DROPDOWN , NWID_HSCROLLBAR , NWID_VSCROLLBAR , NWID_CUSTOM , WPT_ATTRIBUTE_BEGIN , WPT_RESIZE , WPT_MINSIZE , WPT_MINTEXTLINES , WPT_FILL , WPT_DATATIP , WPT_PADDING , WPT_PIPSPACE , WPT_PIPRATIO , WPT_TEXTSTYLE , WPT_ALIGNMENT , WPT_SCROLLBAR , WPT_ASPECT , WPT_ATTRIBUTE_END , WPT_FUNCTION , WPT_ENDCONTAINER , WWT_MASK = 0x7F , WWB_PUSHBUTTON = 1 << 7 , WWT_PUSHBTN = WWT_PANEL | WWB_PUSHBUTTON , WWT_PUSHTXTBTN = WWT_TEXTBTN | WWB_PUSHBUTTON , WWT_PUSHIMGBTN = WWT_IMGBTN | WWB_PUSHBUTTON , WWT_PUSHARROWBTN = WWT_ARROWBTN | WWB_PUSHBUTTON , NWID_PUSHBUTTON_DROPDOWN = NWID_BUTTON_DROPDOWN | WWB_PUSHBUTTON } |
Window widget types, nested widget types, and nested widget part types. More... | |
enum | SizingType { ST_SMALLEST , ST_RESIZE } |
Different forms of sizing nested widgets, using NWidgetBase::AssignSizePosition() More... | |
enum class | AspectFlags : uint8_t { ResizeX = 1U << 0 , ResizeY = 1U << 1 , ResizeXY = ResizeX | ResizeY } |
enum | NWidgetDisplay { NDB_LOWERED = 0 , NDB_DISABLED = 1 , NDB_NO_TRANSPARENCY = 2 , NDB_SHADE_GREY = 3 , NDB_SHADE_DIMMED = 4 , NDB_DROPDOWN_ACTIVE = 5 , NDB_SCROLLBAR_UP = 6 , NDB_SCROLLBAR_DOWN = 7 , NDB_HIGHLIGHT = 8 , NDB_DROPDOWN_CLOSED = 9 , ND_LOWERED = 1 << NDB_LOWERED , ND_DISABLED = 1 << NDB_DISABLED , ND_HIGHLIGHT = 1 << NDB_HIGHLIGHT , ND_NO_TRANSPARENCY = 1 << NDB_NO_TRANSPARENCY , ND_SHADE_GREY = 1 << NDB_SHADE_GREY , ND_SHADE_DIMMED = 1 << NDB_SHADE_DIMMED , ND_DROPDOWN_ACTIVE = 1 << NDB_DROPDOWN_ACTIVE , ND_SCROLLBAR_UP = 1 << NDB_SCROLLBAR_UP , ND_SCROLLBAR_DOWN = 1 << NDB_SCROLLBAR_DOWN , ND_SCROLLBAR_BTN = ND_SCROLLBAR_UP | ND_SCROLLBAR_DOWN , ND_DROPDOWN_CLOSED = 1 << NDB_DROPDOWN_CLOSED } |
Nested widget flags that affect display and interaction with 'real' widgets. More... | |
enum | StackedZeroSizePlanes { SZSP_VERTICAL = INT_MAX / 2 , SZSP_HORIZONTAL , SZSP_NONE , SZSP_BEGIN = SZSP_VERTICAL } |
Display planes with zero size for NWidgetStacked. More... | |
enum | NWidContainerFlags { NCB_EQUALSIZE = 0 , NCB_BIGFIRST = 1 , NC_NONE = 0 , NC_EQUALSIZE = 1 << NCB_EQUALSIZE , NC_BIGFIRST = 1 << NCB_BIGFIRST } |
Nested widget container flags,. More... | |
Functions | |
uint | ComputeMaxSize (uint base, uint max_space, uint step) |
Return the biggest possible size of a nested widget. | |
constexpr NWidgetPart | SetResize (int16_t dx, int16_t dy) |
Widget part function for setting the resize step. | |
constexpr NWidgetPart | SetMinimalSize (int16_t x, int16_t y) |
Widget part function for setting the minimal size. | |
constexpr NWidgetPart | SetMinimalTextLines (uint8_t lines, uint8_t spacing, FontSize size=FS_NORMAL) |
Widget part function for setting the minimal text lines. | |
constexpr NWidgetPart | SetTextStyle (TextColour colour, FontSize size=FS_NORMAL) |
Widget part function for setting the text style. | |
constexpr NWidgetPart | SetAlignment (StringAlignment align) |
Widget part function for setting the alignment of text/images. | |
constexpr NWidgetPart | SetFill (uint16_t fill_x, uint16_t fill_y) |
Widget part function for setting filling. | |
constexpr NWidgetPart | EndContainer () |
Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME, WWT_INSET, or WWT_PANEL). | |
constexpr NWidgetPart | SetDataTip (uint32_t data, StringID tip) |
Widget part function for setting the data and tooltip. | |
constexpr NWidgetPart | SetMatrixDataTip (uint8_t cols, uint8_t rows, StringID tip) |
Widget part function for setting the data and tooltip of WWT_MATRIX widgets. | |
constexpr NWidgetPart | SetPadding (uint8_t top, uint8_t right, uint8_t bottom, uint8_t left) |
Widget part function for setting additional space around a widget. | |
constexpr NWidgetPart | SetPadding (uint8_t horizontal, uint8_t vertical) |
Widget part function for setting additional space around a widget. | |
constexpr NWidgetPart | SetPadding (const RectPadding &padding) |
Widget part function for setting additional space around a widget. | |
constexpr NWidgetPart | SetPadding (uint8_t padding) |
Widget part function for setting a padding. | |
constexpr NWidgetPart | SetPIP (uint8_t pre, uint8_t inter, uint8_t post) |
Widget part function for setting a pre/inter/post spaces. | |
constexpr NWidgetPart | SetPIPRatio (uint8_t ratio_pre, uint8_t ratio_inter, uint8_t ratio_post) |
Widget part function for setting a pre/inter/post ratio. | |
constexpr NWidgetPart | SetScrollbar (WidgetID index) |
Attach a scrollbar to a widget. | |
constexpr NWidgetPart | SetAspect (float ratio, AspectFlags flags=AspectFlags::ResizeX) |
Widget part function for setting the aspect ratio. | |
constexpr NWidgetPart | NWidget (WidgetType tp, Colours col, WidgetID idx=-1) |
Widget part function for starting a new 'real' widget. | |
constexpr NWidgetPart | NWidget (WidgetType tp, NWidContainerFlags cont_flags=NC_NONE) |
Widget part function for starting a new horizontal container, vertical container, or spacer widget. | |
constexpr NWidgetPart | NWidgetFunction (NWidgetFunctionType *func_ptr) |
Obtain a nested widget (sub)tree from an external source. | |
bool | IsContainerWidgetType (WidgetType tp) |
Test if WidgetType is a container widget. | |
std::unique_ptr< NWidgetBase > | MakeNWidgets (std::span< const NWidgetPart > nwid_parts, std::unique_ptr< NWidgetBase > &&container) |
Construct a nested widget tree from an array of parts. | |
std::unique_ptr< NWidgetBase > | MakeWindowNWidgetTree (std::span< const NWidgetPart > nwid_parts, NWidgetStacked **shade_select) |
Make a nested widget tree for a window from a parts array. | |
std::unique_ptr< NWidgetBase > | MakeCompanyButtonRows (WidgetID widget_first, WidgetID widget_last, Colours button_colour, int max_length, StringID button_tooltip, bool resizable=true) |
Make a number of rows with button-like graphics, for enabling/disabling each company. | |
void | SetupWidgetDimensions () |
Set up pre-scaled versions of Widget Dimensions. | |
Variables | |
static constexpr uint8_t | MAT_COL_START = 0 |
Bits of the WWT_MATRIX widget data. | |
static constexpr uint8_t | MAT_COL_BITS = 8 |
Number of bits for the number of columns in the matrix. | |
static constexpr uint8_t | MAT_ROW_START = 8 |
Lowest bit of the number of rows. | |
static constexpr uint8_t | MAT_ROW_BITS = 8 |
Number of bits for the number of rows in the matrix. | |
Definitions about widgets.
Definition in file widget_type.h.
typedef std::unique_ptr< NWidgetBase > NWidgetFunctionType() |
Pointer to function returning a nested widget.
Definition at line 1069 of file widget_type.h.
using WidgetLookup = std::map<WidgetID, class NWidgetBase *> |
Lookup between widget IDs and NWidget objects.
Definition at line 137 of file widget_type.h.
enum ArrowWidgetValues |
Values for an arrow widget.
Definition at line 30 of file widget_type.h.
|
strong |
Definition at line 125 of file widget_type.h.
enum NWidContainerFlags |
Nested widget container flags,.
Enumerator | |
---|---|
NCB_EQUALSIZE | Containers should keep all their (resizing) children equally large. |
NCB_BIGFIRST | Allocate space to biggest resize first. |
NC_NONE | All flags cleared. |
NC_EQUALSIZE | Value of the NCB_EQUALSIZE flag. |
NC_BIGFIRST | Value of the NCB_BIGFIRST flag. |
Definition at line 519 of file widget_type.h.
enum NWidgetDisplay |
Nested widget flags that affect display and interaction with 'real' widgets.
Enumerator | |
---|---|
NDB_LOWERED | Widget is lowered (pressed down) bit. |
NDB_DISABLED | Widget is disabled (greyed out) bit. |
NDB_NO_TRANSPARENCY | Viewport is never transparent. |
NDB_SHADE_GREY | Shade viewport to grey-scale. |
NDB_SHADE_DIMMED | Display dimmed colours in the viewport. |
NDB_DROPDOWN_ACTIVE | Dropdown menu of the button dropdown widget is active.
|
NDB_SCROLLBAR_UP | Up-button is lowered bit. |
NDB_SCROLLBAR_DOWN | Down-button is lowered bit. |
NDB_HIGHLIGHT | Highlight of widget is on. |
NDB_DROPDOWN_CLOSED | Dropdown menu of the dropdown widget has closed. |
ND_LOWERED | Bit value of the lowered flag. |
ND_DISABLED | Bit value of the disabled flag. |
ND_HIGHLIGHT | Bit value of the highlight flag. |
ND_NO_TRANSPARENCY | Bit value of the 'no transparency' flag. |
ND_SHADE_GREY | Bit value of the 'shade to grey' flag. |
ND_SHADE_DIMMED | Bit value of the 'dimmed colours' flag. |
ND_DROPDOWN_ACTIVE | Bit value of the 'dropdown active' flag. |
ND_SCROLLBAR_UP | Bit value of the 'scrollbar up' flag. |
ND_SCROLLBAR_DOWN | Bit value of the 'scrollbar down' flag. |
ND_SCROLLBAR_BTN | Bit value of the 'scrollbar up' or 'scrollbar down' flag. |
ND_DROPDOWN_CLOSED | Bit value of the 'dropdown closed' flag. |
Definition at line 336 of file widget_type.h.
enum ResizeWidgetValues |
WidgetData values for a resize box widget.
Enumerator | |
---|---|
RWV_SHOW_BEVEL | Bevel of resize box is shown. |
RWV_HIDE_BEVEL | Bevel of resize box is hidden. |
Definition at line 38 of file widget_type.h.
enum SizingType |
Different forms of sizing nested widgets, using NWidgetBase::AssignSizePosition()
Enumerator | |
---|---|
ST_SMALLEST | Initialize nested widget tree to smallest size. Also updates current_x and current_y. |
ST_RESIZE | Resize the nested widget tree. |
Definition at line 120 of file widget_type.h.
Display planes with zero size for NWidgetStacked.
Definition at line 481 of file widget_type.h.
enum WidgetType |
Window widget types, nested widget types, and nested widget part types.
Enumerator | |
---|---|
WWT_EMPTY | Empty widget, place holder to reserve space in widget tree. |
WWT_PANEL | Simple depressed panel. |
WWT_INSET | Pressed (inset) panel, most commonly used as combo box text area. |
WWT_IMGBTN | (Toggle) Button with image |
WWT_IMGBTN_2 | (Toggle) Button with diff image when clicked |
WWT_ARROWBTN | (Toggle) Button with an arrow |
WWT_TEXTBTN | (Toggle) Button with text |
WWT_TEXTBTN_2 | (Toggle) Button with diff text when clicked |
WWT_LABEL | Centered label. |
WWT_TEXT | Pure simple text. |
WWT_MATRIX | Grid of rows and columns.
|
WWT_FRAME | Frame. |
WWT_CAPTION | Window caption (window title between closebox and stickybox) |
WWT_DEBUGBOX | NewGRF debug box (at top-right of a window, between WWT_CAPTION and WWT_SHADEBOX) |
WWT_SHADEBOX | Shade box (at top-right of a window, between WWT_DEBUGBOX and WWT_DEFSIZEBOX) |
WWT_DEFSIZEBOX | Default window size box (at top-right of a window, between WWT_SHADEBOX and WWT_STICKYBOX) |
WWT_STICKYBOX | Sticky box (at top-right of a window, after WWT_DEFSIZEBOX) |
WWT_RESIZEBOX | Resize box (normally at bottom-right of a window) |
WWT_CLOSEBOX | Close box (at top-left of a window) |
WWT_DROPDOWN | Drop down list. |
WWT_EDITBOX | a textbox for typing |
WWT_LAST | Last Item. use WIDGETS_END to fill up padding!! |
NWID_HORIZONTAL | Horizontal container. |
NWID_HORIZONTAL_LTR | Horizontal container that doesn't change the order of the widgets for RTL languages. |
NWID_VERTICAL | Vertical container. |
NWID_MATRIX | Matrix container. |
NWID_SPACER | Invisible widget that takes some space. |
NWID_SELECTION | Stacked widgets, only one visible at a time (eg in a panel with tabs). |
NWID_LAYER | Layered widgets, all visible together. |
NWID_VIEWPORT | Nested widget containing a viewport. |
NWID_BUTTON_DROPDOWN | Button with a drop-down. |
NWID_HSCROLLBAR | Horizontal scrollbar. |
NWID_VSCROLLBAR | Vertical scrollbar. |
NWID_CUSTOM | General Custom widget. |
WPT_ATTRIBUTE_BEGIN | Begin marker for attribute NWidgetPart types. |
WPT_RESIZE | Widget part for specifying resizing. |
WPT_MINSIZE | Widget part for specifying minimal size. |
WPT_MINTEXTLINES | Widget part for specifying minimal number of lines of text. |
WPT_FILL | Widget part for specifying fill. |
WPT_DATATIP | Widget part for specifying data and tooltip. |
WPT_PADDING | Widget part for specifying a padding. |
WPT_PIPSPACE | Widget part for specifying pre/inter/post space for containers. |
WPT_PIPRATIO | Widget part for specifying pre/inter/post ratio for containers. |
WPT_TEXTSTYLE | Widget part for specifying text colour. |
WPT_ALIGNMENT | Widget part for specifying text/image alignment. |
WPT_SCROLLBAR | Widget part for attaching a scrollbar. |
WPT_ASPECT | Widget part for sepcifying aspect ratio. |
WPT_ATTRIBUTE_END | End marker for attribute NWidgetPart types. |
WPT_FUNCTION | Widget part for calling a user function. |
WPT_ENDCONTAINER | Widget part to denote end of a container. |
WWT_PUSHBTN | Normal push-button (no toggle button) with custom drawing. |
WWT_PUSHTXTBTN | Normal push-button (no toggle button) with text caption. |
WWT_PUSHIMGBTN | Normal push-button (no toggle button) with image caption. |
WWT_PUSHARROWBTN | Normal push-button (no toggle button) with arrow caption. |
Definition at line 46 of file widget_type.h.
|
inline |
Return the biggest possible size of a nested widget.
base | Base size of the widget. |
max_space | Available space for the widget. |
step | Stepsize of the widget. |
Definition at line 944 of file widget_type.h.
Referenced by NWidgetNewGRFDisplay::AssignSizePosition(), NWidgetLayer::AssignSizePosition(), NWidgetStacked::AssignSizePosition(), NWidgetHorizontal::AssignSizePosition(), NWidgetVertical::AssignSizePosition(), and NWidgetNewGRFDisplay::SetupSmallestSize().
bool IsContainerWidgetType | ( | WidgetType | tp | ) |
Test if WidgetType is a container widget.
tp | WidgetType to test. |
Definition at line 3240 of file widget.cpp.
References NWID_HORIZONTAL, NWID_HORIZONTAL_LTR, NWID_LAYER, NWID_MATRIX, NWID_SELECTION, NWID_VERTICAL, WWT_FRAME, WWT_INSET, and WWT_PANEL.
Referenced by IsNWidgetTreeClosed(), MakeNWidget(), and MakeWidgetTree().
std::unique_ptr< NWidgetBase > MakeCompanyButtonRows | ( | WidgetID | widget_first, |
WidgetID | widget_last, | ||
Colours | button_colour, | ||
int | max_length, | ||
StringID | button_tooltip, | ||
bool | resizable | ||
) |
Make a number of rows with button-like graphics, for enabling/disabling each company.
widget_first | The first widget index to use. |
widget_last | The last widget index to use. |
colour | The colour in which to draw the button. |
max_length | Maximal number of company buttons in one row. |
button_tooltip | The tooltip-string of every button. |
resizable | Whether the rows are resizable. |
Definition at line 3358 of file widget.cpp.
References GetSpriteSize(), RectPadding::Horizontal(), WidgetDimensions::matrix, WidgetDimensions::unscaled, RectPadding::Vertical(), WWT_PANEL, and ZOOM_LVL_NORMAL.
Referenced by MakeCompanyButtonRowsGraphGUI(), MakeCompanyButtonRowsLinkGraphGUI(), and MakeCompanyButtonRowsScriptDebug().
void SetupWidgetDimensions | ( | ) |
Set up pre-scaled versions of Widget Dimensions.
Definition at line 66 of file widget.cpp.
References _settings_client, WidgetDimensions::bevel, WidgetDimensions::captiontext, WidgetDimensions::closebox, WidgetDimensions::debugbox, WidgetDimensions::defsizebox, WidgetDimensions::dropdownlist, WidgetDimensions::dropdowntext, WidgetDimensions::framerect, WidgetDimensions::frametext, WidgetDimensions::fullbevel, ClientSettings::gui, WidgetDimensions::hscrollbar, WidgetDimensions::hsep_indent, WidgetDimensions::hsep_normal, WidgetDimensions::hsep_wide, WidgetDimensions::imgbtn, WidgetDimensions::inset, WidgetDimensions::matrix, WidgetDimensions::modalpopup, WidgetDimensions::resizebox, GUISettings::scale_bevels, WidgetDimensions::scaled, ScaleGUITrad(), WidgetDimensions::shadebox, WidgetDimensions::stickybox, WidgetDimensions::unscaled, WidgetDimensions::vscrollbar, WidgetDimensions::vsep_normal, and WidgetDimensions::vsep_wide.
Referenced by AdjustGUIZoom(), InitWindowSystem(), GameOptionsWindow::OnClick(), and ReInitAllWindows().
|
staticconstexpr |
Number of bits for the number of columns in the matrix.
Definition at line 23 of file widget_type.h.
Referenced by DrawMatrix().
|
staticconstexpr |
Bits of the WWT_MATRIX widget data.
Lowest bit of the number of columns.
Definition at line 22 of file widget_type.h.
Referenced by DrawMatrix(), SetMatrixDataTip(), and BaseGraphWindow::UpdateWidgetSize().
|
staticconstexpr |
Number of bits for the number of rows in the matrix.
Definition at line 27 of file widget_type.h.
Referenced by DrawMatrix().
|
staticconstexpr |
Lowest bit of the number of rows.
Definition at line 26 of file widget_type.h.
Referenced by DrawMatrix(), SetMatrixDataTip(), and BaseGraphWindow::UpdateWidgetSize().