|  |  |  | //
 | 
					
						
							|  |  |  | //  Copyright (c) 2018 Open Whisper Systems. All rights reserved.
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | NS_ASSUME_NONNULL_BEGIN | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // TODO: We'll eventually want to promote these into an OWSMath.h header.
 | 
					
						
							|  |  |  | static inline CGFloat CGFloatClamp(CGFloat value, CGFloat minValue, CGFloat maxValue) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return MAX(minValue, MIN(maxValue, value)); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline CGFloat CGFloatClamp01(CGFloat value) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return CGFloatClamp(value, 0.f, 1.f); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline CGFloat CGFloatLerp(CGFloat left, CGFloat right, CGFloat alpha) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     alpha = CGFloatClamp01(alpha); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return (left * (1.f - alpha)) + (right * alpha); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline CGFloat CGFloatInverseLerp(CGFloat value, CGFloat minValue, CGFloat maxValue) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return (value - minValue) / (maxValue - minValue); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Ceil to an even number
 | 
					
						
							|  |  |  | static inline CGFloat CeilEven(CGFloat value) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return 2.f * (CGFloat)ceil(value * 0.5f); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | NS_ASSUME_NONNULL_END |