#include "stdafx.h"
#include "openttd.h"
#include "landscape.h"
#include "viewport_func.h"
#include "station_base.h"
#include "town.h"
#include "signs_base.h"
#include "signs_func.h"
#include "variables.h"
#include "vehicle_base.h"
#include "vehicle_gui.h"
#include "blitter/factory.hpp"
#include "transparency.h"
#include "strings_func.h"
#include "zoom_func.h"
#include "vehicle_func.h"
#include "company_func.h"
#include "station_func.h"
#include "window_func.h"
#include "tilehighlight_func.h"
#include "window_gui.h"
#include "table/sprites.h"
#include "table/strings.h"
#include "table/autorail.h"
#include "table/animcursors.h"
Go to the source code of this file.
Data Structures | |
struct | StringSpriteToDraw |
struct | TileSpriteToDraw |
struct | ChildScreenSpriteToDraw |
struct | ParentSpriteToDraw |
Parent sprite that should be drawn. More... | |
struct | ViewportDrawer |
Data structure storing rendering information. More... | |
Typedefs | |
typedef SmallVector < TileSpriteToDraw, 64 > | TileSpriteToDrawVector |
typedef SmallVector < StringSpriteToDraw, 4 > | StringSpriteToDrawVector |
typedef SmallVector < ParentSpriteToDraw, 64 > | ParentSpriteToDrawVector |
typedef SmallVector < ParentSpriteToDraw *, 64 > | ParentSpriteToSortVector |
typedef SmallVector < ChildScreenSpriteToDraw, 16 > | ChildScreenSpriteToDrawVector |
Enumerations | |
enum | FoundationPart { FOUNDATION_PART_NONE = 0xFF, FOUNDATION_PART_NORMAL = 0, FOUNDATION_PART_HALFTILE = 1, FOUNDATION_PART_END } |
Enumeration of multi-part foundations. More... | |
Functions | |
static Point | MapXYZToViewport (const ViewPort *vp, int x, int y, int z) |
void | DeleteWindowViewport (Window *w) |
void | InitializeWindowViewport (Window *w, int x, int y, int width, int height, uint32 follow_flags, ZoomLevel zoom) |
Initialize viewport of the window for use. | |
static void | DoSetViewportPosition (const Window *w, int left, int top, int width, int height) |
static void | SetViewportPosition (Window *w, int x, int y) |
ViewPort * | IsPtInWindowViewport (const Window *w, int x, int y) |
Is a xy position inside the viewport of the window? | |
static Point | TranslateXYToTileCoord (const ViewPort *vp, int x, int y) |
Translate screen coordinate in a viewport to a tile coordinate. | |
static Point | GetTileFromScreenXY (int x, int y, int zoom_x, int zoom_y) |
Point | GetTileBelowCursor () |
Point | GetTileZoomCenterWindow (bool in, Window *w) |
void | HandleZoomMessage (Window *w, const ViewPort *vp, byte widget_zoom_in, byte widget_zoom_out) |
Update the status of the zoom-buttons according to the zoom-level of the viewport. | |
void | DrawGroundSpriteAt (SpriteID image, SpriteID pal, int32 x, int32 y, byte z, const SubSprite *sub, int extra_offs_x, int extra_offs_y) |
Draws a ground sprite at a specific world-coordinate. | |
static void | AddChildSpriteToFoundation (SpriteID image, SpriteID pal, const SubSprite *sub, FoundationPart foundation_part, int extra_offs_x, int extra_offs_y) |
Adds a child sprite to the active foundation. | |
void | DrawGroundSprite (SpriteID image, SpriteID pal, const SubSprite *sub, int extra_offs_x, int extra_offs_y) |
Draws a ground sprite for the current tile. | |
void | OffsetGroundSprite (int x, int y) |
Called when a foundation has been drawn for the current tile. | |
static void | AddCombinedSprite (SpriteID image, SpriteID pal, int x, int y, byte z, const SubSprite *sub) |
Adds a child sprite to a parent sprite. | |
void | AddSortableSpriteToDraw (SpriteID image, SpriteID pal, int x, int y, int w, int h, int dz, int z, bool transparent, int bb_offset_x, int bb_offset_y, int bb_offset_z, const SubSprite *sub) |
Draw a (transparent) sprite at given coordinates with a given bounding box. | |
void | StartSpriteCombine () |
void | EndSpriteCombine () |
void | AddChildSpriteScreen (SpriteID image, SpriteID pal, int x, int y, bool transparent, const SubSprite *sub) |
Add a child sprite to a parent sprite. | |
void | AddStringToDraw (int x, int y, StringID string, uint64 params_1, uint64 params_2, uint16 colour, uint16 width) |
static void | DrawSelectionSprite (SpriteID image, SpriteID pal, const TileInfo *ti, int z_offset, FoundationPart foundation_part) |
Draws sprites between ground sprite and everything above. | |
static void | DrawTileSelectionRect (const TileInfo *ti, SpriteID pal) |
Draws a selection rectangle on a tile. | |
static bool | IsPartOfAutoLine (int px, int py) |
static void | DrawAutorailSelection (const TileInfo *ti, uint autorail_type) |
Draws autorail highlights. | |
static void | DrawTileSelection (const TileInfo *ti) |
Checks if the specified tile is selected and if so draws selection using correct selectionstyle. | |
static void | ViewportAddLandscape () |
static void | ViewportAddTownNames (DrawPixelInfo *dpi) |
static void | AddStation (const Station *st, StringID str, uint16 width) |
static void | ViewportAddStationNames (DrawPixelInfo *dpi) |
static void | AddSign (const Sign *si, StringID str, uint16 width) |
static void | ViewportAddSigns (DrawPixelInfo *dpi) |
static void | AddWaypoint (const Waypoint *wp, StringID str, uint16 width) |
static void | ViewportAddWaypoints (DrawPixelInfo *dpi) |
void | UpdateViewportSignPos (ViewportSign *sign, int left, int top, StringID str) |
static void | ViewportDrawTileSprites (const TileSpriteToDrawVector *tstdv) |
static void | ViewportSortParentSprites (ParentSpriteToSortVector *psdv) |
Sort parent sprites pointer array. | |
static void | ViewportDrawParentSprites (const ParentSpriteToSortVector *psd, const ChildScreenSpriteToDrawVector *csstdv) |
static void | ViewportDrawBoundingBoxes (const ParentSpriteToSortVector *psd) |
Draws the bounding boxes of all ParentSprites. | |
static void | ViewportDrawStrings (DrawPixelInfo *dpi, const StringSpriteToDrawVector *sstdv) |
void | ViewportDoDraw (const ViewPort *vp, int left, int top, int right, int bottom) |
static void | ViewportDrawChk (const ViewPort *vp, int left, int top, int right, int bottom) |
Make sure we don't draw a too big area at a time. | |
static void | ViewportDraw (const ViewPort *vp, int left, int top, int right, int bottom) |
static void | ClampViewportToMap (const ViewPort *vp, int &x, int &y) |
void | UpdateViewportPosition (Window *w) |
static void | MarkViewportDirty (const ViewPort *vp, int left, int top, int right, int bottom) |
Marks a viewport as dirty for repaint if it displays (a part of) the area the needs to be repainted. | |
void | MarkAllViewportsDirty (int left, int top, int right, int bottom) |
Mark all viewports dirty for repaint. | |
void | MarkTileDirtyByTile (TileIndex tile) |
Mark a tile given by its index dirty for repaint. | |
void | MarkTileDirty (int x, int y) |
Mark a tile given by its coordinate dirty for repaint. | |
static void | SetSelectionTilesDirty () |
Marks the selected tiles as dirty. | |
void | SetSelectionRed (bool b) |
static bool | CheckClickOnTown (const ViewPort *vp, int x, int y) |
static bool | CheckClickOnStation (const ViewPort *vp, int x, int y) |
static bool | CheckClickOnSign (const ViewPort *vp, int x, int y) |
static bool | CheckClickOnWaypoint (const ViewPort *vp, int x, int y) |
static bool | CheckClickOnLandscape (const ViewPort *vp, int x, int y) |
bool | HandleViewportClicked (const ViewPort *vp, int x, int y) |
Vehicle * | CheckMouseOverVehicle () |
void | PlaceObject () |
bool | ScrollWindowTo (int x, int y, int z, Window *w, bool instant) |
bool | ScrollMainWindowToTile (TileIndex tile, bool instant) |
void | SetRedErrorSquare (TileIndex tile) |
void | SetTileSelectSize (int w, int h) |
void | SetTileSelectBigSize (int ox, int oy, int sx, int sy) |
static HighLightStyle | GetAutorailHT (int x, int y) |
returns the best autorail highlight type from map coordinates | |
void | UpdateTileSelection () |
Updates tile highlighting for all cases. | |
static void | ShowMeasurementTooltips (StringID str, uint paramcount, const uint64 params[]) |
Displays the measurement tooltips when selecting multiple tiles. | |
void | VpStartPlaceSizing (TileIndex tile, ViewportPlaceMethod method, ViewportDragDropSelectionProcess process) |
highlighting tiles while only going over them with the mouse | |
void | VpSetPlaceSizingLimit (int limit) |
void | VpSetPresizeRange (TileIndex from, TileIndex to) |
Highlights all tiles between a set of two tiles. | |
static void | VpStartPreSizing () |
static HighLightStyle | Check2x1AutoRail (int mode) |
returns information about the 2x1 piece to be build. | |
static bool | SwapDirection (HighLightStyle style, TileIndex start_tile, TileIndex end_tile) |
Check if the direction of start and end tile should be swapped based on the dragging-style. | |
static int | CalcHeightdiff (HighLightStyle style, uint distance, TileIndex start_tile, TileIndex end_tile) |
Calculates height difference between one tile and another Multiplies the result to suit the standard given by minimap - 50 meters high To correctly get the height difference we need the direction we are dragging in, as well as with what kind of tool we are dragging. | |
static void | CalcRaildirsDrawstyle (TileHighlightData *thd, int x, int y, int method) |
while dragging | |
void | VpSelectTilesWithMethod (int x, int y, ViewportPlaceMethod method) |
Selects tiles while dragging. | |
bool | VpHandlePlaceSizingDrag () |
Handle the mouse while dragging for placement/resizing. | |
void | SetObjectToPlaceWnd (CursorID icon, SpriteID pal, ViewportHighlightMode mode, Window *w) |
void | SetObjectToPlace (CursorID icon, SpriteID pal, ViewportHighlightMode mode, WindowClass window_class, WindowNumber window_num) |
void | ResetObjectToPlace () |
Variables | |
PlaceProc * | _place_proc |
Point | _tile_fract_coords |
ZoomLevel | _saved_scrollpos_zoom |
static ViewportDrawer | _vd |
TileHighlightData | _thd |
static TileInfo * | _cur_ti |
bool | _draw_bounding_boxes = false |
static Point | _vp_move_offs |
static const HighLightStyle | _autorail_type [6][2] |
static const StringID | measure_strings_length [] = {STR_NULL, STR_MEASURE_LENGTH, STR_MEASURE_LENGTH_HEIGHTDIFF} |
* The in-game coordinate system looks like this * * * * ^ Z * * | * * | * * | * * | * * / \ * * / \ * * / \ * * / \ * * X < > Y * *
Definition in file viewport.cpp.
enum FoundationPart |
Enumeration of multi-part foundations.
FOUNDATION_PART_NONE | Neither foundation nor groundsprite drawn yet. |
FOUNDATION_PART_NORMAL | First part (normal foundation or no foundation). |
FOUNDATION_PART_HALFTILE | Second part (halftile foundation). |
Definition at line 100 of file viewport.cpp.
void AddChildSpriteScreen | ( | SpriteID | image, | |
SpriteID | pal, | |||
int | x, | |||
int | y, | |||
bool | transparent, | |||
const SubSprite * | sub | |||
) |
Add a child sprite to a parent sprite.
image | the image to draw. | |
pal | the provided palette. | |
x | sprite x-offset (screen coordinates) relative to parent sprite. | |
y | sprite y-offset (screen coordinates) relative to parent sprite. | |
transparent | if true, switch the palette between the provided palette and the transparent palette, | |
sub | Only draw a part of the sprite. |
Definition at line 707 of file viewport.cpp.
References SmallVector< T, S >::Append(), ViewportDrawer::child_screen_sprites_to_draw, ViewportDrawer::last_child, ViewportDrawer::last_foundation_child, SmallVector< T, S >::Length(), MAX_SPRITES, PALETTE_MODIFIER_TRANSPARENT, SetBit(), and SPRITE_MASK.
Referenced by AddChildSpriteToFoundation(), and AddCombinedSprite().
static void AddChildSpriteToFoundation | ( | SpriteID | image, | |
SpriteID | pal, | |||
const SubSprite * | sub, | |||
FoundationPart | foundation_part, | |||
int | extra_offs_x, | |||
int | extra_offs_y | |||
) | [static] |
Adds a child sprite to the active foundation.
The pixel offset of the sprite relative to the ParentSprite is the sum of the offset passed to OffsetGroundSprite() and extra_offs_?.
image | the image to draw. | |
pal | the provided palette. | |
sub | Only draw a part of the sprite. | |
foundation_part | Foundation part. | |
extra_offs_x | Pixel X offset for the sprite position. | |
extra_offs_y | Pixel Y offset for the sprite position. |
Definition at line 491 of file viewport.cpp.
References AddChildSpriteScreen(), ViewportDrawer::foundation, ViewportDrawer::foundation_offset, IsInsideMM(), ViewportDrawer::last_child, ViewportDrawer::last_foundation_child, Point::x, and Point::y.
Referenced by DrawGroundSprite(), and DrawSelectionSprite().
static void AddCombinedSprite | ( | SpriteID | image, | |
SpriteID | pal, | |||
int | x, | |||
int | y, | |||
byte | z, | |||
const SubSprite * | sub | |||
) | [static] |
Adds a child sprite to a parent sprite.
In contrast to "AddChildSpriteScreen()" the sprite position is in world coordinates
image | the image to draw. | |
pal | the provided palette. | |
x | position x of the sprite. | |
y | position y of the sprite. | |
z | position z of the sprite. | |
sub | Only draw a part of the sprite. |
Definition at line 569 of file viewport.cpp.
References AddChildSpriteScreen(), ViewportDrawer::dpi, SmallVector< T, S >::End(), ParentSpriteToDraw::left, ViewportDrawer::parent_sprites_to_draw, SPRITE_MASK, ST_NORMAL, ParentSpriteToDraw::top, Point::x, and Point::y.
Referenced by AddSortableSpriteToDraw().
void AddSortableSpriteToDraw | ( | SpriteID | image, | |
SpriteID | pal, | |||
int | x, | |||
int | y, | |||
int | w, | |||
int | h, | |||
int | dz, | |||
int | z, | |||
bool | transparent, | |||
int | bb_offset_x, | |||
int | bb_offset_y, | |||
int | bb_offset_z, | |||
const SubSprite * | sub | |||
) |
Draw a (transparent) sprite at given coordinates with a given bounding box.
The bounding box extends from (x + bb_offset_x, y + bb_offset_y, z + bb_offset_z) to (x + w - 1, y + h - 1, z + dz - 1), both corners included. Bounding boxes with bb_offset_x == w or bb_offset_y == h or bb_offset_z == dz are allowed and produce thin slices.
image | the image to combine and draw, | |
pal | the provided palette, | |
x | position X (world) of the sprite, | |
y | position Y (world) of the sprite, | |
w | bounding box extent towards positive X (world), | |
h | bounding box extent towards positive Y (world), | |
dz | bounding box extent towards positive Z (world), | |
z | position Z (world) of the sprite, | |
transparent | if true, switch the palette between the provided palette and the transparent palette, | |
bb_offset_x | bounding box extent towards negative X (world), | |
bb_offset_y | bounding box extent towards negative Y (world), | |
bb_offset_z | bounding box extent towards negative Z (world) | |
sub | Only draw a part of the sprite. |
Definition at line 608 of file viewport.cpp.
References AddCombinedSprite(), SmallVector< T, S >::Append(), ViewportDrawer::combine_sprites, ParentSpriteToDraw::comparison_done, ViewportDrawer::dpi, ParentSpriteToDraw::first_child, ParentSpriteToDraw::image, ViewportDrawer::last_child, ParentSpriteToDraw::left, max(), MAX_SPRITES, min(), ParentSpriteToDraw::pal, PALETTE_MODIFIER_TRANSPARENT, ViewportDrawer::parent_sprites_to_draw, SetBit(), SPRITE_MASK, ST_NORMAL, ParentSpriteToDraw::sub, ParentSpriteToDraw::top, ParentSpriteToDraw::x, Point::x, ParentSpriteToDraw::xmax, ParentSpriteToDraw::xmin, ParentSpriteToDraw::y, Point::y, ParentSpriteToDraw::ymax, ParentSpriteToDraw::ymin, ParentSpriteToDraw::zmax, and ParentSpriteToDraw::zmin.
Referenced by DrawBridgePillars(), DrawBridgeTramBits(), DrawCatenary(), DrawCatenaryOnTunnel(), DrawCatenaryRailway(), DrawFoundation(), DrawRoadDetail(), DrawTile_Road(), DrawTile_Town(), DrawTile_TunnelBridge(), DrawTrackFence_NS_1(), DrawTrackFence_NS_2(), DrawTrackFence_WE_1(), DrawTrackFence_WE_2(), and DrawTramCatenary().
static int CalcHeightdiff | ( | HighLightStyle | style, | |
uint | distance, | |||
TileIndex | start_tile, | |||
TileIndex | end_tile | |||
) | [static] |
Calculates height difference between one tile and another Multiplies the result to suit the standard given by minimap - 50 meters high To correctly get the height difference we need the direction we are dragging in, as well as with what kind of tool we are dragging.
For example a horizontal autorail tool that starts in bottom and ends at the top of a tile will need the maximum of SW, S and SE, N corners respectively. This is handled by the lookup table below See _tileoffs_by_dir in map.c for the direction enums if you can't figure out the values yourself.
style | HightlightStyle of drag. This includes direction and style (autorail, rect, etc.) | |
distance | amount of tiles dragged, important for horizontal/vertical drags ignored for others | |
start_tile,end_tile | start and end tile of drag operation |
Definition at line 2358 of file viewport.cpp.
References HT_DIR_HL, HT_DIR_HU, HT_DIR_MASK, HT_DIR_VL, HT_DIR_VR, HT_DIR_X, HT_DIR_Y, HT_DRAG_MASK, lengthof, max(), Swap(), SwapDirection(), TILE_ADD, TileHeight(), TileX(), and ToTileIndexDiff().
Referenced by CalcRaildirsDrawstyle(), and VpSelectTilesWithMethod().
static HighLightStyle Check2x1AutoRail | ( | int | mode | ) | [static] |
static void DrawAutorailSelection | ( | const TileInfo * | ti, | |
uint | autorail_type | |||
) | [static] |
Draws autorail highlights.
*ti | TileInfo Tile that is being drawn | |
autorail_type | Offset into _AutorailTilehSprite[][] |
Definition at line 841 of file viewport.cpp.
References DrawSelectionSprite(), FOUNDATION_PART_HALFTILE, FOUNDATION_PART_NORMAL, GetHalftileSlopeCorner(), IsHalftileSlope(), OppositeCorner(), PALETTE_SEL_TILE_RED, RemoveHalftileSlope(), SlopeWithThreeCornersRaised(), and TileInfo::tileh.
Referenced by DrawTileSelection().
void DrawGroundSprite | ( | SpriteID | image, | |
SpriteID | pal, | |||
const SubSprite * | sub, | |||
int | extra_offs_x, | |||
int | extra_offs_y | |||
) |
Draws a ground sprite for the current tile.
If the current tile is drawn on top of a foundation the sprite is added as child sprite to the "foundation"-ParentSprite.
image | the image to draw. | |
pal | the provided palette. | |
sub | Only draw a part of the sprite. | |
extra_offs_x | Pixel X offset for the sprite position. | |
extra_offs_y | Pixel Y offset for the sprite position. |
Definition at line 517 of file viewport.cpp.
References AddChildSpriteToFoundation(), DrawGroundSpriteAt(), ViewportDrawer::foundation, ViewportDrawer::foundation_part, FOUNDATION_PART_NONE, FOUNDATION_PART_NORMAL, TileInfo::x, TileInfo::y, and TileInfo::z.
Referenced by DrawCanalWater(), DrawRoadBits(), DrawSeaWater(), DrawTile_Road(), DrawTile_Town(), DrawTile_TunnelBridge(), and DrawTrackBits().
void DrawGroundSpriteAt | ( | SpriteID | image, | |
SpriteID | pal, | |||
int32 | x, | |||
int32 | y, | |||
byte | z, | |||
const SubSprite * | sub, | |||
int | extra_offs_x, | |||
int | extra_offs_y | |||
) |
Draws a ground sprite at a specific world-coordinate.
image | the image to draw. | |
pal | the provided palette. | |
x | position x (world coordinates) of the sprite. | |
y | position y (world coordinates) of the sprite. | |
z | position z (world coordinates) of the sprite. | |
sub | Only draw a part of the sprite. | |
extra_offs_x | Pixel X offset for the sprite position. | |
extra_offs_y | Pixel Y offset for the sprite position. |
Definition at line 466 of file viewport.cpp.
References SmallVector< T, S >::Append(), MAX_SPRITES, SPRITE_MASK, ViewportDrawer::tile_sprites_to_draw, Point::x, and Point::y.
Referenced by DrawGroundSprite(), and DrawSelectionSprite().
static void DrawSelectionSprite | ( | SpriteID | image, | |
SpriteID | pal, | |||
const TileInfo * | ti, | |||
int | z_offset, | |||
FoundationPart | foundation_part | |||
) | [static] |
Draws sprites between ground sprite and everything above.
The sprite is either drawn as TileSprite or as ChildSprite of the active foundation.
image | the image to draw. | |
pal | the provided palette. | |
ti | TileInfo Tile that is being drawn | |
z_offset | Z offset relative to the groundsprite. Only used for the sprite position, not for sprite sorting. | |
foundation_part | Foundation part the sprite belongs to. |
Definition at line 763 of file viewport.cpp.
References AddChildSpriteToFoundation(), DrawGroundSpriteAt(), ViewportDrawer::foundation, TileInfo::x, TileInfo::y, and TileInfo::z.
Referenced by DrawAutorailSelection(), DrawTileSelection(), and DrawTileSelectionRect().
static void DrawTileSelection | ( | const TileInfo * | ti | ) | [static] |
Checks if the specified tile is selected and if so draws selection using correct selectionstyle.
Definition at line 875 of file viewport.cpp.
References Delta(), DrawAutorailSelection(), DrawSelectionSprite(), DrawTileSelectionRect(), FOUNDATION_PART_HALFTILE, FOUNDATION_PART_NORMAL, GetHalftileSlopeCorner(), HT_RAIL, IsHalftileSlope(), IsInsideBS(), IsSteepSlope(), PALETTE_SEL_TILE_BLUE, PALETTE_SEL_TILE_RED, PALETTE_TILE_RED_PULSATING, RemoveHalftileSlope(), SLOPE_N, SLOPE_STEEP_N, TileInfo::tile, TILE_HEIGHT, TileInfo::tileh, TileX(), TileY(), TileInfo::x, TileInfo::y, and ZOOM_LVL_DETAIL.
Draws a selection rectangle on a tile.
Definition at line 781 of file viewport.cpp.
References DrawSelectionSprite(), FOUNDATION_PART_HALFTILE, FOUNDATION_PART_NORMAL, GetHalftileSlopeCorner(), IsHalftileSlope(), IsSteepSlope(), IsValidTile(), OppositeCorner(), SlopeWithOneCornerRaised(), TileInfo::tile, TILE_HEIGHT, and TileInfo::tileh.
Referenced by DrawTileSelection().
void HandleZoomMessage | ( | Window * | w, | |
const ViewPort * | vp, | |||
byte | widget_zoom_in, | |||
byte | widget_zoom_out | |||
) |
Update the status of the zoom-buttons according to the zoom-level of the viewport.
This will update their status and invalidate accordingly
w | Window pointer to the window that has the zoom buttons | |
vp | pointer to the viewport whose zoom-level the buttons represent | |
widget_zoom_in | widget index for window with zoom-in button | |
widget_zoom_out | widget index for window with zoom-out button |
Definition at line 444 of file viewport.cpp.
References Window::InvalidateWidget(), Window::SetWidgetDisabledState(), and ViewPort::zoom.
void InitializeWindowViewport | ( | Window * | w, | |
int | x, | |||
int | y, | |||
int | width, | |||
int | height, | |||
uint32 | follow_flags, | |||
ZoomLevel | zoom | |||
) |
Initialize viewport of the window for use.
w | Window to use/display the viewport in | |
x | Offset of left edge of viewport with respect to left edge window w | |
y | Offset of top edge of viewport with respect to top edge window w | |
width | Width of the viewport | |
height | Height of the viewport | |
follow_flags | Flags controlling the viewport.
| |
zoom | Zoomlevel to display |
Definition at line 165 of file viewport.cpp.
References ViewportData::dest_scrollpos_x, ViewportData::dest_scrollpos_y, ViewportData::follow_vehicle, ViewPort::height, Window::left, ViewPort::left, ScaleByZoom(), ViewportData::scrollpos_x, ViewportData::scrollpos_y, TILE_SIZE, TileX(), TileY(), Window::top, ViewPort::top, Window::viewport, ViewPort::virtual_height, ViewPort::virtual_left, ViewPort::virtual_top, ViewPort::virtual_width, ViewPort::width, Point::x, Point::y, and ViewPort::zoom.
Referenced by ShowNewspaper().
Is a xy position inside the viewport of the window?
w | Window to examine its viewport | |
x | X coordinate of the xy position | |
y | Y coordinate of the xy position |
NULL
is returned. Definition at line 336 of file viewport.cpp.
References ViewPort::height, IsInsideMM(), ViewPort::left, ViewPort::top, Window::viewport, and ViewPort::width.
Referenced by HandleAutoscroll().
void OffsetGroundSprite | ( | int | x, | |
int | y | |||
) |
Called when a foundation has been drawn for the current tile.
Successive ground sprites for the current tile will be drawn as child sprites of the "foundation"-ParentSprite, not as TileSprites.
x | sprite x-offset (screen coordinates) of ground sprites relative to the "foundation"-ParentSprite. | |
y | sprite y-offset (screen coordinates) of ground sprites relative to the "foundation"-ParentSprite. |
Definition at line 537 of file viewport.cpp.
References ViewportDrawer::foundation, ViewportDrawer::foundation_offset, ViewportDrawer::foundation_part, FOUNDATION_PART_HALFTILE, FOUNDATION_PART_NONE, FOUNDATION_PART_NORMAL, ViewportDrawer::last_child, ViewportDrawer::last_foundation_child, SmallVector< T, S >::Length(), ViewportDrawer::parent_sprites_to_draw, Point::x, and Point::y.
Referenced by DrawFoundation().
static void ShowMeasurementTooltips | ( | StringID | str, | |
uint | paramcount, | |||
const uint64 | params[] | |||
) | [inline, static] |
Displays the measurement tooltips when selecting multiple tiles.
str | String to be displayed | |
paramcount | number of params to deal with | |
params | (optional) up to 5 pieces of additional information that may be added to a tooltip |
Definition at line 2213 of file viewport.cpp.
References _settings_client, ClientSettings::gui, GuiShowTooltips(), and GUISettings::measure_tooltip.
Referenced by CalcRaildirsDrawstyle(), VpSelectTilesWithMethod(), and VpSetPresizeRange().
static bool SwapDirection | ( | HighLightStyle | style, | |
TileIndex | start_tile, | |||
TileIndex | end_tile | |||
) | [static] |
Check if the direction of start and end tile should be swapped based on the dragging-style.
Default directions are: in the case of a line (HT_RAIL, HT_LINE): DIR_NE, DIR_NW, DIR_N, DIR_E in the case of a rect (HT_RECT, HT_POINT): DIR_S, DIR_E For example dragging a rectangle area from south to north should be swapped to north-south (DIR_S) to obtain the same results with less code. This is what the return value signifies.
style | HighLightStyle dragging style | |
start_tile | start tile of drag | |
end_tile | end tile of drag |
Definition at line 2325 of file viewport.cpp.
References HT_DRAG_MASK, HT_LINE, HT_RAIL, TileX(), and TileY().
Referenced by CalcHeightdiff().
Translate screen coordinate in a viewport to a tile coordinate.
vp | Viewport that contains the (x, y) screen coordinate | |
x | Screen x coordinate | |
y | Screen y coordinate |
Definition at line 354 of file viewport.cpp.
References _settings_game, Clamp(), GameSettings::construction, ConstructionSettings::freeform_edges, ViewPort::height, ViewPort::left, MapMaxX(), MapMaxY(), max(), ScaleByZoom(), TILE_SIZE, ViewPort::top, ViewPort::virtual_left, ViewPort::virtual_top, ViewPort::width, Point::x, Point::y, and ViewPort::zoom.
void UpdateTileSelection | ( | ) |
Updates tile highlighting for all cases.
Uses _thd.selstart and _thd.selend and _thd.place_mode (set elsewhere) to determine _thd.pos and _thd.size Also drawstyle is determined. Uses _thd.new.* as a buffer and calls SetSelectionTilesDirty() twice, Once for the old and once for the new selection. _thd is TileHighlightData, found in viewport.h
Definition at line 2138 of file viewport.cpp.
References GetAutorailHT(), SetSelectionTilesDirty(), Swap(), TILE_SIZE, VHM_NONE, VHM_POINT, VHM_RAIL, VHM_RECT, VHM_SPECIAL, Point::x, and Point::y.
Referenced by StationJoinerNeeded().
static void ViewportDrawBoundingBoxes | ( | const ParentSpriteToSortVector * | psd | ) | [static] |
Draws the bounding boxes of all ParentSprites.
psd | Array of ParentSprites |
Definition at line 1388 of file viewport.cpp.
References SmallVector< T, S >::Begin(), DrawBox(), SmallVector< T, S >::End(), Point::x, ParentSpriteToDraw::xmax, ParentSpriteToDraw::xmin, Point::y, ParentSpriteToDraw::ymax, ParentSpriteToDraw::ymin, ParentSpriteToDraw::zmax, and ParentSpriteToDraw::zmin.
static void ViewportDrawChk | ( | const ViewPort * | vp, | |
int | left, | |||
int | top, | |||
int | right, | |||
int | bottom | |||
) | [static] |
Make sure we don't draw a too big area at a time.
If we do, the sprite memory will overflow.
Definition at line 1526 of file viewport.cpp.
References ViewPort::left, ScaleByZoom(), ViewPort::top, ViewPort::virtual_left, ViewPort::virtual_top, and ViewPort::zoom.
bool VpHandlePlaceSizingDrag | ( | ) |
Handle the mouse while dragging for placement/resizing.
Definition at line 2688 of file viewport.cpp.
References _left_button_down, FindWindowById(), HT_LINE, HT_RAIL, Window::OnPlaceDrag(), Window::OnPlaceMouseUp(), VHM_POINT, VHM_RAIL, VHM_RECT, and VPM_SIGNALDIRS.
void VpSelectTilesWithMethod | ( | int | x, | |
int | y, | |||
ViewportPlaceMethod | method | |||
) |
Selects tiles while dragging.
x | X coordinate of end of selection | |
y | Y coordinate of end of selection | |
method | modifies the way tiles are selected. Possible methods are VPM_* in viewport.h |
Definition at line 2567 of file viewport.cpp.
References _settings_client, abs(), CalcHeightdiff(), CalcRaildirsDrawstyle(), Clamp(), Delta(), DistanceManhattan(), ClientSettings::gui, HT_DIR_X, HT_DIR_Y, HT_LINE, GUISettings::measure_tooltip, ShowMeasurementTooltips(), TILE_SIZE, TileX(), TileY(), VPM_FIX_X, VPM_FIX_Y, VPM_RAILDIRS, VPM_SIGNALDIRS, VPM_X_AND_Y, VPM_X_AND_Y_LIMITED, and VPM_X_OR_Y.
Referenced by BuildRailToolbarWindow::OnPlaceDrag().
Highlights all tiles between a set of two tiles.
Used in dock and tunnel placement
from | TileIndex of the first tile to highlight | |
to | TileIndex of the last tile to highlight |
Definition at line 2261 of file viewport.cpp.
References DistanceManhattan(), ShowMeasurementTooltips(), TILE_SIZE, TileX(), and TileY().
Referenced by BuildRailToolbarWindow::OnPlacePresize().
const HighLightStyle _autorail_type[6][2] [static] |