diff options
-rw-r--r-- | gui.h | 7 | ||||
-rw-r--r-- | main_gui.c | 40 | ||||
-rw-r--r-- | viewport.h | 10 |
3 files changed, 30 insertions, 27 deletions
@@ -124,13 +124,6 @@ extern const byte _fios_colors[]; /* bridge_gui.c */ void ShowBuildBridgeWindow(uint start, uint end, byte type); -enum { - ZOOM_IN = 0, - ZOOM_OUT = 1, - ZOOM_NONE = 2, // hack, used to update the button status -}; - -bool DoZoomInOutWindow(int how, Window *w); void ShowBuildIndustryWindow(void); void ShowQueryString(StringID str, StringID caption, uint maxlen, uint maxwidth, WindowClass window_class, WindowNumber window_number, CharSetFilter afilter); void ShowQuery(StringID caption, StringID message, void (*ok_cancel_callback)(bool ok_clicked), WindowClass window_class, WindowNumber window_number); diff --git a/main_gui.c b/main_gui.c index f7bf3d1d9..7a9c06969 100644 --- a/main_gui.c +++ b/main_gui.c @@ -866,29 +866,31 @@ bool DoZoomInOutWindow(int how, Window *w) assert(w); vp = w->viewport; - if (how == ZOOM_IN) { - if (vp->zoom == 0) return false; - vp->zoom--; - vp->virtual_width >>= 1; - vp->virtual_height >>= 1; - - WP(w,vp_d).scrollpos_x += vp->virtual_width >> 1; - WP(w,vp_d).scrollpos_y += vp->virtual_height >> 1; - - SetWindowDirty(w); - } else if (how == ZOOM_OUT) { - if (vp->zoom == 2) return false; - vp->zoom++; - - WP(w,vp_d).scrollpos_x -= vp->virtual_width >> 1; - WP(w,vp_d).scrollpos_y -= vp->virtual_height >> 1; + switch (how) { + case ZOOM_IN: + if (vp->zoom == 0) return false; + vp->zoom--; + vp->virtual_width >>= 1; + vp->virtual_height >>= 1; + + WP(w,vp_d).scrollpos_x += vp->virtual_width >> 1; + WP(w,vp_d).scrollpos_y += vp->virtual_height >> 1; + break; + case ZOOM_OUT: + if (vp->zoom == 2) return false; + vp->zoom++; - vp->virtual_width <<= 1; - vp->virtual_height <<= 1; + WP(w,vp_d).scrollpos_x -= vp->virtual_width >> 1; + WP(w,vp_d).scrollpos_y -= vp->virtual_height >> 1; - SetWindowDirty(w); + vp->virtual_width <<= 1; + vp->virtual_height <<= 1; + break; + default: return false; } + SetWindowDirty(w); + // routine to disable/enable the zoom buttons. Didn't know where to place these otherwise { Window *wt = NULL; diff --git a/viewport.h b/viewport.h index abda49851..ed0d2be3f 100644 --- a/viewport.h +++ b/viewport.h @@ -20,9 +20,17 @@ void AssignWindowViewport(Window *w, int x, int y, int width, int height, uint32 follow_flags, byte zoom); ViewPort *IsPtInWindowViewport(const Window *w, int x, int y); Point GetTileBelowCursor(void); +void UpdateViewportPosition(Window *w); + +enum { + ZOOM_IN = 0, + ZOOM_OUT = 1, + ZOOM_NONE = 2, // hack, used to update the button status +}; + +bool DoZoomInOutWindow(int how, Window *w); void ZoomInOrOutToCursorWindow(bool in, Window * w); Point GetTileZoomCenterWindow(bool in, Window * w); -void UpdateViewportPosition(Window *w); void OffsetGroundSprite(int x, int y); |