@ -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.