@ -134,12 +134,15 @@ static inline ImVec2 ImClamp(const ImVec2& f, const ImVec2& mn, ImVec2 mx)
static inline float ImSaturate ( float f ) { return ( f < 0.0f ) ? 0.0f : ( f > 1.0f ) ? 1.0f : f ; }
static inline float ImSaturate ( float f ) { return ( f < 0.0f ) ? 0.0f : ( f > 1.0f ) ? 1.0f : f ; }
static inline int ImLerp ( int a , int b , float t ) { return ( int ) ( a + ( b - a ) * t ) ; }
static inline int ImLerp ( int a , int b , float t ) { return ( int ) ( a + ( b - a ) * t ) ; }
static inline float ImLerp ( float a , float b , float t ) { return a + ( b - a ) * t ; }
static inline float ImLerp ( float a , float b , float t ) { return a + ( b - a ) * t ; }
static inline ImVec2 ImLerp ( const ImVec2 & a , const ImVec2 & b , float t ) { return ImVec2 ( a . x + ( b . x - a . x ) * t , a . y + ( b . y - a . y ) * t ) ; }
static inline ImVec2 ImLerp ( const ImVec2 & a , const ImVec2 & b , const ImVec2 & t ) { return ImVec2 ( a . x + ( b . x - a . x ) * t . x , a . y + ( b . y - a . y ) * t . y ) ; }
static inline ImVec2 ImLerp ( const ImVec2 & a , const ImVec2 & b , const ImVec2 & t ) { return ImVec2 ( a . x + ( b . x - a . x ) * t . x , a . y + ( b . y - a . y ) * t . y ) ; }
static inline float ImLengthSqr ( const ImVec2 & lhs ) { return lhs . x * lhs . x + lhs . y * lhs . y ; }
static inline float ImLengthSqr ( const ImVec2 & lhs ) { return lhs . x * lhs . x + lhs . y * lhs . y ; }
static inline float ImLengthSqr ( const ImVec4 & lhs ) { return lhs . x * lhs . x + lhs . y * lhs . y + lhs . z * lhs . z + lhs . w * lhs . w ; }
static inline float ImLengthSqr ( const ImVec4 & lhs ) { return lhs . x * lhs . x + lhs . y * lhs . y + lhs . z * lhs . z + lhs . w * lhs . w ; }
static inline float ImInvLength ( const ImVec2 & lhs , float fail_value ) { float d = lhs . x * lhs . x + lhs . y * lhs . y ; if ( d > 0.0f ) return 1.0f / sqrtf ( d ) ; return fail_value ; }
static inline float ImInvLength ( const ImVec2 & lhs , float fail_value ) { float d = lhs . x * lhs . x + lhs . y * lhs . y ; if ( d > 0.0f ) return 1.0f / sqrtf ( d ) ; return fail_value ; }
static inline float ImFloor ( float f ) { return ( float ) ( int ) f ; }
static inline float ImFloor ( float f ) { return ( float ) ( int ) f ; }
static inline ImVec2 ImFloor ( ImVec2 v ) { return ImVec2 ( ( float ) ( int ) v . x , ( float ) ( int ) v . y ) ; }
static inline ImVec2 ImFloor ( const ImVec2 & v ) { return ImVec2 ( ( float ) ( int ) v . x , ( float ) ( int ) v . y ) ; }
static inline float ImDot ( const ImVec2 & a , const ImVec2 & b ) { return a . x * b . x + a . y * b . y ; }
static inline ImVec2 ImRotate ( const ImVec2 & v , float cos_a , float sin_a ) { return ImVec2 ( v . x * cos_a - v . y * sin_a , v . x * sin_a + v . y * cos_a ) ; }
// We call C++ constructor on own allocated memory via the placement "new(ptr) Type()" syntax.
// We call C++ constructor on own allocated memory via the placement "new(ptr) Type()" syntax.
// Defining a custom placement new() with a dummy parameter allows us to bypass including <new> which on some platforms complains when user has disabled exceptions.
// Defining a custom placement new() with a dummy parameter allows us to bypass including <new> which on some platforms complains when user has disabled exceptions.