@ -135,7 +135,7 @@ static inline ImVec2 ImLerp(const ImVec2& a, const ImVec2& b, const ImVec2& t)
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 ImVec2 Im Round ( ImVec2 v ) { return ImVec2 ( ( float ) ( int ) v . x , ( float ) ( int ) v . y ) ; }
static inline ImVec2 Im Floor ( ImVec2 v ) { return ImVec2 ( ( float ) ( int ) v . x , ( float ) ( int ) v . y ) ; }
// 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.
@ -231,7 +231,7 @@ struct IMGUI_API ImRect
void Expand ( const ImVec2 & amount ) { Min . x - = amount . x ; Min . y - = amount . y ; Max . x + = amount . x ; Max . y + = amount . y ; }
void Expand ( const ImVec2 & amount ) { Min . x - = amount . x ; Min . y - = amount . y ; Max . x + = amount . x ; Max . y + = amount . y ; }
void Reduce ( const ImVec2 & amount ) { Min . x + = amount . x ; Min . y + = amount . y ; Max . x - = amount . x ; Max . y - = amount . y ; }
void Reduce ( const ImVec2 & amount ) { Min . x + = amount . x ; Min . y + = amount . y ; Max . x - = amount . x ; Max . y - = amount . y ; }
void Clip ( const ImRect & clip ) { if ( Min . x < clip . Min . x ) Min . x = clip . Min . x ; if ( Min . y < clip . Min . y ) Min . y = clip . Min . y ; if ( Max . x > clip . Max . x ) Max . x = clip . Max . x ; if ( Max . y > clip . Max . y ) Max . y = clip . Max . y ; }
void Clip ( const ImRect & clip ) { if ( Min . x < clip . Min . x ) Min . x = clip . Min . x ; if ( Min . y < clip . Min . y ) Min . y = clip . Min . y ; if ( Max . x > clip . Max . x ) Max . x = clip . Max . x ; if ( Max . y > clip . Max . y ) Max . y = clip . Max . y ; }
void Round ( ) { Min . x = ( float ) ( int ) Min . x ; Min . y = ( float ) ( int ) Min . y ; Max . x = ( float ) ( int ) Max . x ; Max . y = ( float ) ( int ) Max . y ; }
void Floor ( ) { Min . x = ( float ) ( int ) Min . x ; Min . y = ( float ) ( int ) Min . y ; Max . x = ( float ) ( int ) Max . x ; Max . y = ( float ) ( int ) Max . y ; }
ImVec2 GetClosestPoint ( ImVec2 p , bool on_edge ) const
ImVec2 GetClosestPoint ( ImVec2 p , bool on_edge ) const
{
{
if ( ! on_edge & & Contains ( p ) )
if ( ! on_edge & & Contains ( p ) )