#include "gfx_type.h"
#include "viewport_type.h"
#include "vehicle_type.h"
#include "window_type.h"
#include "tile_type.h"
Go to the source code of this file.
Functions | |
| void | SetSelectionRed (bool) |
| 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. | |
| ViewPort * | IsPtInWindowViewport (const Window *w, int x, int y) |
| Is a xy position inside the viewport of the window? | |
| Point | GetTileBelowCursor () |
| void | UpdateViewportPosition (Window *w) |
| Update the viewport position being displayed. | |
| void | MarkAllViewportsDirty (int left, int top, int right, int bottom) |
| Mark all viewports that display an area as dirty (in need of repaint). | |
| bool | DoZoomInOutWindow (int how, Window *w) |
| void | ZoomInOrOutToCursorWindow (bool in, Window *w) |
| 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. | |
| static void | MaxZoomInOut (int how, Window *w) |
| void | OffsetGroundSprite (int x, int y) |
| Called when a foundation has been drawn for the current tile. | |
| void | DrawGroundSprite (SpriteID image, SpriteID pal, const SubSprite *sub=NULL, int extra_offs_x=0, int extra_offs_y=0) |
| Draws a ground sprite for the current tile. | |
| void | DrawGroundSpriteAt (SpriteID image, SpriteID pal, int32 x, int32 y, byte z, const SubSprite *sub=NULL, int extra_offs_x=0, int extra_offs_y=0) |
| Draws a ground sprite at a specific world-coordinate. | |
| void | AddSortableSpriteToDraw (SpriteID image, SpriteID pal, int x, int y, int w, int h, int dz, int z, bool transparent=false, int bb_offset_x=0, int bb_offset_y=0, int bb_offset_z=0, const SubSprite *sub=NULL) |
| Draw a (transparent) sprite at given coordinates with a given bounding box. | |
| void | AddChildSpriteScreen (SpriteID image, SpriteID pal, int x, int y, bool transparent=false, const SubSprite *sub=NULL) |
| Add a child sprite to a parent sprite. | |
| void | ViewportAddString (const DrawPixelInfo *dpi, ZoomLevel small_from, const ViewportSign *sign, StringID string_normal, StringID string_small, StringID string_small_shadow, uint64 params_1, uint64 params_2=0, Colours colour=INVALID_COLOUR) |
| Add a string to draw in the viewport. | |
| void | StartSpriteCombine () |
| Starts a block of sprites, which are "combined" into a single bounding box. | |
| void | EndSpriteCombine () |
| Terminates a block of sprites started by StartSpriteCombine. | |
| bool | HandleViewportClicked (const ViewPort *vp, int x, int y) |
| void | PlaceObject () |
| void | SetRedErrorSquare (TileIndex tile) |
| void | SetTileSelectSize (int w, int h) |
| Highlight w by h tiles at the cursor. | |
| void | SetTileSelectBigSize (int ox, int oy, int sx, int sy) |
| Vehicle * | CheckMouseOverVehicle () |
| void | ViewportDoDraw (const ViewPort *vp, int left, int top, int right, int bottom) |
| bool | ScrollWindowTo (int x, int y, int z, Window *w, bool instant=false) |
| Scrolls the viewport in a window to a given location. | |
| bool | ScrollMainWindowToTile (TileIndex tile, bool instant=false) |
| bool | ScrollMainWindowTo (int x, int y, int z=-1, bool instant=false) |
| Scrolls the main window to given coordinates. | |
| void | UpdateAllVirtCoords () |
| Update the viewport coordinates of all signs. | |
Variables | |
| Point | _tile_fract_coords |
Definition in file viewport_func.h.
| 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 747 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().
| 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 624 of file viewport.cpp.
References AddCombinedSprite(), SmallVector< T, S >::Append(), ViewportDrawer::combine_sprites, ParentSpriteToDraw::comparison_done, ViewportDrawer::dpi, ParentSpriteToDraw::first_child, DrawPixelInfo::height, Sprite::height, ParentSpriteToDraw::image, ViewportDrawer::last_child, ParentSpriteToDraw::left, DrawPixelInfo::left, max(), MAX_SPRITES, min(), ParentSpriteToDraw::pal, PALETTE_MODIFIER_TRANSPARENT, ViewportDrawer::parent_sprites_to_draw, SetBit(), SPRITE_COMBINE_ACTIVE, SPRITE_COMBINE_PENDING, SPRITE_MASK, ST_NORMAL, ParentSpriteToDraw::sub, ParentSpriteToDraw::top, DrawPixelInfo::top, DrawPixelInfo::width, Sprite::width, ParentSpriteToDraw::x, Point::x, Sprite::x_offs, ParentSpriteToDraw::xmax, ParentSpriteToDraw::xmin, ParentSpriteToDraw::y, Point::y, Sprite::y_offs, 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().
| 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 533 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 482 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().
| void EndSpriteCombine | ( | ) |
Terminates a block of sprites started by StartSpriteCombine.
Take a look there for details.
Definition at line 731 of file viewport.cpp.
References ViewportDrawer::combine_sprites, and SPRITE_COMBINE_NONE.
Referenced by DrawBridgeTramBits(), and DrawTile_TunnelBridge().
| 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 460 of file viewport.cpp.
References Window::SetWidgetDirty(), 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 181 of file viewport.cpp.
References ViewportData::dest_scrollpos_x, ViewportData::dest_scrollpos_y, ViewportData::follow_vehicle, ViewPort::height, INVALID_VEHICLE, 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 NWidgetViewport::InitializeViewport().
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 352 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 553 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().
| bool ScrollMainWindowTo | ( | int | x, | |
| int | y, | |||
| int | z, | |||
| bool | instant | |||
| ) |
Scrolls the main window to given coordinates.
| x | x coordinate | |
| y | y coordinate | |
| z | z coordinate; -1 to scroll to terrain height | |
| instant | scroll instantly (meaningful only when smooth_scrolling is active) |
Definition at line 1295 of file smallmap_gui.cpp.
References FindWindowById(), ScrollWindowTo(), and SmallMapWindow::SmallMapCenterOnCurrentPos().
Referenced by VehicleViewWindow::OnClick(), and NewsWindow::OnClick().
| bool ScrollWindowTo | ( | int | x, | |
| int | y, | |||
| int | z, | |||
| Window * | w, | |||
| bool | instant | |||
| ) |
Scrolls the viewport in a window to a given location.
| x | Desired x location of the map to scroll to (world coordinate). | |
| y | Desired y location of the map to scroll to (world coordinate). | |
| z | Desired z location of the map to scroll to (world coordinate). Use -1 to scroll to the height of the map at the x, y location. | |
| w | Window containing the viewport. | |
| instant | Jump to the location instead of slowly moving to it. |
Definition at line 1851 of file viewport.cpp.
References Clamp(), ViewportData::dest_scrollpos_x, ViewportData::dest_scrollpos_y, ViewportData::follow_vehicle, INVALID_VEHICLE, MapSizeX(), MapSizeY(), ViewportData::scrollpos_x, ViewportData::scrollpos_y, TILE_SIZE, Window::viewport, Point::x, and Point::y.
Referenced by ScrollMainWindowTo().
| void SetTileSelectSize | ( | int | w, | |
| int | h | |||
| ) |
Highlight w by h tiles at the cursor.
| w | Width of the highlighted tiles rectangle. | |
| h | Height of the highlighted tiles rectangle. |
Definition at line 1894 of file viewport.cpp.
References TILE_SIZE.
Referenced by BuildRailClick_Remove(), CompanyWindow::OnClick(), and VpHandlePlaceSizingDrag().
| void StartSpriteCombine | ( | ) |
Starts a block of sprites, which are "combined" into a single bounding box.
Subsequent calls to AddSortableSpriteToDraw will be drawn into the same bounding box. That is: The first sprite that is not clipped by the viewport defines the bounding box, and the following sprites will be child sprites to that one.
That implies:
The block is terminated by EndSpriteCombine.
You cannot nest "combined" blocks.
Definition at line 721 of file viewport.cpp.
References ViewportDrawer::combine_sprites, SPRITE_COMBINE_NONE, and SPRITE_COMBINE_PENDING.
Referenced by DrawBridgeTramBits(), and DrawTile_TunnelBridge().
| void UpdateViewportPosition | ( | Window * | w | ) |
Update the viewport position being displayed.
| w | Window owning the viewport. |
Definition at line 1496 of file viewport.cpp.
References _settings_client, Clamp(), ViewportData::dest_scrollpos_x, ViewportData::dest_scrollpos_y, ViewportData::follow_vehicle, ClientSettings::gui, INVALID_VEHICLE, ScaleByMapSize1D(), ViewportData::scrollpos_x, ViewportData::scrollpos_y, GUISettings::smooth_scroll, Window::viewport, Point::x, and Point::y.
Referenced by UpdateWindows().
| void ViewportAddString | ( | const DrawPixelInfo * | dpi, | |
| ZoomLevel | small_from, | |||
| const ViewportSign * | sign, | |||
| StringID | string_normal, | |||
| StringID | string_small, | |||
| StringID | string_small_shadow, | |||
| uint64 | params_1, | |||
| uint64 | params_2, | |||
| Colours | colour | |||
| ) |
Add a string to draw in the viewport.
| dpi | current viewport area | |
| small_from | Zoomlevel from when the small font should be used | |
| sign | sign position and dimension | |
| string_normal | String for normal and 2x zoom level | |
| string_small | String for 4x and 8x zoom level | |
| string_small_shadow | Shadow string for 4x and 8x zoom level; or STR_NULL if no shadow | |
| colour | colour of the sign background; or 0 if transparent |
Definition at line 1076 of file viewport.cpp.
References ViewportSign::center, FONT_HEIGHT_NORMAL, DrawPixelInfo::height, DrawPixelInfo::left, ScaleByZoom(), ViewportSign::top, DrawPixelInfo::top, VPSM_BOTTOM, VPSM_TOP, DrawPixelInfo::width, ViewportSign::width_normal, ViewportSign::width_small, and DrawPixelInfo::zoom.
1.5.6