OpenTTD Source
20240917-master-g9ab0a47812
|
Go to the documentation of this file.
10 #ifndef LINKGRAPH_GUI_H
11 #define LINKGRAPH_GUI_H
13 #include "../company_func.h"
14 #include "../station_base.h"
15 #include "../widget_type.h"
16 #include "../window_gui.h"
43 typedef std::map<StationID, LinkProperties> StationLinkMap;
44 typedef std::map<StationID, StationLinkMap> LinkMap;
45 typedef std::vector<std::pair<StationID, uint> > StationSupplyList;
65 bool ShowTooltip(
Point pt, TooltipCloseCondition close_cond);
98 static void DrawVertex(
int x,
int y,
int size,
int colour,
int border_colour);
109 void SetOverlay(std::shared_ptr<LinkGraphOverlay> overlay);
112 void DrawWidget(
const Rect &r,
WidgetID widget)
const override;
113 bool OnTooltip([[maybe_unused]]
Point pt,
WidgetID widget, TooltipCloseCondition close_cond)
override;
114 void OnClick([[maybe_unused]]
Point pt,
WidgetID widget, [[maybe_unused]]
int click_count)
override;
118 std::shared_ptr<LinkGraphOverlay> overlay;
void SetOverlay(std::shared_ptr< LinkGraphOverlay > overlay)
Set the overlay belonging to this menu and import its company/cargo settings.
void SetCompanyMask(CompanyMask company_mask)
Set a new company mask and rebuild the cache.
Menu window to select cargoes and companies to show in a link graph overlay.
Dimensions (a width and height) of a rectangle in 2D.
CargoID cargo
Cargo type of the link.
void UpdateOverlayCompanies()
Update the overlay with the new company selection.
void RebuildCache()
Rebuild the cache and recalculate which links and stations to be shown.
const WidgetID widget_id
ID of Widget in Window to be drawn to.
void OnInvalidateData(int data=0, bool gui_scope=true) override
Invalidate the data of this window if the cargoes or companies have changed.
CargoTypes GetCargoMask()
Get a bitmask of the currently shown cargoes.
void UpdateOverlayCargoes()
Update the overlay with the new cargo selection.
CompanyMask GetCompanyMask()
Get a bitmask of the currently shown companies.
Window * window
Window to be drawn into.
High level window description.
LinkMap cached_links
Cache for links to reduce recalculation.
StationSupplyList cached_stations
Cache for stations to be drawn.
Handles drawing of links into some window.
ResizeInfo resize
Resize information.
void SetCargoMask(CargoTypes cargo_mask)
Set a new cargo mask and rebuild the cache.
void AddLinks(const Station *sta, const Station *stb)
Add all "interesting" links between the given stations to the cache.
bool IsLinkVisible(Point pta, Point ptb, const DrawPixelInfo *dpi, int padding=0) const
Determine if a certain link crosses through the area given by the dpi with some lee way.
uint capacity
Capacity of the link.
Coordinates of a point in 2D.
CompanyMask company_mask
Bitmask of companies to be displayed.
WindowNumber window_number
Window number within the window class.
uint scale
Width of link lines.
bool dirty
Set if overlay should be rebuilt.
void DrawStationDots(const DrawPixelInfo *dpi) const
Draw dots for stations into the smallmap.
uint planned
Planned usage of the link.
uint32_t time
Travel time of the link.
void Draw(const DrawPixelInfo *dpi)
Draw the linkgraph overlay or some part of it, in the area given.
Point GetStationMiddle(const Station *st) const
Determine the middle of a station in the current window.
bool IsPointVisible(Point pt, const DrawPixelInfo *dpi, int padding=0) const
Determine if a certain point is inside the given DPI, with some lee way.
uint8_t CargoID
Cargo slots to indicate a cargo type within a game.
uint usage
Actual usage of the link.
bool shared
If this is a shared link to be drawn dashed.
void GetWidgetDpi(DrawPixelInfo *dpi) const
Get a DPI for the widget we will be drawing to.
CargoTypes cargo_mask
Bitmask of cargos to be displayed.
void SetDirty()
Mark the linkgraph dirty to be rebuilt next time Draw() is called.
void DrawContent(Point pta, Point ptb, const LinkProperties &cargo) const
Draw one specific link.
Data structure for an opened window.
void DrawLinks(const DrawPixelInfo *dpi) const
Draw the cached links or part of them into the given area.
Specification of a rectangle with absolute coordinates of all edges.
static const uint8_t LINK_COLOURS[][12]
Colours for the various "load" states of links.
static void AddStats(CargoID new_cargo, uint new_cap, uint new_usg, uint new_flow, uint32_t time, bool new_shared, LinkProperties &cargo)
Add information from a given pair of link stat and flow stat to the given link properties.
static void DrawVertex(int x, int y, int size, int colour, int border_colour)
Draw a square symbolizing a producer of cargo.
uint Usage() const
Return the usage of the link to display.
void ShowLinkGraphLegend()
Open a link graph legend window.
LinkGraphOverlay(Window *w, WidgetID wid, CargoTypes cargo_mask, CompanyMask company_mask, uint scale)
Create a link graph overlay for the specified window.
Data about how and where to blit pixels.
Monthly statistics for a link between two stations.