diff options
Diffstat (limited to 'src/viewport_func.h')
-rw-r--r-- | src/viewport_func.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/viewport_func.h b/src/viewport_func.h new file mode 100644 index 000000000..9a8d69125 --- /dev/null +++ b/src/viewport_func.h @@ -0,0 +1,80 @@ +/* $Id$ */ + +/** @file viewport_func.h Functions related to (drawing on) viewports. */ + +#ifndef VIEWPORT_FUNC_H +#define VIEWPORT_FUNC_H + +#include "viewport_type.h" +#include "vehicle_type.h" + +void SetSelectionRed(bool); + +void InitViewports(); +void DeleteWindowViewport(Window *w); +void AssignWindowViewport(Window *w, int x, int y, int width, int height, uint32 follow_flags, ZoomLevel zoom); +ViewPort *IsPtInWindowViewport(const Window *w, int x, int y); +Point GetTileBelowCursor(); +void UpdateViewportPosition(Window *w); + +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); + +static inline void MaxZoomInOut(int how, Window *w) +{ + while (DoZoomInOutWindow(how, w)) {}; +} + +void OffsetGroundSprite(int x, int y); + +void DrawGroundSprite(SpriteID image, SpriteID pal, const SubSprite *sub = NULL); +void DrawGroundSpriteAt(SpriteID image, SpriteID pal, int32 x, int32 y, byte z, const SubSprite *sub = NULL); +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); +void *AddStringToDraw(int x, int y, StringID string, uint64 params_1, uint64 params_2); +void AddChildSpriteScreen(SpriteID image, SpriteID pal, int x, int y, bool transparent = false, const SubSprite *sub = NULL); + + +void StartSpriteCombine(); +void EndSpriteCombine(); + +void HandleViewportClicked(const ViewPort *vp, int x, int y); +void PlaceObject(); +void SetRedErrorSquare(TileIndex tile); +void SetTileSelectSize(int w, int h); +void SetTileSelectBigSize(int ox, int oy, int sx, int sy); + +Vehicle *CheckMouseOverVehicle(); + +void VpSelectTilesWithMethod(int x, int y, ViewportPlaceMethod method); +void VpStartPlaceSizing(TileIndex tile, ViewportPlaceMethod method, byte process); +void VpSetPresizeRange(uint from, uint to); +void VpSetPlaceSizingLimit(int limit); + +typedef void PlaceProc(TileIndex tile); +void PlaceProc_DemolishArea(TileIndex tile); +void PlaceProc_LevelLand(TileIndex tile); +void PlaceProc_BuyLand(TileIndex tile); +bool GUIPlaceProcDragXY(const WindowEvent *e); + +/* common button handler */ +bool HandlePlacePushButton(Window *w, int widget, CursorID cursor, ViewportHighlightMode mode, PlaceProc *placeproc); + +void ViewportDoDraw(const ViewPort *vp, int left, int top, int right, int bottom); + +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(); + +bool ScrollWindowTo(int x, int y, Window *w, bool instant = false); + +bool ScrollMainWindowToTile(TileIndex tile, bool instant = false); +bool ScrollMainWindowTo(int x, int y, bool instant = false); + +extern PlaceProc *_place_proc; +extern Point _tile_fract_coords; +extern TileHighlightData _thd; + +#endif /* VIEWPORT_FUNC_H */ |