OpenTTD
Data Structures | Typedefs | Enumerations | Functions | Variables
widget_type.h File Reference

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  NWidgetPart
 Partial widget specification to allow NWidgets to be written nested. More...

Typedefs

typedef NWidgetBaseNWidgetFunctionType (int *biggest_index)
 Pointer to function returning a nested widget.

Enumerations

enum  MatrixWidgetValues { MAT_COL_START = 0, MAT_COL_BITS = 8, MAT_ROW_START = 8, MAT_ROW_BITS = 8 }
 Bits of the WWT_MATRIX widget data. More...
enum  ArrowWidgetValues { AWV_DECREASE, AWV_INCREASE, AWV_LEFT, AWV_RIGHT }
 Values for an arrow 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_VIEWPORT, NWID_BUTTON_DROPDOWN, NWID_HSCROLLBAR, NWID_VSCROLLBAR,
  WPT_RESIZE, WPT_MINSIZE, WPT_MINTEXTLINES, WPT_FILL,
  WPT_DATATIP, WPT_PADDING, WPT_PIPSPACE, WPT_ENDCONTAINER,
  WPT_FUNCTION, WPT_SCROLLBAR, 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  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, 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
}
 Nested widget flags that affect display and interaction withe '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, NC_NONE = 0, NC_EQUALSIZE = 1 << NCB_EQUALSIZE }
 Nested widget container flags,. More...

Functions

static uint ComputeMaxSize (uint base, uint max_space, uint step)
 Return the biggest possible size of a nested widget.
static NWidgetPart SetResize (int16 dx, int16 dy)
 Widget part function for setting the resize step.
static NWidgetPart SetMinimalSize (int16 x, int16 y)
 Widget part function for setting the minimal size.
static NWidgetPart SetMinimalTextLines (uint8 lines, uint8 spacing, FontSize size=FS_NORMAL)
 Widget part function for setting the minimal text lines.
static NWidgetPart SetFill (uint fill_x, uint fill_y)
 Widget part function for setting filling.
static NWidgetPart EndContainer ()
 Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME, WWT_INSET, or WWT_PANEL).
static NWidgetPart SetDataTip (uint32 data, StringID tip)
 Widget part function for setting the data and tooltip.
static NWidgetPart SetMatrixDataTip (uint8 cols, uint8 rows, StringID tip)
 Widget part function for setting the data and tooltip of WWT_MATRIX widgets.
static NWidgetPart SetPadding (uint8 top, uint8 right, uint8 bottom, uint8 left)
 Widget part function for setting additional space around a widget.
static NWidgetPart SetPadding (uint8 padding)
 Widget part function for setting a padding.
static NWidgetPart SetPIP (uint8 pre, uint8 inter, uint8 post)
 Widget part function for setting a pre/inter/post spaces.
static NWidgetPart SetScrollbar (int index)
 Attach a scrollbar to a widget.
static NWidgetPart NWidget (WidgetType tp, Colours col, int16 idx=-1)
 Widget part function for starting a new 'real' widget.
static NWidgetPart NWidget (WidgetType tp, NWidContainerFlags cont_flags=NC_NONE)
 Widget part function for starting a new horizontal container, vertical container, or spacer widget.
static NWidgetPart NWidgetFunction (NWidgetFunctionType *func_ptr)
 Obtain a nested widget (sub)tree from an external source.
NWidgetContainerMakeNWidgets (const NWidgetPart *parts, int count, int *biggest_index, NWidgetContainer *container)
 Construct a nested widget tree from an array of parts.
NWidgetContainerMakeWindowNWidgetTree (const NWidgetPart *parts, int count, int *biggest_index, NWidgetStacked **shade_select)
 Make a nested widget tree for a window from a parts array.
NWidgetBaseMakeCompanyButtonRows (int *biggest_index, int widget_first, int widget_last, int max_length, StringID button_tooltip)
 Make a number of rows with button-like graphics, for enabling/disabling each company.

Variables

static const int WIDGET_LIST_END = -1
 indicate the end of widgets' list for vararg functions

Detailed Description

Definitions about widgets.

Definition in file widget_type.h.

Typedef Documentation

typedef NWidgetBase* NWidgetFunctionType(int *biggest_index)

Pointer to function returning a nested widget.

Parameters
biggest_indexPointer to storage for collecting the biggest index used in the nested widget.
Returns
Nested widget (tree).
Postcondition
*biggest_index must contain the value of the biggest index in the returned tree.

