truelight@0: #ifndef VIEWPORT_H truelight@0: #define VIEWPORT_H truelight@0: truelight@0: struct ViewPort { truelight@0: int left,top; // screen coordinates for the viewport truelight@0: int width, height; // screen width/height for the viewport truelight@0: truelight@0: int virtual_left, virtual_top; // virtual coordinates truelight@0: int virtual_width, virtual_height; // these are just width << zoom, height << zoom truelight@0: truelight@193: byte zoom; truelight@0: }; truelight@0: truelight@0: /* viewport.c */ truelight@0: Point MapXYZToViewport(ViewPort *vp, uint x, uint y, uint z); truelight@193: void AssignWindowViewport(Window *w, int x, int y, truelight@0: int width, int height, uint32 follow_flags, byte zoom); truelight@0: void SetViewportPosition(Window *w, int x, int y); truelight@0: ViewPort *IsPtInWindowViewport(Window *w, int x, int y); truelight@0: Point GetTileBelowCursor(); darkvater@152: void ZoomInOrOutToCursorWindow(bool in, Window * w); darkvater@152: Point GetTileZoomCenterWindow(bool in, Window * w); truelight@0: void UpdateViewportPosition(Window *w); truelight@0: truelight@0: void OffsetGroundSprite(int x, int y); truelight@0: truelight@0: void DrawGroundSprite(uint32 image); truelight@133: void DrawGroundSpriteAt(uint32 image, int16 x, int16 y, byte z); truelight@0: void AddSortableSpriteToDraw(uint32 image, int x, int y, int w, int h, byte dz, byte z); truelight@0: void *AddStringToDraw(int x, int y, StringID string, uint32 params_1, uint32 params_2); truelight@0: void AddChildSpriteScreen(uint32 image, int x, int y); truelight@0: truelight@0: truelight@0: void StartSpriteCombine(); truelight@0: void EndSpriteCombine(); truelight@0: truelight@0: void HandleViewportClicked(ViewPort *vp, int x, int y); truelight@0: void PlaceObject(); truelight@0: void SetRedErrorSquare(TileIndex tile); truelight@0: void SetTileSelectSize(int w, int h); truelight@0: void SetTileSelectBigSize(int ox, int oy, int sx, int sy); truelight@0: truelight@0: void VpStartPlaceSizing(uint tile, int user); truelight@0: void VpStartPreSizing(); truelight@0: void VpSetPresizeRange(uint from, uint to); truelight@0: void VpSetPlaceSizingLimit(int limit); truelight@0: truelight@0: Vehicle *CheckMouseOverVehicle(); truelight@0: truelight@0: enum { truelight@0: VPM_X_OR_Y = 0, truelight@0: VPM_FIX_X = 1, truelight@0: VPM_FIX_Y = 2, truelight@0: VPM_RAILDIRS = 3, truelight@0: VPM_X_AND_Y = 4, truelight@0: VPM_X_AND_Y_LIMITED = 5, darkvater@58: VPM_SIGNALDIRS = 6, truelight@0: }; truelight@0: truelight@0: void VpSelectTilesWithMethod(int x, int y, int method); truelight@0: truelight@0: enum { truelight@0: HT_NONE = 0, truelight@0: HT_RECT = 0x80, truelight@0: HT_POINT = 0x40, truelight@0: HT_LINE = 0x20, truelight@0: }; truelight@0: truelight@0: typedef struct TileHighlightData { truelight@0: Point size; truelight@0: Point outersize; truelight@0: Point pos; truelight@0: Point offs; truelight@0: truelight@0: Point new_pos; truelight@0: Point new_size; truelight@0: Point new_outersize; truelight@0: truelight@0: Point selend, selstart; truelight@0: truelight@0: byte dirty; truelight@0: byte sizelimit; truelight@0: truelight@0: byte drawstyle; truelight@0: byte new_drawstyle; truelight@0: byte next_drawstyle; truelight@0: truelight@0: byte place_mode; truelight@0: byte window_class; truelight@0: bool make_square_red; truelight@0: uint16 window_number; truelight@0: truelight@0: int userdata; truelight@0: TileIndex redsq; truelight@0: } TileHighlightData; truelight@0: truelight@0: truelight@0: // common button handler truelight@0: bool HandlePlacePushButton(Window *w, int widget, uint32 cursor, int mode, PlaceProc *placeproc); truelight@0: truelight@0: /* viewport.c */ darkvater@771: // XXX - maximum viewports is maximum windows - 2 (main toolbar + status bar) darkvater@771: VARDEF ViewPort _viewports[25 - 2]; truelight@0: VARDEF TileHighlightData _thd; truelight@0: VARDEF uint32 _active_viewports; truelight@0: truelight@0: VARDEF Point _tile_fract_coords; truelight@0: truelight@0: extern TileHighlightData * const _thd_ptr; truelight@0: truelight@0: tron@430: void ViewportDoDraw(const ViewPort *vp, int left, int top, int right, int bottom); tron@430: tron@430: #endif /* VIEWPORT_H */