truelight@6624: /* $Id$ */ truelight@6624: truelight@6624: /** @file zoom.hpp */ truelight@6624: truelight@6624: #ifndef ZOOM_HPP truelight@6624: #define ZOOM_HPP truelight@6624: truelight@6624: enum ZoomLevel { truelight@6624: /* Our possible zoom-levels */ truelight@6624: ZOOM_LVL_NORMAL = 0, truelight@6624: ZOOM_LVL_OUT_2X, truelight@6624: ZOOM_LVL_OUT_4X, truelight@6653: ZOOM_LVL_OUT_8X, truelight@6624: ZOOM_LVL_END, truelight@6624: truelight@6624: /* Here we define in which zoom viewports are */ truelight@6624: ZOOM_LVL_VIEWPORT = ZOOM_LVL_NORMAL, truelight@6624: ZOOM_LVL_NEWS = ZOOM_LVL_NORMAL, truelight@6624: ZOOM_LVL_INDUSTRY = ZOOM_LVL_OUT_2X, truelight@6624: ZOOM_LVL_TOWN = ZOOM_LVL_OUT_2X, truelight@6624: ZOOM_LVL_AIRCRAFT = ZOOM_LVL_NORMAL, truelight@6624: ZOOM_LVL_SHIP = ZOOM_LVL_NORMAL, truelight@6624: ZOOM_LVL_TRAIN = ZOOM_LVL_NORMAL, truelight@6624: ZOOM_LVL_ROADVEH = ZOOM_LVL_NORMAL, truelight@6624: ZOOM_LVL_WORLD_SCREENSHOT = ZOOM_LVL_NORMAL, truelight@6626: truelight@6852: 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@6626: truelight@6626: ZOOM_LVL_MIN = ZOOM_LVL_NORMAL, truelight@6853: ZOOM_LVL_MAX = ZOOM_LVL_OUT_8X, truelight@6624: }; truelight@6624: truelight@6624: extern ZoomLevel _saved_scrollpos_zoom; truelight@6624: truelight@6626: static inline int ScaleByZoom(int value, ZoomLevel zoom) truelight@6626: { truelight@6653: if (zoom == ZOOM_LVL_NORMAL) return value; truelight@6626: int izoom = (int)zoom - (int)ZOOM_LVL_NORMAL; truelight@6833: return (zoom > ZOOM_LVL_NORMAL) ? value << izoom : (value + (1 << -izoom) - 1) >> -izoom; truelight@6626: } truelight@6626: truelight@6626: static inline int UnScaleByZoom(int value, ZoomLevel zoom) truelight@6626: { truelight@6653: if (zoom == ZOOM_LVL_NORMAL) return value; truelight@6626: int izoom = (int)zoom - (int)ZOOM_LVL_NORMAL; truelight@6831: return (zoom > ZOOM_LVL_NORMAL) ? (value + (1 << izoom) - 1) >> izoom : value << -izoom; truelight@6626: } truelight@6626: truelight@6624: #endif /* ZOOM_HPP */