Files
@ r9036:e33a0264e0c3
Branch filter:
Location: cpp/openttd-patchpack/source/src/zoom_func.h - annotation
r9036:e33a0264e0c3
1.8 KiB
text/x-c
(svn r12855) -Codechange: do not use autoptr's for testing whether certain objects can be build, but check it directly in the pool so we do not have to call destructors in the testing phase. Stations still use the autoptr though.
r8123:dde0a9a84019 r8123:dde0a9a84019 r8992:4f2309d88f63 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 r8123:dde0a9a84019 | /* $Id$ */
/** @file zoom_func.h */
#ifndef ZOOM_FUNC_H
#define ZOOM_FUNC_H
#include "zoom_type.h"
extern ZoomLevel _saved_scrollpos_zoom;
/**
* Scale by zoom level, usually shift left (when zoom > ZOOM_LVL_NORMAL)
* When shifting right, value is rounded up
* @param value value to shift
* @param zoom zoom level to shift to
* @return shifted value
*/
static inline int ScaleByZoom(int value, ZoomLevel zoom)
{
if (zoom == ZOOM_LVL_NORMAL) return value;
int izoom = zoom - ZOOM_LVL_NORMAL;
return (zoom > ZOOM_LVL_NORMAL) ? value << izoom : (value + (1 << -izoom) - 1) >> -izoom;
}
/**
* Scale by zoom level, usually shift right (when zoom > ZOOM_LVL_NORMAL)
* When shifting right, value is rounded up
* @param value value to shift
* @param zoom zoom level to shift to
* @return shifted value
*/
static inline int UnScaleByZoom(int value, ZoomLevel zoom)
{
if (zoom == ZOOM_LVL_NORMAL) return value;
int izoom = zoom - ZOOM_LVL_NORMAL;
return (zoom > ZOOM_LVL_NORMAL) ? (value + (1 << izoom) - 1) >> izoom : value << -izoom;
}
/**
* Scale by zoom level, usually shift left (when zoom > ZOOM_LVL_NORMAL)
* @param value value to shift
* @param zoom zoom level to shift to
* @return shifted value
*/
static inline int ScaleByZoomLower(int value, ZoomLevel zoom)
{
if (zoom == ZOOM_LVL_NORMAL) return value;
int izoom = zoom - ZOOM_LVL_NORMAL;
return (zoom > ZOOM_LVL_NORMAL) ? value << izoom : value >> -izoom;
}
/**
* Scale by zoom level, usually shift right (when zoom > ZOOM_LVL_NORMAL)
* @param value value to shift
* @param zoom zoom level to shift to
* @return shifted value
*/
static inline int UnScaleByZoomLower(int value, ZoomLevel zoom)
{
if (zoom == ZOOM_LVL_NORMAL) return value;
int izoom = zoom - ZOOM_LVL_NORMAL;
return (zoom > ZOOM_LVL_NORMAL) ? value >> izoom : value << -izoom;
}
#endif /* ZOOM_FUNC_H */
|