src/zoom.hpp
changeset 7327 fa2e72e31f59
parent 7200 eb3c2fb81091
child 7329 e7b5256df033
equal deleted inserted replaced
7326:290fdfc54179 7327:fa2e72e31f59
    35 
    35 
    36 static inline int ScaleByZoom(int value, ZoomLevel zoom)
    36 static inline int ScaleByZoom(int value, ZoomLevel zoom)
    37 {
    37 {
    38 	if (zoom == ZOOM_LVL_NORMAL) return value;
    38 	if (zoom == ZOOM_LVL_NORMAL) return value;
    39 	int izoom = (int)zoom - (int)ZOOM_LVL_NORMAL;
    39 	int izoom = (int)zoom - (int)ZOOM_LVL_NORMAL;
    40 	return (zoom > ZOOM_LVL_NORMAL) ? value << izoom : value >> -izoom;
    40 	return (zoom > ZOOM_LVL_NORMAL) ? value << izoom : (value + (1 << -izoom)) >> -izoom;
    41 }
    41 }
    42 
    42 
    43 static inline int UnScaleByZoom(int value, ZoomLevel zoom)
    43 static inline int UnScaleByZoom(int value, ZoomLevel zoom)
    44 {
    44 {
    45 	if (zoom == ZOOM_LVL_NORMAL) return value;
    45 	if (zoom == ZOOM_LVL_NORMAL) return value;
    46 	int izoom = (int)zoom - (int)ZOOM_LVL_NORMAL;
    46 	int izoom = (int)zoom - (int)ZOOM_LVL_NORMAL;
    47 	return (zoom > ZOOM_LVL_NORMAL) ? value >> izoom : value << -izoom;
    47 	return (zoom > ZOOM_LVL_NORMAL) ? (value + (1 << izoom) - 1) >> izoom : value << -izoom;
    48 }
    48 }
    49 
    49 
    50 #endif /* ZOOM_HPP */
    50 #endif /* ZOOM_HPP */