|
OpenTTD Source 20260421-master-gc2fbc6fdeb
|
Functions, definitions and such used only by the GUI. More...
#include "vehiclelist.h"#include "vehicle_type.h"#include "viewport_type.h"#include "company_type.h"#include "tile_type.h"#include "widget_type.h"#include "string_type.h"Go to the source code of this file.
Data Structures | |
| class | WidgetDimensions |
| struct | WindowDesc |
| High level window description. More... | |
| struct | ResizeInfo |
| Data structure for resizing a window. More... | |
| struct | ViewportData |
| Data structure for a window viewport. More... | |
| struct | Window |
| Data structure for an opened window. More... | |
| struct | Window::WindowIterator< TtoBack > |
| Iterator to iterate all valid Windows. More... | |
| struct | Window::AllWindows< Tfront > |
| Iterable ensemble of all valid Windows. More... | |
| class | PickerWindowBase |
| Base class for windows opened from a toolbar. More... | |
Typedefs | |
| using | FrameFlags = EnumBitSet<FrameFlag, uint8_t> |
| using | WindowList = std::list<Window *> |
| using | WindowDefaultFlags = EnumBitSet<WindowDefaultFlag, uint8_t> |
| using | WindowFlags = EnumBitSet<WindowFlag, uint16_t> |
Enumerations | |
| enum class | FrameFlag : uint8_t { Transparent , BorderOnly , Lowered , Darkened } |
| Flags to describe the look of the frame. More... | |
| enum | WindowPosition : uint8_t { WDP_MANUAL , WDP_AUTO , WDP_CENTER , WDP_ALIGN_TOOLBAR } |
| How do we the window to be placed? More... | |
| enum class | WindowDefaultFlag : uint8_t { Construction , Modal , NoFocus , NoClose } |
| Window default widget/window handling flags. More... | |
| enum | SortButtonState : uint8_t { SBS_OFF , SBS_DOWN , SBS_UP } |
| State of a sort direction button. More... | |
| enum class | WindowFlag : uint8_t { Timeout , Dragging , SizingRight , SizingLeft , Sticky , DisableVpScroll , WhiteBorder , Highlighted , Centred } |
| Window flags. More... | |
| enum | TooltipCloseCondition : uint8_t { TCC_RIGHT_CLICK , TCC_HOVER , TCC_NONE , TCC_EXIT_VIEWPORT } |
| enum | SpecialMouseMode : uint8_t { WSM_NONE , WSM_DRAGDROP , WSM_SIZING , WSM_PRESIZE , WSM_DRAGGING } |
| Mouse modes. More... | |
Functions | |
| void | DrawFrameRect (int left, int top, int right, int bottom, Colours colour, FrameFlags flags) |
| Draw frame rectangle. | |
| void | DrawFrameRect (const Rect &r, Colours colour, FrameFlags flags) |
| void | DrawCaption (const Rect &r, Colours colour, Owner owner, TextColour text_colour, std::string_view str, StringAlignment align, FontSize fs) |
| Draw a caption bar. | |
| Point | GetToolbarAlignedWindowPosition (int window_width) |
| Computer the position of the top-left corner of a window to be opened right under the toolbar. | |
| Point | AlignInitialConstructionToolbar (int window_width) |
| Compute the position of the construction toolbars. | |
| template<class It, class Pred> | |
| bool | AllEqual (It begin, It end, Pred pred) |
| Generic helper function that checks if all elements of the range are equal with respect to the given predicate. | |
| Window * | BringWindowToFrontById (WindowClass cls, WindowNumber number) |
| Find a window and make it the relative top-window on the screen. | |
| Window * | FindWindowFromPt (int x, int y) |
| Do a search for a window at specific coordinates. | |
| template<typename Twindow, bool Treturn_existing = false, typename... Targs> | |
| Twindow * | AllocateWindowDescFront (WindowDesc &desc, WindowNumber window_number, Targs... extra_arguments) |
| Open a new window. | |
| void | RelocateAllWindows (int neww, int newh) |
| Relocate all windows to fit the new size of the game application screen. | |
| void | GuiShowTooltips (Window *parent, EncodedString &&text, TooltipCloseCondition close_tooltip) |
| Shows a tooltip. | |
| 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 | SetFocusedWindow (Window *w) |
| Set the window that has the focus. | |
| void | ScrollbarClickHandler (Window *w, NWidgetCore *nw, int x, int y) |
| Special handling for the scrollbar widget type. | |
| Rect | ScrollRect (Rect r, const Scrollbar &sb, int resize_step=1) |
| Apply 'scroll' to a rect to be drawn in. | |
Variables | |
| WindowList | _z_windows |
| List of windows opened at the screen sorted from the front to back. | |
| Window * | _focused_window |
| Window that currently has focus. | |
| static const int | TIMEOUT_DURATION = 7 |
| The initial timeout value for WindowFlag::Timeout. | |
| static const int | WHITE_BORDER_DURATION = 3 |
| The initial timeout value for WindowFlag::WhiteBorder. | |
| Point | _cursorpos_drag_start |
| int | _scrollbar_start_pos |
| int | _scrollbar_size |
| uint8_t | _scroller_click_timeout |
| bool | _scrolling_viewport |
| A viewport is being scrolled with the mouse. | |
| bool | _mouse_hovering |
| The mouse is hovering over the same point. | |
| SpecialMouseMode | _special_mouse_mode |
| Mode of the mouse. | |
Functions, definitions and such used only by the GUI.
Definition in file window_gui.h.
| using FrameFlags = EnumBitSet<FrameFlag, uint8_t> |
Definition at line 30 of file window_gui.h.
| using WindowDefaultFlags = EnumBitSet<WindowDefaultFlag, uint8_t> |
Definition at line 158 of file window_gui.h.
| using WindowFlags = EnumBitSet<WindowFlag, uint16_t> |
Definition at line 239 of file window_gui.h.
| using WindowList = std::list<Window *> |
Definition at line 136 of file window_gui.h.
|
strong |
Flags to describe the look of the frame.
| Enumerator | |
|---|---|
| Transparent | Makes the background transparent if set. |
| BorderOnly | Draw border only, no background. |
| Lowered | If set the frame is lowered and the background colour brighter (ie. buttons when pressed). |
| Darkened | If set the background is darker, allows for lowered frames with normal background colour when used with FrameFlag::Lowered (ie. dropdown boxes). |
Definition at line 24 of file window_gui.h.
| enum SortButtonState : uint8_t |
State of a sort direction button.
| Enumerator | |
|---|---|
| SBS_OFF | Do not sort (with this button). |
| SBS_DOWN | Sort ascending. |
| SBS_UP | Sort descending. |
Definition at line 217 of file window_gui.h.
| enum SpecialMouseMode : uint8_t |
Mouse modes.
| Enumerator | |
|---|---|
| WSM_NONE | No special mouse mode. |
| WSM_DRAGDROP | Drag&drop an object. |
| WSM_SIZING | Sizing mode. |
| WSM_PRESIZE | Presizing mode (docks, tunnels). |
| WSM_DRAGGING | Dragging mode (trees). |
Definition at line 1047 of file window_gui.h.
| enum TooltipCloseCondition : uint8_t |
Definition at line 264 of file window_gui.h.
|
strong |
Window default widget/window handling flags.
Definition at line 152 of file window_gui.h.
|
strong |
Window flags.
| Enumerator | |
|---|---|
| Timeout | Window timeout counter. |
| Dragging | Window is being dragged. |
| SizingRight | Window is being resized towards the right. |
| SizingLeft | Window is being resized towards the left. |
| Sticky | Window is made sticky by user. |
| DisableVpScroll | Window does not do autoscroll,.
|
| WhiteBorder | Window white border counter bit mask. |
| Highlighted | Window has a widget that has a highlight. |
| Centred | Window is centered and shall stay centered after ReInit. |
Definition at line 226 of file window_gui.h.
| enum WindowPosition : uint8_t |
How do we the window to be placed?
| Enumerator | |
|---|---|
| WDP_MANUAL | Manually align the window (so no automatic location finding). |
| WDP_AUTO | Find a place automatically. |
| WDP_CENTER | Center the window. |
| WDP_ALIGN_TOOLBAR | Align toward the toolbar. |
Definition at line 142 of file window_gui.h.
| Point AlignInitialConstructionToolbar | ( | int | window_width | ) |
Compute the position of the construction toolbars.
If the terraform toolbar is open place them to the right/left of it, otherwise use default toolbar aligned position.
| window_width | the width of the toolbar to get the position for. |
Definition at line 1715 of file window.cpp.
References _current_text_dir, _settings_client, FindWindowByClass(), GetToolbarAlignedWindowPosition(), Window::left, Point, TD_RTL, Window::top, WC_SCEN_LAND_GEN, Window::width, Coord2D< T >::x, and Coord2D< T >::y.
Referenced by BuildAirToolbarWindow::OnInitialPosition(), BuildDocksToolbarWindow::OnInitialPosition(), BuildRailToolbarWindow::OnInitialPosition(), and BuildRoadToolbarWindow::OnInitialPosition().
|
inline |
Generic helper function that checks if all elements of the range are equal with respect to the given predicate.
| begin | The start of the range. |
| end | The end of the range. |
| pred | The predicate to use. |
Definition at line 953 of file window_gui.h.
Referenced by DepotWindow::OnVehicleSelect(), and OrdersWindow::OnVehicleSelect().
| Twindow * AllocateWindowDescFront | ( | WindowDesc & | desc, |
| WindowNumber | window_number, | ||
| Targs... | extra_arguments ) |
Open a new window.
| Twindow | Window class to use if the window does not exist. |
| Treturn_existing | If set, also return the window if it already existed. |
| desc | The pointer to the WindowDesc to be created |
| window_number | the window number of the new window |
| extra_arguments | optional extra arguments to pass to the window's constructor. |
nullptr. Definition at line 1023 of file window_gui.h.
References BringWindowToFrontById(), and WindowDesc::cls.
Referenced by ShowBuildAirToolbar(), ShowBuildDocksScenToolbar(), ShowBuildDocksToolbar(), ShowBuildObjectPicker(), ShowBuildRoadScenToolbar(), ShowBuildRoadToolbar(), ShowClientList(), ShowCompany(), ShowCompanyGroupInternal(), ShowCompanyInfrastructure(), ShowCompanyStations(), ShowEditorTerraformToolbar(), ShowFramerateWindow(), ShowFrametimeGraphWindow(), ShowGoalsList(), ShowLinkGraphLegend(), ShowNewGRFInspectWindow(), ShowSignList(), ShowSmallMap(), ShowSpriteAlignerWindow(), ShowStationViewWindow(), ShowStoryBook(), ShowTerraformToolbar(), ShowTimetableWindow(), ShowTransparencyToolbar(), ShowVehicleDetailsWindow(), ShowVehicleViewWindow(), and ShowWaypointWindow().
| Window * BringWindowToFrontById | ( | WindowClass | cls, |
| WindowNumber | number ) |
Find a window and make it the relative top-window on the screen.
The window gets unshaded if it was shaded, and a white border is drawn at its edges for a brief period of time to visualize its "activation".
| cls | WindowClass of the window to activate |
| number | WindowNumber of the window to activate |
Definition at line 1293 of file window.cpp.
References BringWindowToFront(), FindWindowById(), Window::IsShaded(), Window::SetDirty(), Window::SetShaded(), and Window::SetWhiteBorder().
Referenced by AllocateWindowDescFront(), DoSelectCompanyManagerFace(), NetworkContentListWindow::OnClick(), ShowBuyCompanyDialog(), ShowCompanyFinances(), ShowDepotWindow(), ShowGenerateWorldProgress(), ShowIndustryCargoesWindow(), and ShowScriptDebugWindow().
| 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 738 of file widget.cpp.
References _company_colours, BorderOnly, Darkened, DrawFrameRect(), DrawString(), GetAlignedPosition(), GetColourGradient(), GetStringBoundingBox(), GfxFillRect(), Lowered, Point, Rect, WidgetDimensions::scaled, Rect::Shrink(), and Coord2D< T >::y.
Referenced by NWidgetLeaf::Draw(), and NewsWindow::DrawWidget().
Definition at line 128 of file window_gui.h.
| 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 309 of file widget.cpp.
References BorderOnly, Darkened, End, FILLRECT_RECOLOUR, GetColourGradient(), GfxFillRect(), Lowered, PALETTE_TO_TRANSPARENT, Rect, WidgetDimensions::scaled, Rect::Shrink(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), and Transparent.
Referenced by NWidgetBackground::Draw(), NWidgetLeaf::Draw(), DrawAircraftImage(), DrawArrowButtons(), DrawBoolButton(), DrawButtonDropdown(), ButtonLine::DrawButtons(), DrawCaption(), DrawCloseBox(), DrawDropDownButton(), DrawHorizontalScrollbar(), DrawImageButtons(), DrawImageTextButtons(), DrawInset(), DrawMatrix(), DrawResizeBox(), DrawRoadVehImage(), DrawShipImage(), DrawSliderWidget(), DrawTrainImage(), DrawUpDownButtons(), NewGRFInspectWindow::DrawVehicleChainWidget(), DrawVerticalScrollbar(), BaseCargoGraphWindow::DrawWidget(), BaseGraphWindow::DrawWidget(), BaseNetworkContentDownloadStatusWindow::DrawWidget(), GenerateProgressWindow::DrawWidget(), NetworkJoinStatusWindow::DrawWidget(), RefitWindow::DrawWidget(), ScanProgressWindow::DrawWidget(), StoryBookWindow::DrawWidget(), TransparenciesWindow::DrawWidget(), and Window::DrawWidgets().
| Window * FindWindowFromPt | ( | int | x, |
| int | y ) |
Do a search for a window at specific coordinates.
For this we start at the topmost window, obviously and work our way down to the bottom
| x | position x to query |
| y | position y to query |
Definition at line 1858 of file window.cpp.
References Window::height, IsInsideBS(), Window::left, MayBeShown(), Window::top, and Window::width.
Referenced by HandleAutoscroll(), HandleMouseOver(), HandleViewportScroll(), and TooltipsWindow::OnMouseLoop().
| Point GetToolbarAlignedWindowPosition | ( | int | window_width | ) |
Computer the position of the top-left corner of a window to be opened right under the toolbar.
| window_width | the width of the window to get the position for. |
Definition at line 1699 of file window.cpp.
References _current_text_dir, FindWindowById(), Window::height, Window::left, Point, TD_RTL, Window::top, WC_MAIN_TOOLBAR, and Window::width.
Referenced by AlignInitialConstructionToolbar(), LocalGetWindowPlacement(), TerraformToolbarWindow::OnInitialPosition(), and TransparenciesWindow::OnInitialPosition().
Returns the index for the widget located at the given position relative to the window.
It includes all widget-corner pixels as well.
INVALID_WIDGET if no widget was found. Definition at line 294 of file widget.cpp.
References INVALID_WIDGET, and Window::nested_root.
Referenced by DropdownWindow::GetDropDownItem(), HandleMouseDragDrop(), and Window::OnDropdownClose().
| void GuiShowTooltips | ( | Window * | parent, |
| EncodedString && | text, | ||
| TooltipCloseCondition | close_tooltip ) |
Shows a tooltip.
| parent | The window this tooltip is related to. |
| text | String to be displayed. May include encoded parameters. |
| close_tooltip | the condition under which the tooltip closes |
Definition at line 687 of file misc_gui.cpp.
References CloseWindowById(), and WC_TOOLTIPS.
Referenced by DispatchHoverEvent(), DispatchRightClickEvent(), DepotWindow::OnRightClick(), BuildRailToolbarWindow::OnTooltip(), CheatWindow::OnTooltip(), IndustryCargoesWindow::OnTooltip(), LinkGraphLegendWindow::OnTooltip(), NetworkClientListWindow::OnTooltip(), ReplaceVehicleWindow::OnTooltip(), TextfileWindow::OnTooltip(), VehicleDetailsWindow::OnTooltip(), and ShowMeasurementTooltips().
| void RelocateAllWindows | ( | int | neww, |
| int | newh ) |
Relocate all windows to fit the new size of the game application screen.
| neww | New width of the game application screen |
| newh | New height of the game application screen. |
Definition at line 3555 of file window.cpp.
References _toolbar_width, Centred, CloseWindowByClass(), EnsureVisibleCaption(), FindWindowById(), Window::flags, Window::height, IConsoleResize(), Window::left, PositionMainToolbar(), PositionNetworkChatWindow(), PositionNewsMessage(), PositionStatusbar(), ResizeWindow(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), Window::top, WC_BOOTSTRAP, WC_CONSOLE, WC_DROPDOWN_MENU, WC_ENDSCREEN, WC_HIGHSCORE, WC_MAIN_TOOLBAR, WC_MAIN_WINDOW, WC_NEWS_WINDOW, WC_SEND_NETWORK_MSG, WC_STATUS_BAR, Window::width, and Window::window_class.
Referenced by GameSizeChanged(), and ReInitAllWindows().
| 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 270 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().
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 2549 of file widget.cpp.
References _current_text_dir, Scrollbar::GetCount(), Scrollbar::GetPosition(), Scrollbar::IsVertical(), Rect, and TD_RTL.
Referenced by IndustryDirectoryWindow::DrawWidget(), TextfileWindow::DrawWidget(), and ScriptDebugWindow::DrawWidgetLog().
| void SetFocusedWindow | ( | Window * | w | ) |
Set the window that has the focus.
| w | The window to set the focus on |
Definition at line 435 of file window.cpp.
References _focused_window, Window::OnFocusLost(), WC_TOOLTIPS, and Window::window_class.
Referenced by DispatchLeftClickEvent(), Window::InitializeData(), PickerWindow::OnHotkey(), Window::OnHotkey(), and ShowQuery().
|
extern |
Definition at line 87 of file window.cpp.
|
extern |
Window that currently has focus.
Definition at line 85 of file window.cpp.
Referenced by OTTD_CocoaView::attributedString, OTTD_CocoaView::attributedSubstringForProposedRange:actualRange:, OTTD_CocoaView::characterIndexForPoint:, Window::Close(), DispatchLeftClickEvent(), EditBoxInGlobalFocus(), OTTD_CocoaView::firstRectForCharacterRange:, FocusedWindowIsConsole(), HandleKeypress(), HandleTextInput(), OTTD_CocoaView::hasMarkedText, Window::InitializeData(), InitWindowSystem(), OTTD_CocoaView::insertText:replacementRange:, Window::IsWidgetGloballyFocused(), OTTD_CocoaView::markedRange, IConsoleWindow::OnKeyPress(), IConsoleWindow::OnPaint(), OTTD_CocoaView::selectedRange, SetCandidatePos(), SetCompositionPos(), SetFocusedWindow(), and OTTD_CocoaView::setMarkedText:selectedRange:replacementRange:.
|
extern |
The mouse is hovering over the same point.
Definition at line 94 of file window.cpp.
Referenced by HandleMouseEvents(), InitWindowSystem(), and TooltipsWindow::OnMouseLoop().
|
extern |
Definition at line 90 of file window.cpp.
|
extern |
Definition at line 89 of file window.cpp.
|
extern |
Definition at line 91 of file window.cpp.
|
extern |
A viewport is being scrolled with the mouse.
Definition at line 93 of file window.cpp.
Referenced by HandleViewportScroll(), InitWindowSystem(), and SmallMapWindow::OnRightClick().
|
extern |
Mode of the mouse.
Definition at line 96 of file window.cpp.
Referenced by DeleteDepotHighlightOfVehicle(), DeleteGroupHighlightOfVehicle(), HandleMouseDragDrop(), SetObjectToPlace(), VpHandlePlaceSizingDrag(), VpStartDragging(), and VpStartPlaceSizing().
|
extern |
List of windows opened at the screen sorted from the front to back.
Definition at line 60 of file window.cpp.
Referenced by BringWindowToFront(), Window::DeleteClosedWindows(), UnInitWindowSystem(), and Window::Window().
|
static |
The initial timeout value for WindowFlag::Timeout.
Definition at line 241 of file window_gui.h.
Referenced by Window::HandleButtonClick(), and Window::SetTimeout().
|
static |
The initial timeout value for WindowFlag::WhiteBorder.
Definition at line 242 of file window_gui.h.
Referenced by Window::SetWhiteBorder().