(svn r7093) -Codechange: Move DoZoomInOutWindow declaration to viewport.h and rewrite the function

a bit more sensibly.
This commit is contained in:
Darkvater 2006-11-07 13:01:36 +00:00
parent 45366b4372
commit e90bc1681f
3 changed files with 29 additions and 26 deletions

7
gui.h
View File

@ -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);

View File

@ -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;
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;
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++;
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;
WP(w,vp_d).scrollpos_x -= vp->virtual_width >> 1;
WP(w,vp_d).scrollpos_y -= vp->virtual_height >> 1;
vp->virtual_width <<= 1;
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;

View File

@ -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);