(svn r26202) -Cleanup: since ZOOM_LEVEL_NORMAL 0 and there aren't any negative zoom levels, there is no reason to account for negative zoom levels in the zoom functions (based on patch by MJP)

This commit is contained in:
rubidium
2014-01-02 11:05:42 +00:00
parent 98b320614a
commit 9e1255b298

View File

@@ -23,9 +23,8 @@
*/ */
static inline int ScaleByZoom(int value, ZoomLevel zoom) static inline int ScaleByZoom(int value, ZoomLevel zoom)
{ {
if (zoom == ZOOM_LVL_NORMAL) return value; assert(zoom >= 0);
int izoom = zoom - ZOOM_LVL_NORMAL; return value << zoom;
return (zoom > ZOOM_LVL_NORMAL) ? value << izoom : (value + (1 << -izoom) - 1) >> -izoom;
} }
/** /**
@@ -37,9 +36,8 @@ static inline int ScaleByZoom(int value, ZoomLevel zoom)
*/ */
static inline int UnScaleByZoom(int value, ZoomLevel zoom) static inline int UnScaleByZoom(int value, ZoomLevel zoom)
{ {
if (zoom == ZOOM_LVL_NORMAL) return value; assert(zoom >= 0);
int izoom = zoom - ZOOM_LVL_NORMAL; return (value + (1 << zoom) - 1) >> zoom;
return (zoom > ZOOM_LVL_NORMAL) ? (value + (1 << izoom) - 1) >> izoom : value << -izoom;
} }
/** /**
@@ -50,9 +48,8 @@ static inline int UnScaleByZoom(int value, ZoomLevel zoom)
*/ */
static inline int ScaleByZoomLower(int value, ZoomLevel zoom) static inline int ScaleByZoomLower(int value, ZoomLevel zoom)
{ {
if (zoom == ZOOM_LVL_NORMAL) return value; assert(zoom >= 0);
int izoom = zoom - ZOOM_LVL_NORMAL; return value << zoom;
return (zoom > ZOOM_LVL_NORMAL) ? value << izoom : value >> -izoom;
} }
/** /**
@@ -63,9 +60,8 @@ static inline int ScaleByZoomLower(int value, ZoomLevel zoom)
*/ */
static inline int UnScaleByZoomLower(int value, ZoomLevel zoom) static inline int UnScaleByZoomLower(int value, ZoomLevel zoom)
{ {
if (zoom == ZOOM_LVL_NORMAL) return value; assert(zoom >= 0);
int izoom = zoom - ZOOM_LVL_NORMAL; return value >> zoom;
return (zoom > ZOOM_LVL_NORMAL) ? value >> izoom : value << -izoom;
} }
#endif /* ZOOM_FUNC_H */ #endif /* ZOOM_FUNC_H */