Definition at line 904 of file widget_type.h.

Enumeration Type Documentation

Values for an arrow widget.

Enumerator:
AWV_DECREASE 

Arrow to the left or in case of RTL to the right.

AWV_INCREASE 

Arrow to the right or in case of RTL to the left.

AWV_LEFT 

Force the arrow to the left.

AWV_RIGHT 

Force the arrow to the right.

Definition at line 36 of file widget_type.h.

Bits of the WWT_MATRIX widget data.

Enumerator:
MAT_COL_START 

Lowest bit of the number of columns.

MAT_COL_BITS 

Number of bits for the number of columns in the matrix.

MAT_ROW_START 

Lowest bit of the number of rows.

MAT_ROW_BITS 

Number of bits for the number of rows in the matrix.

Definition at line 25 of file widget_type.h.

Nested widget container flags,.

Enumerator:
NCB_EQUALSIZE 

Containers should keep all their (resizing) children equally large.

NC_NONE 

All flags cleared.

NC_EQUALSIZE 

Value of the NCB_EQUALSIZE flag.

Definition at line 425 of file widget_type.h.

Nested widget flags that affect display and interaction withe '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.

See Also
#NWID_BUTTON_DRPDOWN
NDB_SCROLLBAR_UP 

Up-button is lowered bit.

NDB_SCROLLBAR_DOWN 

Down-button is lowered bit.

NDB_HIGHLIGHT 

Highlight of widget is on.

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.

Definition at line 251 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 111 of file widget_type.h.

Display planes with zero size for NWidgetStacked.

Enumerator:
SZSP_VERTICAL 

Display plane with zero size horizontally, and filling and resizing vertically.

SZSP_HORIZONTAL 

Display plane with zero size vertically, and filling and resizing horizontally.

SZSP_NONE 

Display plane with zero size in both directions (none filling and resizing).

SZSP_BEGIN 

First zero-size plane.

Definition at line 387 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 array.

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.

See Also
MatrixWidgetValues
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_VIEWPORT 

Nested widget containing a viewport.

NWID_BUTTON_DROPDOWN 

Button with a drop-down.

NWID_HSCROLLBAR 

Horizontal scrollbar.

NWID_VSCROLLBAR 

Vertical scrollbar.

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_ENDCONTAINER 

Widget part to denote end of a container.

WPT_FUNCTION 

Widget part for calling a user function.

WPT_SCROLLBAR 

Widget part for attaching a scrollbar.

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.

Function Documentation

static uint ComputeMaxSize ( uint  base,
uint  max_space,
uint  step 
)
inlinestatic

Return the biggest possible size of a nested widget.

Parameters
baseBase size of the widget.
max_spaceAvailable space for the widget.
stepStepsize of the widget.
Returns
Biggest possible size of the widget, assuming that base may only be incremented by step size steps.

Definition at line 798 of file widget_type.h.

Referenced by NWidgetStacked::AssignSizePosition(), NWidgetHorizontal::AssignSizePosition(), NWidgetVertical::AssignSizePosition(), NWidgetNewGRFDisplay::AssignSizePosition(), and NWidgetNewGRFDisplay::SetupSmallestSize().

NWidgetBase* MakeCompanyButtonRows ( int *  biggest_index,
int  widget_first,
int  widget_last,
int  max_length,
StringID  button_tooltip 
)

Make a number of rows with button-like graphics, for enabling/disabling each company.

Parameters
biggest_indexStorage for collecting the biggest index used in the returned tree.
widget_firstThe first widget index to use.
widget_lastThe last widget index to use.
max_lengthMaximal number of company buttons in one row.
button_tooltipThe tooltip-string of every button.
Returns
Panel with rows of company buttons.
Postcondition
*biggest_index contains the largest used index in the tree.

Definition at line 2864 of file widget.cpp.

References NWidgetContainer::Add(), GetSpriteSize(), NWidgetCore::SetDataTip(), NWidgetResizeBase::SetFill(), NWidgetResizeBase::SetMinimalSize(), NWidgetResizeBase::SetResize(), WD_MATRIX_BOTTOM, WD_MATRIX_LEFT, WD_MATRIX_RIGHT, WD_MATRIX_TOP, and WWT_PANEL.

Referenced by MakeCompanyButtonRowsAIDebug(), MakeCompanyButtonRowsGraphGUI(), and MakeCompanyButtonRowsLinkGraphGUI().