OpenTTD Source 20241224-master-gee860a5c8e
|
Handling of the default/simple widgets. More...
#include "stdafx.h"
#include "core/backup_type.hpp"
#include "company_func.h"
#include "window_gui.h"
#include "viewport_func.h"
#include "zoom_func.h"
#include "strings_func.h"
#include "transparency.h"
#include "core/geometry_func.hpp"
#include "settings_type.h"
#include "querystring_gui.h"
#include "table/sprites.h"
#include "table/strings.h"
#include "table/string_colours.h"
#include "safeguards.h"
Go to the source code of this file.
Data Structures | |
class | NWidgetLayer |
Functions | |
static RectPadding | ScaleGUITrad (const RectPadding &r) |
Scale a RectPadding to GUI zoom level. | |
static Dimension | ScaleGUITrad (const Dimension &dim) |
Scale a Dimension to GUI zoom level. | |
Dimension | GetScaledSpriteSize (SpriteID sprid) |
Scale sprite size for GUI. | |
void | SetupWidgetDimensions () |
Set up pre-scaled versions of Widget Dimensions. | |
static Point | GetAlignedPosition (const Rect &r, const Dimension &d, StringAlignment align) |
Calculate x and y coordinates for an aligned object within a window. | |
static Point | HandleScrollbarHittest (const Scrollbar *sb, int top, int bottom, bool horizontal) |
Compute the vertical position of the draggable part of scrollbar. | |
static void | ScrollbarClickPositioning (Window *w, NWidgetScrollbar *sb, int x, int y, int mi, int ma) |
Compute new position of the scrollbar after a click and updates the window flags. | |
void | ScrollbarClickHandler (Window *w, NWidgetCore *nw, int x, int y) |
Special handling for the scrollbar widget type. | |
WidgetID | GetWidgetFromPos (const Window *w, int x, int y) |
Returns the index for the widget located at the given position relative to the window. | |
void | DrawFrameRect (int left, int top, int right, int bottom, Colours colour, FrameFlags flags) |
Draw frame rectangle. | |
void | DrawSpriteIgnorePadding (SpriteID img, PaletteID pal, const Rect &r, StringAlignment align) |
static void | DrawImageButtons (const Rect &r, WidgetType type, Colours colour, bool clicked, SpriteID img, StringAlignment align) |
Draw an image button. | |
static void | DrawLabel (const Rect &r, WidgetType type, bool clicked, TextColour colour, StringID str, StringAlignment align, FontSize fs) |
Draw the label-part of a widget. | |
static void | DrawText (const Rect &r, TextColour colour, StringID str, StringAlignment align, FontSize fs) |
Draw text. | |
static void | DrawInset (const Rect &r, Colours colour, TextColour text_colour, StringID str, StringAlignment align, FontSize fs) |
Draw an inset widget. | |
static void | DrawMatrix (const Rect &r, Colours colour, bool clicked, uint16_t data, uint resize_x, uint resize_y) |
Draw a matrix widget. | |
static void | DrawVerticalScrollbar (const Rect &r, Colours colour, bool up_clicked, bool bar_dragged, bool down_clicked, const Scrollbar *scrollbar) |
Draw a vertical scrollbar. | |
static void | DrawHorizontalScrollbar (const Rect &r, Colours colour, bool left_clicked, bool bar_dragged, bool right_clicked, const Scrollbar *scrollbar) |
Draw a horizontal scrollbar. | |
static void | DrawFrame (const Rect &r, Colours colour, TextColour text_colour, StringID str, StringAlignment align, FontSize fs) |
Draw a frame widget. | |
static void | DrawShadeBox (const Rect &r, Colours colour, bool clicked) |
Draw a shade box. | |
static void | DrawStickyBox (const Rect &r, Colours colour, bool clicked) |
Draw a sticky box. | |
static void | DrawDefSizeBox (const Rect &r, Colours colour, bool clicked) |
Draw a defsize box. | |
static void | DrawDebugBox (const Rect &r, Colours colour, bool clicked) |
Draw a NewGRF debug box. | |
static void | DrawResizeBox (const Rect &r, Colours colour, bool at_left, bool clicked, bool bevel) |
Draw a resize box. | |
static void | DrawCloseBox (const Rect &r, Colours colour) |
Draw a close box. | |
void | DrawCaption (const Rect &r, Colours colour, Owner owner, TextColour text_colour, StringID str, StringAlignment align, FontSize fs) |
Draw a caption bar. | |
static void | DrawButtonDropdown (const Rect &r, Colours colour, bool clicked_button, bool clicked_dropdown, StringID str, StringAlignment align) |
Draw a button with a dropdown (WWT_DROPDOWN and NWID_BUTTON_DROPDOWN). | |
static void | DrawOutline (const Window *, const NWidgetBase *wid) |
Rect | ScrollRect (Rect r, const Scrollbar &sb, int resize_step) |
Apply 'scroll' to a rect to be drawn in. | |
static bool | IsAttributeWidgetPartType (WidgetType tp) |
Test if (an NWidgetPart) WidgetType is an attribute widget part type. | |
static void | ApplyNWidgetPartAttribute (const NWidgetPart &nwid, NWidgetBase *dest) |
Apply an attribute NWidgetPart to an NWidget. | |
static std::unique_ptr< NWidgetBase > | MakeNWidget (const NWidgetPart &nwid) |
Make NWidget from an NWidgetPart. | |
static std::span< constNWidgetPart >::iterator | MakeNWidget (std::span< const NWidgetPart >::iterator nwid_begin, std::span< const NWidgetPart >::iterator nwid_end, std::unique_ptr< NWidgetBase > &dest, bool &fill_dest) |
Construct a single nested widget in *dest from its parts. | |
bool | IsContainerWidgetType (WidgetType tp) |
Test if WidgetType is a container widget. | |
static std::span< constNWidgetPart >::iterator | MakeWidgetTree (std::span< const NWidgetPart >::iterator nwid_begin, std::span< const NWidgetPart >::iterator nwid_end, std::unique_ptr< NWidgetBase > &parent) |
Build a nested widget tree by recursively filling containers with nested widgets read from their parts. | |
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) |
Make a number of rows with button-like graphics, for enabling/disabling each company. | |
Variables | |
bool | _draw_widget_outlines |
Handling of the default/simple widgets.
Definition in file widget.cpp.
|
static |
Apply an attribute NWidgetPart to an NWidget.
nwid | Attribute NWidgetPart |
dest | NWidget to apply attribute to. |
Definition at line 3061 of file widget.cpp.
References NWidgetPartAlignment::align, NWidgetPart::NWidgetPartUnion::align, NWidgetPart::NWidgetPartUnion::aspect, NWidgetBase::aspect_flags, NWidgetBase::aspect_ratio, NWidgetPartTextStyle::colour, NWidgetPartDataTip::data, NWidgetPart::NWidgetPartUnion::data_tip, FS_BEGIN, NWidgetPartWidget::index, NWidgetPartTextLines::lines, NWidgetPart::NWidgetPartUnion::padding, NWidgetPart::NWidgetPartUnion::pip, NWidgetPartPIP::post, NWidgetCore::scrollbar_index, NWidgetCore::SetAlignment(), NWidgetResizeBase::SetFill(), NWidgetResizeBase::SetMinimalSize(), NWidgetResizeBase::SetMinimalTextLines(), NWidgetBase::SetPadding(), NWidgetPIPContainer::SetPIP(), NWidgetBackground::SetPIP(), NWidgetBackground::SetPIPRatio(), NWidgetPIPContainer::SetPIPRatio(), NWidgetResizeBase::SetResize(), NWidgetCore::SetTextStyle(), NWidgetPartTextLines::size, NWidgetPartTextStyle::size, NWidgetPartTextLines::spacing, NWidgetPart::NWidgetPartUnion::text_lines, NWidgetPart::NWidgetPartUnion::text_style, NWidgetCore::tool_tip, NWidgetPartDataTip::tooltip, NWidgetPart::type, NWidgetPart::NWidgetPartUnion::widget, NWidgetCore::widget_data, WPT_ALIGNMENT, WPT_ASPECT, WPT_DATATIP, WPT_FILL, WPT_MINSIZE, WPT_MINTEXTLINES, WPT_PADDING, WPT_PIPRATIO, WPT_PIPSPACE, WPT_RESIZE, WPT_SCROLLBAR, WPT_TEXTSTYLE, and NWidgetPart::NWidgetPartUnion::xy.
Referenced by MakeNWidget().
|
inlinestatic |
Draw a button with a dropdown (WWT_DROPDOWN and NWID_BUTTON_DROPDOWN).
r | Rectangle containing the widget. |
colour | Background colour of the widget. |
clicked_button | The button-part is clicked. |
clicked_dropdown | The drop-down part is clicked. |
str | Text of the button. |
align | Alignment of the text within the dropdown. |
Definition at line 710 of file widget.cpp.
References _current_text_dir, CenterBounds(), DrawFrameRect(), DrawImageButtons(), DrawString(), NWidgetLeaf::dropdown_dimension, WidgetDimensions::dropdowntext, FR_LOWERED, FS_NORMAL, GetCharacterHeight(), SA_CENTER, WidgetDimensions::scaled, TD_LTR, Rect::WithWidth(), and WWT_DROPDOWN.
Referenced by NWidgetLeaf::Draw().
void DrawCaption | ( | const Rect & | r, |
Colours | colour, | ||
Owner | owner, | ||
TextColour | text_colour, | ||
StringID | str, | ||
StringAlignment | align, | ||
FontSize | fs | ||
) |
Draw a caption bar.
r | Rectangle of the bar. |
colour | Colour of the window. |
owner | 'Owner' of the window. |
text_colour | Colour of the text. |
str | Text to draw in the bar. |
align | Alignment of the text. |
fs | Font size of the text. |
Definition at line 680 of file widget.cpp.
References _company_colours, WidgetDimensions::bevel, WidgetDimensions::captiontext, DrawFrameRect(), DrawString(), FR_BORDERONLY, FR_DARKENED, FR_LOWERED, GetAlignedPosition(), GetColourGradient(), GetStringBoundingBox(), GfxFillRect(), MAX_COMPANIES, WidgetDimensions::scaled, and Rect::Shrink().
Referenced by NWidgetLeaf::Draw(), and NewsWindow::DrawWidget().
|
inlinestatic |
Draw a close box.
r | Rectangle of the box.` |
colour | Colour of the close box. |
Definition at line 659 of file widget.cpp.
References CenterBounds(), DrawFrameRect(), DrawSprite(), GetSpriteSize(), PALETTE_TEXT_RECOLOUR, and ScaleSpriteTrad().
Referenced by NWidgetLeaf::Draw().
|
inlinestatic |
Draw a NewGRF debug box.
r | Rectangle of the box. |
colour | Colour of the debug box. |
clicked | Box is lowered. |
Definition at line 631 of file widget.cpp.
References DrawImageButtons(), SA_CENTER, and WWT_DEBUGBOX.
Referenced by NWidgetLeaf::Draw().
|
inlinestatic |
Draw a defsize box.
r | Rectangle of the box. |
colour | Colour of the defsize box. |
clicked | Box is lowered. |
Definition at line 620 of file widget.cpp.
References DrawImageButtons(), SA_CENTER, and WWT_DEFSIZEBOX.
Referenced by NWidgetLeaf::Draw().
|
inlinestatic |
Draw a frame widget.
r | Rectangle of the frame. |
colour | Colour of the frame. |
text_colour | Colour of the text. |
str | Text of the frame. |
align | Alignment of the text in the frame. |
fs | Font size of the text. |
Definition at line 545 of file widget.cpp.
References _current_text_dir, WidgetDimensions::bevel, DrawString(), Rect::Expand(), WidgetDimensions::frametext, FS_NORMAL, GetCharacterHeight(), GetColourGradient(), GfxFillRect(), WidgetDimensions::scaled, ScaleGUITrad(), Rect::Shrink(), and TD_LTR.
Referenced by NWidgetBackground::Draw().
void DrawFrameRect | ( | int | left, |
int | top, | ||
int | right, | ||
int | bottom, | ||
Colours | colour, | ||
FrameFlags | flags | ||
) |
Draw frame rectangle.
left | Left edge of the frame |
top | Top edge of the frame |
right | Right edge of the frame |
bottom | Bottom edge of the frame |
colour | Colour table to use. |
flags | Flags controlling how to draw the frame. |
Definition at line 283 of file widget.cpp.
References FILLRECT_RECOLOUR, FR_BORDERONLY, FR_DARKENED, FR_LOWERED, FR_TRANSPARENT, GetColourGradient(), GfxFillRect(), PALETTE_TO_TRANSPARENT, WidgetDimensions::scaled, and Rect::Shrink().
Referenced by NWidgetBackground::Draw(), NWidgetLeaf::Draw(), DrawAircraftImage(), DrawArrowButtons(), DrawBoolButton(), DrawButtonDropdown(), NetworkClientListWindow::DrawButtons(), DrawCaption(), DrawCloseBox(), DrawDropDownButton(), DrawHorizontalScrollbar(), DrawImageButtons(), DrawInset(), DrawMatrix(), DrawResizeBox(), DrawRoadVehImage(), DrawShipImage(), DrawSliderWidget(), DrawTrainImage(), NewGRFInspectWindow::DrawVehicleChainWidget(), DrawVerticalScrollbar(), GenerateProgressWindow::DrawWidget(), BaseGraphWindow::DrawWidget(), PaymentRatesGraphWindow::DrawWidget(), IndustryProductionGraphWindow::DrawWidget(), BaseNetworkContentDownloadStatusWindow::DrawWidget(), NetworkJoinStatusWindow::DrawWidget(), ScanProgressWindow::DrawWidget(), StoryBookWindow::DrawWidget(), TransparenciesWindow::DrawWidget(), RefitWindow::DrawWidget(), and Window::DrawWidgets().
|
inlinestatic |
Draw a horizontal scrollbar.
r | Rectangle of the scrollbar widget. |
colour | Colour of the scrollbar widget. |
left_clicked | Left-arrow is clicked. |
bar_dragged | Bar is dragged. |
right_clicked | Right-arrow is clicked. |
scrollbar | Scrollbar size, offset, and capacity information. |
Definition at line 505 of file widget.cpp.
References WidgetDimensions::bevel, DrawFrameRect(), DrawImageButtons(), FILLRECT_CHECKER, FR_LOWERED, GetColourGradient(), GfxFillRect(), HandleScrollbarHittest(), Rect::Height(), NWID_HSCROLLBAR, SA_CENTER, WidgetDimensions::scaled, and Rect::WithWidth().
Referenced by NWidgetScrollbar::Draw().
|
inlinestatic |
Draw an image button.
r | Rectangle of the button. |
type | Widget type (WWT_IMGBTN or WWT_IMGBTN_2). |
colour | Colour of the button. |
clicked | Button is clicked. |
img | Sprite to draw. |
align | Alignment of the sprite. |
Definition at line 338 of file widget.cpp.
References DrawFrameRect(), FR_LOWERED, and WWT_IMGBTN_2.
Referenced by NWidgetLeaf::Draw(), DrawButtonDropdown(), DrawDebugBox(), DrawDefSizeBox(), DrawHorizontalScrollbar(), DrawShadeBox(), DrawStickyBox(), and DrawVerticalScrollbar().
|
inlinestatic |
Draw an inset widget.
r | Rectangle of the background. |
colour | Colour of the inset. |
text_colour | Colour of the text. |
str | Text to draw. |
align | Alignment of the text. |
fs | Font size of the text. |
Definition at line 390 of file widget.cpp.
References DrawFrameRect(), DrawString(), FR_DARKENED, FR_LOWERED, WidgetDimensions::inset, WidgetDimensions::scaled, and Rect::Shrink().
Referenced by NWidgetBackground::Draw().
|
inlinestatic |
Draw the label-part of a widget.
r | Rectangle of the label background. |
type | Widget type (WWT_TEXTBTN, WWT_TEXTBTN_2, or WWT_LABEL). |
clicked | Label is clicked. |
colour | Colour of the text. |
str | Text to draw. |
align | Alignment of the text. |
fs | Font size of the text. |
Definition at line 357 of file widget.cpp.
References DrawString(), GetAlignedPosition(), GetStringBoundingBox(), and WWT_TEXTBTN_2.
Referenced by NWidgetLeaf::Draw().
|
inlinestatic |
Draw a matrix widget.
r | Rectangle of the matrix background. |
colour | Colour of the background. |
clicked | Matrix is rendered lowered. |
data | Data of the widget, number of rows and columns of the widget. |
resize_x | Matrix resize unit size. |
resize_y | Matrix resize unit size. |
Definition at line 405 of file widget.cpp.
References WidgetDimensions::bevel, DrawFrameRect(), FR_LOWERED, GB(), GetColourGradient(), GfxFillRect(), Rect::Height(), MAT_COL_BITS, MAT_COL_START, MAT_ROW_BITS, MAT_ROW_START, WidgetDimensions::scaled, and Rect::Width().
Referenced by NWidgetLeaf::Draw().
|
static |
Definition at line 788 of file widget.cpp.
|
inlinestatic |
Draw a resize box.
r | Rectangle of the box. |
colour | Colour of the resize box. |
at_left | Resize box is at left-side of the window, |
clicked | Box is lowered. |
bevel | Draw bevel iff set. |
Definition at line 644 of file widget.cpp.
References WidgetDimensions::bevel, DrawFrameRect(), FR_LOWERED, GetColourGradient(), GfxFillRect(), SA_BOTTOM, SA_FORCE, SA_LEFT, SA_RIGHT, WidgetDimensions::scaled, ScaleGUITrad(), and Rect::Shrink().
Referenced by NWidgetLeaf::Draw().
|
inlinestatic |
Draw a shade box.
r | Rectangle of the box. |
colour | Colour of the shade box. |
clicked | Box is lowered. |
Definition at line 598 of file widget.cpp.
References DrawImageButtons(), SA_CENTER, and WWT_SHADEBOX.
Referenced by NWidgetLeaf::Draw().
void DrawSpriteIgnorePadding | ( | SpriteID | img, |
PaletteID | pal, | ||
const Rect & | r, | ||
StringAlignment | align | ||
) |
Definition at line 318 of file widget.cpp.
|
inlinestatic |
Draw a sticky box.
r | Rectangle of the box. |
colour | Colour of the sticky box. |
clicked | Box is lowered. |
Definition at line 609 of file widget.cpp.
References DrawImageButtons(), SA_CENTER, and WWT_STICKYBOX.
Referenced by NWidgetLeaf::Draw().
|
inlinestatic |
Draw text.
r | Rectangle of the background. |
colour | Colour of the text. |
str | Text to draw. |
align | Alignment of the text. |
fs | Font size of the text. |
Definition at line 374 of file widget.cpp.
References DrawString(), GetAlignedPosition(), and GetStringBoundingBox().
Referenced by NWidgetLeaf::Draw().
|
inlinestatic |
Draw a vertical scrollbar.
r | Rectangle of the scrollbar widget. |
colour | Colour of the scrollbar widget. |
up_clicked | Up-arrow is clicked. |
bar_dragged | Bar is dragged. |
down_clicked | Down-arrow is clicked. |
scrollbar | Scrollbar size, offset, and capacity information. |
Definition at line 465 of file widget.cpp.
References WidgetDimensions::bevel, DrawFrameRect(), DrawImageButtons(), FILLRECT_CHECKER, FR_LOWERED, GetColourGradient(), GfxFillRect(), HandleScrollbarHittest(), NWID_VSCROLLBAR, SA_CENTER, WidgetDimensions::scaled, Rect::Width(), and Rect::WithHeight().
Referenced by NWidgetScrollbar::Draw().
|
inlinestatic |
Calculate x and y coordinates for an aligned object within a window.
r | Rectangle of the widget to be drawn in. |
d | Dimension of the object to be drawn. |
align | Alignment of the object. |
Definition at line 106 of file widget.cpp.
References _current_text_dir, CenterBounds(), SA_BOTTOM, SA_FORCE, SA_HOR_CENTER, SA_HOR_MASK, SA_LEFT, SA_RIGHT, SA_TOP, SA_VERT_CENTER, SA_VERT_MASK, and TD_RTL.
Referenced by DrawCaption(), DrawLabel(), and DrawText().
Scale sprite size for GUI.
Offset is ignored.
Definition at line 54 of file widget.cpp.
References GetSpriteSize(), ScaleGUITrad(), and ZOOM_LVL_NORMAL.
Referenced by DrawEngineList(), VehicleViewWindow::DrawWidget(), QueryString::GetBoundingRect(), QueryString::GetCaretPosition(), QueryString::GetCharAtPosition(), DepotWindow::OnInit(), NetworkContentListWindow::OnInit(), NetworkGameWindow::OnInit(), NWidgetLeaf::SetupSmallestSize(), BuildBridgeWindow::UpdateWidgetSize(), SelectCompanyManagerFaceWindow::UpdateWidgetSize(), CompanyWindow::UpdateWidgetSize(), BuyCompanyWindow::UpdateWidgetSize(), ErrmsgWindow::UpdateWidgetSize(), NewGRFWindow::UpdateWidgetSize(), NewsWindow::UpdateWidgetSize(), and VehicleViewWindow::UpdateWidgetSize().
Returns the index for the widget located at the given position relative to the window.
It includes all widget-corner pixels as well.
Definition at line 268 of file widget.cpp.
References NWidgetCore::index, and Window::nested_root.
Referenced by DropdownWindow::GetDropDownItem(), HandleMouseDragDrop(), and Window::OnDropdownClose().
|
static |
Compute the vertical position of the draggable part of scrollbar.
sb | Scrollbar list data |
top | Top position of the scrollbar (top position of the up-button) |
bottom | Bottom position of the scrollbar (bottom position of the down-button) |
horizontal | Whether the scrollbar is horizontal or not |
Definition at line 135 of file widget.cpp.
References _current_text_dir, Scrollbar::GetCapacity(), Scrollbar::GetCount(), Scrollbar::GetPosition(), and TD_RTL.
Referenced by DrawHorizontalScrollbar(), DrawVerticalScrollbar(), and ScrollbarClickPositioning().
|
static |
Test if (an NWidgetPart) WidgetType is an attribute widget part type.
tp | WidgetType to test. |
Definition at line 3050 of file widget.cpp.
References WPT_ATTRIBUTE_BEGIN, and WPT_ATTRIBUTE_END.
Referenced by MakeNWidget(), and MakeNWidget().
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().
|
static |
Make NWidget from an NWidgetPart.
nwid | NWidgetPart. |
Definition at line 3169 of file widget.cpp.
References NWidgetPartWidget::colour, NWidgetPart::NWidgetPartUnion::cont_flags, NWidgetPart::NWidgetPartUnion::func_ptr, NWidgetPartWidget::index, IsAttributeWidgetPartType(), NWID_BUTTON_DROPDOWN, NWID_HORIZONTAL, NWID_HORIZONTAL_LTR, NWID_HSCROLLBAR, NWID_LAYER, NWID_MATRIX, NWID_SELECTION, NWID_SPACER, NWID_VERTICAL, NWID_VIEWPORT, NWID_VSCROLLBAR, NWidgetPart::type, NWidgetPart::NWidgetPartUnion::widget, WPT_ENDCONTAINER, WPT_FUNCTION, WWT_FRAME, WWT_INSET, WWT_LAST, and WWT_PANEL.
Referenced by MakeNWidget(), and MakeWidgetTree().
|
static |
Construct a single nested widget in *dest from its parts.
Construct a NWidgetBase object from a NWidget function, and apply all attributes that follow it, until encountering a EndContainer, another NWidget, or the end of the parts array.
nwid_begin | Iterator to beginning of nested widget parts. | |
nwid_end | Iterator to ending of nested widget parts. | |
[out] | dest | Address of pointer to use for returning the composed widget. |
[out] | fill_dest | Fill the composed widget with child widgets. |
Definition at line 3213 of file widget.cpp.
References ApplyNWidgetPartAttribute(), IsAttributeWidgetPartType(), IsContainerWidgetType(), MakeNWidget(), and WPT_ENDCONTAINER.
|
static |
Build a nested widget tree by recursively filling containers with nested widgets read from their parts.
nwid_begin | Iterator to beginning of nested widget parts. |
nwid_end | Iterator to ending of nested widget parts. |
parent | Pointer or container to use for storing the child widgets (*parent == nullptr or *parent == container or background widget). |
Definition at line 3253 of file widget.cpp.
References NWidgetBackground::Add(), NWidgetContainer::Add(), IsContainerWidgetType(), MakeNWidget(), MakeWidgetTree(), and WPT_ENDCONTAINER.
Referenced by MakeNWidgets(), MakeWidgetTree(), and MakeWindowNWidgetTree().
Scale a Dimension to GUI zoom level.
d | Dimension at ZOOM_BASE (traditional "normal" interface size). |
Definition at line 45 of file widget.cpp.
References ScaleGUITrad().
|
inlinestatic |
Scale a RectPadding to GUI zoom level.
r | RectPadding at ZOOM_BASE (traditional "normal" interface size). |
Definition at line 35 of file widget.cpp.
References ScaleGUITrad().
Referenced by NWidgetServerListHeader::AssignSizePosition(), NWidgetNewGRFDisplay::AssignSizePosition(), SpriteFontCache::ClearFontCache(), ClickSliderWidget(), NWidgetLeaf::Draw(), DrawCargoIconOverlay(), LinkGraphOverlay::DrawContent(), DrawFrame(), BaseGraphWindow::DrawGraph(), DrawHouseInGUI(), DrawLayoutLine(), LinkGraphOverlay::DrawLinks(), DrawResizeBox(), DrawSliderWidget(), SmallMapWindow::DrawSmallMap(), LinkGraphOverlay::DrawStationDots(), BaseVehicleListWindow::DrawVehicleListItems(), LinkGraphOverlay::DrawVertex(), DepotWindow::DrawWidget(), SmallMapWindow::DrawWidget(), StatusBarWindow::DrawWidget(), ScenarioEditorLandscapeGenerationWindow::DrawWidget(), BuildTreesWindow::DrawWidget(), VehicleDetailsWindow::DrawWidget(), WindowDesc::GetDefaultHeight(), WindowDesc::GetDefaultWidth(), GetMaxTreeSpriteSize(), VehicleDetailsWindow::GetRoadVehDetailsHeight(), GetScaledSpriteSize(), GetVehicleListHeight(), NetworkDrawChatMessage(), NetworkInitChatMessage(), NetworkReInitChatBoxSize(), IndustryCargoesWindow::OnInit(), MainWindow::OnPaint(), NetworkClientListWindow::OnTooltip(), ScaleGUITrad(), ScaleGUITrad(), NWidgetResizeBase::SetMinimalSize(), NWidgetResizeBase::SetMinimalTextLines(), NWidgetPIPContainer::SetPIP(), NWidgetLeaf::SetupSmallestSize(), SetupWidgetDimensions(), ShowDropDownList(), SpriteFontCache::SpriteFontCache(), StationsWndShowStationRating(), UpdateGUIZoom(), BuildDocksDepotWindow::UpdateWidgetSize(), BaseGraphWindow::UpdateWidgetSize(), LandInfoWindow::UpdateWidgetSize(), TooltipsWindow::UpdateWidgetSize(), NetworkClientListWindow::UpdateWidgetSize(), SpriteAlignerWindow::UpdateWidgetSize(), BuildObjectWindow::UpdateWidgetSize(), PickerWindow::UpdateWidgetSize(), BuildRailStationWindow::UpdateWidgetSize(), BuildRailDepotWindow::UpdateWidgetSize(), BuildRoadDepotWindow::UpdateWidgetSize(), BuildRoadStationWindow::UpdateWidgetSize(), CompanyStationsWindow::UpdateWidgetSize(), ScenarioEditorLandscapeGenerationWindow::UpdateWidgetSize(), BuildTreesWindow::UpdateWidgetSize(), RefitWindow::UpdateWidgetSize(), and VehicleDetailsWindow::UpdateWidgetSize().
void ScrollbarClickHandler | ( | Window * | w, |
NWidgetCore * | nw, | ||
int | x, | ||
int | y | ||
) |
Special handling for the scrollbar widget type.
Handles the special scrolling buttons and other scrolling.
w | Window on which a scroll was performed. |
nw | Pointer to the scrollbar widget. |
x | The X coordinate of the mouse click. |
y | The Y coordinate of the mouse click. |
Definition at line 244 of file widget.cpp.
References NWidgetBase::current_x, NWidgetBase::current_y, NWID_HSCROLLBAR, NWidgetBase::pos_x, NWidgetBase::pos_y, ScrollbarClickPositioning(), and NWidgetBase::type.
Referenced by DispatchLeftClickEvent().
|
static |
Compute new position of the scrollbar after a click and updates the window flags.
w | Window on which a scroll was performed. |
sb | Scrollbar |
mi | Minimum coordinate of the scroll bar. |
ma | Maximum coordinate of the scroll bar. |
x | The X coordinate of the mouse click. |
y | The Y coordinate of the mouse click. |
Definition at line 180 of file widget.cpp.
References _current_text_dir, NWidgetCore::disp_flags, HandleScrollbarHittest(), NWidgetCore::index, Window::mouse_capture_widget, NDB_SCROLLBAR_DOWN, NDB_SCROLLBAR_UP, NWID_HSCROLLBAR, CursorVars::pos, SetBit(), Window::SetDirty(), NWidgetBase::SetDirty(), Scrollbar::SS_BIG, TD_RTL, NWidgetBase::type, and Scrollbar::UpdatePosition().
Referenced by ScrollbarClickHandler().
Apply 'scroll' to a rect to be drawn in.
r | Rect to be 'scrolled'. |
sb | The scrollbar affecting the scroll. |
resize_step | Resize step of the widget/scrollbar (1 if the scrollbar is pixel-based.) |
Definition at line 2468 of file widget.cpp.
References _current_text_dir, Scrollbar::GetCount(), Scrollbar::GetPosition(), Scrollbar::IsVertical(), and TD_RTL.
Referenced by IndustryDirectoryWindow::DrawWidget(), TextfileWindow::DrawWidget(), and ScriptDebugWindow::DrawWidgetLog().
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().
bool _draw_widget_outlines |
Definition at line 786 of file widget.cpp.