OpenTTD Source 20250426-master-gbb1d561369
|
Handling of the default/simple widgets. More...
#include "stdafx.h"
#include "core/backup_type.hpp"
#include "company_func.h"
#include "settings_gui.h"
#include "strings_type.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 std::string | GetStringForWidget (const Window *w, const NWidgetCore *nwid, bool secondary=false) |
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, TextColour colour, std::string_view str, StringAlignment align, FontSize fs) |
Draw the label-part of a widget. | |
static void | DrawText (const Rect &r, TextColour colour, std::string_view str, StringAlignment align, FontSize fs) |
Draw text. | |
static void | DrawInset (const Rect &r, Colours colour, TextColour text_colour, std::string_view str, StringAlignment align, FontSize fs) |
Draw an inset widget. | |
static void | DrawMatrix (const Rect &r, Colours colour, bool clicked, uint32_t num_columns, uint32_t num_rows, 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, std::string_view 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, std::string_view str, StringAlignment align, FontSize fs) |
Draw a caption bar. | |
static void | DrawButtonDropdown (const Rect &r, Colours colour, bool clicked_button, bool clicked_dropdown, std::string_view 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. | |
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.
void ApplyNWidgetPartAttribute | ( | const NWidgetPart & | nwid, |
NWidgetBase * | dest | ||
) |
Apply an attribute NWidgetPart to an NWidget.
nwid | Attribute NWidgetPart |
dest | NWidget to apply attribute to. |
Definition at line 3142 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(), NWidgetCore::SetToolTip(), NWidgetPartTextLines::size, NWidgetPartTextStyle::size, NWidgetPartTextLines::spacing, NWidgetPart::NWidgetPartUnion::text_lines, NWidgetPart::NWidgetPartUnion::text_style, 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 723 of file widget.cpp.
References _current_text_dir, CentreBounds(), DrawFrameRect(), DrawImageButtons(), DrawString(), NWidgetLeaf::dropdown_dimension, WidgetDimensions::dropdowntext, FS_NORMAL, GetCharacterHeight(), Lowered, 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, | ||
std::string_view | 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 693 of file widget.cpp.
References _company_colours, WidgetDimensions::bevel, BorderOnly, WidgetDimensions::captiontext, Darkened, DrawFrameRect(), DrawString(), GetAlignedPosition(), GetColourGradient(), GetStringBoundingBox(), GfxFillRect(), Lowered, 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 672 of file widget.cpp.
References CentreBounds(), 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 644 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 633 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 558 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 297 of file widget.cpp.
References BorderOnly, Darkened, FILLRECT_RECOLOUR, GetColourGradient(), GfxFillRect(), Lowered, PALETTE_TO_TRANSPARENT, WidgetDimensions::scaled, Rect::Shrink(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), and Transparent.
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 518 of file widget.cpp.
References WidgetDimensions::bevel, DrawFrameRect(), DrawImageButtons(), FILLRECT_CHECKER, GetColourGradient(), GfxFillRect(), HandleScrollbarHittest(), Rect::Height(), Lowered, 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 352 of file widget.cpp.
References DrawFrameRect(), 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 404 of file widget.cpp.
References DrawFrameRect(), DrawString(), 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. |
colour | Colour of the text. |
str | Text to draw. |
align | Alignment of the text. |
fs | Font size of the text. |
Definition at line 369 of file widget.cpp.
References DrawString(), GetAlignedPosition(), and GetStringBoundingBox().
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. |
num_columns | The number of columns in the matrix. |
num_rows | The number of rows in the matrix. |
resize_x | Matrix resize unit size. |
resize_y | Matrix resize unit size. |
Definition at line 420 of file widget.cpp.
References WidgetDimensions::bevel, DrawFrameRect(), GetColourGradient(), GfxFillRect(), Rect::Height(), Lowered, WidgetDimensions::scaled, and Rect::Width().
Referenced by NWidgetLeaf::Draw().
|
static |
Definition at line 801 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 657 of file widget.cpp.
References WidgetDimensions::bevel, DrawFrameRect(), GetColourGradient(), GfxFillRect(), Lowered, 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 611 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 332 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 622 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 386 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 478 of file widget.cpp.
References WidgetDimensions::bevel, DrawFrameRect(), DrawImageButtons(), FILLRECT_CHECKER, GetColourGradient(), GfxFillRect(), HandleScrollbarHittest(), Lowered, 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 120 of file widget.cpp.
References _current_text_dir, CentreBounds(), 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 NWidgetLeaf::Draw(), DrawCaption(), DrawLabel(), and DrawText().
Scale sprite size for GUI.
Offset is ignored.
Definition at line 68 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().
|
static |
Definition at line 32 of file widget.cpp.
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 282 of file widget.cpp.
References NWidgetCore::GetIndex(), 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 149 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 3131 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 3321 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 3439 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 3250 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 3294 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 3334 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 59 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 49 of file widget.cpp.
References ScaleGUITrad().
Referenced by NWidgetServerListHeader::AssignSizePosition(), NWidgetNewGRFDisplay::AssignSizePosition(), SpriteFontCache::ClearFontCache(), ClickSliderWidget(), NWidgetLeaf::Draw(), DrawCargoIconOverlay(), LinkGraphOverlay::DrawContent(), DrawFrame(), BaseGraphWindow::DrawGraph(), DrawLayoutLine(), LinkGraphOverlay::DrawLinks(), DrawResizeBox(), DrawSliderWidget(), SmallMapWindow::DrawSmallMap(), LinkGraphOverlay::DrawStationDots(), BaseVehicleListWindow::DrawVehicleListItems(), LinkGraphOverlay::DrawVertex(), DepotWindow::DrawWidget(), PickerWindow::DrawWidget(), SmallMapWindow::DrawWidget(), StatusBarWindow::DrawWidget(), ScenarioEditorLandscapeGenerationWindow::DrawWidget(), BuildTreesWindow::DrawWidget(), VehicleDetailsWindow::DrawWidget(), WindowDesc::GetDefaultHeight(), WindowDesc::GetDefaultWidth(), GetMaxTreeSpriteSize(), VehicleDetailsWindow::GetRoadVehDetailsHeight(), GetScaledSpriteSize(), GetVehicleListHeight(), GUIBadgeClasses::GUIBadgeClasses(), 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(), FrametimeGraphWindow::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 258 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 194 of file widget.cpp.
References _current_text_dir, NWidgetCore::disp_flags, NWidgetCore::GetIndex(), HandleScrollbarHittest(), Window::mouse_capture_widget, NWID_HSCROLLBAR, CursorVars::pos, ScrollbarDown, ScrollbarUp, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Set(), 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 2541 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 80 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 799 of file widget.cpp.