truelight@7120: /* $Id$ */ truelight@7120: truelight@7120: /** @file zoom.hpp */ truelight@7120: truelight@7120: #ifndef ZOOM_HPP truelight@7120: #define ZOOM_HPP truelight@7120: truelight@7120: enum ZoomLevel { truelight@7120: /* Our possible zoom-levels */ truelight@7120: ZOOM_LVL_NORMAL = 0, truelight@7120: ZOOM_LVL_OUT_2X, truelight@7120: ZOOM_LVL_OUT_4X, truelight@7120: ZOOM_LVL_END, truelight@7120: truelight@7120: /* Here we define in which zoom viewports are */ truelight@7120: ZOOM_LVL_VIEWPORT = ZOOM_LVL_NORMAL, truelight@7120: ZOOM_LVL_NEWS = ZOOM_LVL_NORMAL, truelight@7120: ZOOM_LVL_INDUSTRY = ZOOM_LVL_OUT_2X, truelight@7120: ZOOM_LVL_TOWN = ZOOM_LVL_OUT_2X, truelight@7120: ZOOM_LVL_AIRCRAFT = ZOOM_LVL_NORMAL, truelight@7120: ZOOM_LVL_SHIP = ZOOM_LVL_NORMAL, truelight@7120: ZOOM_LVL_TRAIN = ZOOM_LVL_NORMAL, truelight@7120: ZOOM_LVL_ROADVEH = ZOOM_LVL_NORMAL, truelight@7120: ZOOM_LVL_WORLD_SCREENSHOT = ZOOM_LVL_NORMAL, truelight@7122: truelight@7122: ZOOM_LVL_DETAIL = ZOOM_LVL_OUT_2X, //! All zoomlevels below or equal to this, will result in details on the screen, like road-work, ... truelight@7122: truelight@7122: ZOOM_LVL_MIN = ZOOM_LVL_NORMAL, truelight@7122: ZOOM_LVL_MAX = ZOOM_LVL_OUT_4X, truelight@7120: }; truelight@7120: truelight@7120: extern ZoomLevel _saved_scrollpos_zoom; truelight@7120: truelight@7122: static inline int ScaleByZoom(int value, ZoomLevel zoom) truelight@7122: { truelight@7122: int izoom = (int)zoom - (int)ZOOM_LVL_NORMAL; truelight@7124: return (zoom > ZOOM_LVL_NORMAL) ? value << izoom : value >> izoom; truelight@7122: } truelight@7122: truelight@7122: static inline int UnScaleByZoom(int value, ZoomLevel zoom) truelight@7122: { truelight@7122: int izoom = (int)zoom - (int)ZOOM_LVL_NORMAL; truelight@7124: return (zoom > ZOOM_LVL_NORMAL) ? value >> izoom : value << izoom; truelight@7122: } truelight@7122: truelight@7120: #endif /* ZOOM_HPP */