@ -45,7 +45,8 @@ CODE 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// [SECTION] FORWARD DECLARATIONS
  
					 
					 
					 
					// [SECTION] FORWARD DECLARATIONS
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// [SECTION] CONTEXT AND MEMORY ALLOCATORS
  
					 
					 
					 
					// [SECTION] CONTEXT AND MEMORY ALLOCATORS
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// [SECTION] MAIN USER FACING STRUCTURES (ImGuiStyle, ImGuiIO)
  
					 
					 
					 
					// [SECTION] MAIN USER FACING STRUCTURES (ImGuiStyle, ImGuiIO)
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// [SECTION] MISC HELPERS/UTILITIES (Geometry, String, Format, Hash, File functions)
  
					 
					 
					 
					// [SECTION] MISC HELPERS/UTILITIES (Geometry functions)
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// [SECTION] MISC HELPERS/UTILITIES (String, Format, Hash functions)
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// [SECTION] MISC HELPERS/UTILITIES (File functions)
  
					 
					 
					 
					// [SECTION] MISC HELPERS/UTILITIES (File functions)
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// [SECTION] MISC HELPERS/UTILITIES (ImText* functions)
  
					 
					 
					 
					// [SECTION] MISC HELPERS/UTILITIES (ImText* functions)
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// [SECTION] MISC HELPERS/UTILITIES (Color functions)
  
					 
					 
					 
					// [SECTION] MISC HELPERS/UTILITIES (Color functions)
  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -364,6 +365,7 @@ CODE 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 -  2019 / XX / XX  ( 1. XX )  -  Moved  IME  support  functions  from  io . ImeSetInputScreenPosFn ,  io . ImeWindowHandle  to  the  PlatformIO  api .   
					 
					 
					 
					 -  2019 / XX / XX  ( 1. XX )  -  Moved  IME  support  functions  from  io . ImeSetInputScreenPosFn ,  io . ImeWindowHandle  to  the  PlatformIO  api .   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					 -  2019 / 12 / 17  ( 1.75 )  -  made  Columns ( )  limited  to  64  columns  by  asserting  above  that  limit .  While  the  current  code  technically  supports  it ,  future  code  may  not  so  we ' re  putting  the  restriction  ahead .   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 -  2019 / 12 / 13  ( 1.75 )  -  [ imgui_internal . h ]  changed  ImRect ( )  default  constructor  initializes  all  fields  to  0.0f  instead  of  ( FLT_MAX , FLT_MAX , - FLT_MAX , - FLT_MAX ) .  If  you  used  ImRect : : Add ( )  to  create  bounding  boxes  by  adding  multiple  points  into  it ,  you  may  need  to  fix  your  initial  value .   
					 
					 
					 
					 -  2019 / 12 / 13  ( 1.75 )  -  [ imgui_internal . h ]  changed  ImRect ( )  default  constructor  initializes  all  fields  to  0.0f  instead  of  ( FLT_MAX , FLT_MAX , - FLT_MAX , - FLT_MAX ) .  If  you  used  ImRect : : Add ( )  to  create  bounding  boxes  by  adding  multiple  points  into  it ,  you  may  need  to  fix  your  initial  value .   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 -  2019 / 12 / 08  ( 1.75 )  -  removed  redirecting  functions / enums  that  were  marked  obsolete  in  1.53  ( December  2017 ) :   
					 
					 
					 
					 -  2019 / 12 / 08  ( 1.75 )  -  removed  redirecting  functions / enums  that  were  marked  obsolete  in  1.53  ( December  2017 ) :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                       -  ShowTestWindow ( )                     - >  use  ShowDemoWindow ( )   
					 
					 
					 
					                       -  ShowTestWindow ( )                     - >  use  ShowDemoWindow ( )   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1143,9 +1145,77 @@ void ImGuiIO::ClearInputCharacters() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// [SECTION] MISC HELPERS/UTILITIES (Geometry, String, Format, Hash, File  functions)
  
					 
					 
					 
					// [SECTION] MISC HELPERS/UTILITIES (Geometry functions)
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					ImVec2  ImBezierClosestPoint ( const  ImVec2 &  p1 ,  const  ImVec2 &  p2 ,  const  ImVec2 &  p3 ,  const  ImVec2 &  p4 ,  const  ImVec2 &  p ,  int  num_segments )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    IM_ASSERT ( num_segments  >  0 ) ;  // Use ImBezierClosestPointCasteljau()
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2  p_last  =  p1 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2  p_closest ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    float  p_closest_dist2  =  FLT_MAX ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    float  t_step  =  1.0f  /  ( float ) num_segments ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    for  ( int  i_step  =  1 ;  i_step  < =  num_segments ;  i_step + + )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        ImVec2  p_current  =  ImBezierCalc ( p1 ,  p2 ,  p3 ,  p4 ,  t_step  *  i_step ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        ImVec2  p_line  =  ImLineClosestPoint ( p_last ,  p_current ,  p ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        float  dist2  =  ImLengthSqr ( p  -  p_line ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        if  ( dist2  <  p_closest_dist2 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            p_closest  =  p_line ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            p_closest_dist2  =  dist2 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        p_last  =  p_current ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    return  p_closest ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// Closely mimics PathBezierToCasteljau() in imgui_draw.cpp
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					static  void  BezierClosestPointCasteljauStep ( const  ImVec2 &  p ,  ImVec2 &  p_closest ,  ImVec2 &  p_last ,  float &  p_closest_dist2 ,  float  x1 ,  float  y1 ,  float  x2 ,  float  y2 ,  float  x3 ,  float  y3 ,  float  x4 ,  float  y4 ,  float  tess_tol ,  int  level )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    float  dx  =  x4  -  x1 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    float  dy  =  y4  -  y1 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    float  d2  =  ( ( x2  -  x4 )  *  dy  -  ( y2  -  y4 )  *  dx ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    float  d3  =  ( ( x3  -  x4 )  *  dy  -  ( y3  -  y4 )  *  dx ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    d2  =  ( d2  > =  0 )  ?  d2  :  - d2 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    d3  =  ( d3  > =  0 )  ?  d3  :  - d3 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    if  ( ( d2 + d3 )  *  ( d2 + d3 )  <  tess_tol  *  ( dx * dx  +  dy * dy ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        ImVec2  p_current ( x4 ,  y4 ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        ImVec2  p_line  =  ImLineClosestPoint ( p_last ,  p_current ,  p ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        float  dist2  =  ImLengthSqr ( p  -  p_line ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        if  ( dist2  <  p_closest_dist2 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            p_closest  =  p_line ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            p_closest_dist2  =  dist2 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        p_last  =  p_current ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    else  if  ( level  <  10 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        float  x12  =  ( x1 + x2 ) * 0.5f ,        y12  =  ( y1 + y2 ) * 0.5f ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        float  x23  =  ( x2 + x3 ) * 0.5f ,        y23  =  ( y2 + y3 ) * 0.5f ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        float  x34  =  ( x3 + x4 ) * 0.5f ,        y34  =  ( y3 + y4 ) * 0.5f ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        float  x123  =  ( x12 + x23 ) * 0.5f ,     y123  =  ( y12 + y23 ) * 0.5f ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        float  x234  =  ( x23 + x34 ) * 0.5f ,     y234  =  ( y23 + y34 ) * 0.5f ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        float  x1234  =  ( x123 + x234 ) * 0.5f ,  y1234  =  ( y123 + y234 ) * 0.5f ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        BezierClosestPointCasteljauStep ( p ,  p_closest ,  p_last ,  p_closest_dist2 ,  x1 ,  y1 ,  x12 ,  y12 ,  x123 ,  y123 ,  x1234 ,  y1234 ,  tess_tol ,  level  +  1 ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        BezierClosestPointCasteljauStep ( p ,  p_closest ,  p_last ,  p_closest_dist2 ,  x1234 ,  y1234 ,  x234 ,  y234 ,  x34 ,  y34 ,  x4 ,  y4 ,  tess_tol ,  level  +  1 ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// tess_tol is generally the same value you would find in ImGui::GetStyle().CurveTessellationTol
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// Because those ImXXX functions are lower-level than ImGui:: we cannot access this value automatically.
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					ImVec2  ImBezierClosestPointCasteljau ( const  ImVec2 &  p1 ,  const  ImVec2 &  p2 ,  const  ImVec2 &  p3 ,  const  ImVec2 &  p4 ,  const  ImVec2 &  p ,  float  tess_tol )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    IM_ASSERT ( tess_tol  >  0.0f ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2  p_last  =  p1 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2  p_closest ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    float  p_closest_dist2  =  FLT_MAX ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    BezierClosestPointCasteljauStep ( p ,  p_closest ,  p_last ,  p_closest_dist2 ,  p1 . x ,  p1 . y ,  p2 . x ,  p2 . y ,  p3 . x ,  p3 . y ,  p4 . x ,  p4 . y ,  tess_tol ,  0 ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    return  p_closest ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					ImVec2  ImLineClosestPoint ( const  ImVec2 &  a ,  const  ImVec2 &  b ,  const  ImVec2 &  p )  
					 
					 
					 
					ImVec2  ImLineClosestPoint ( const  ImVec2 &  a ,  const  ImVec2 &  b ,  const  ImVec2 &  p )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec2  ap  =  p  -  a ;   
					 
					 
					 
					    ImVec2  ap  =  p  -  a ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1194,6 +1264,10 @@ ImVec2 ImTriangleClosestPoint(const ImVec2& a, const ImVec2& b, const ImVec2& c, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    return  proj_ca ;   
					 
					 
					 
					    return  proj_ca ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// [SECTION] MISC HELPERS/UTILITIES (String, Format, Hash functions)
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Consider using _stricmp/_strnicmp under Windows or strcasecmp/strncasecmp. We don't actually use either ImStricmp/ImStrnicmp in the codebase any more.
  
					 
					 
					 
					// Consider using _stricmp/_strnicmp under Windows or strcasecmp/strncasecmp. We don't actually use either ImStricmp/ImStrnicmp in the codebase any more.
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					int  ImStricmp ( const  char *  str1 ,  const  char *  str2 )  
					 
					 
					 
					int  ImStricmp ( const  char *  str1 ,  const  char *  str2 )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1764,38 +1838,6 @@ void ImGui::ColorConvertHSVtoRGB(float h, float s, float v, float& out_r, float& 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					ImU32  ImGui : : GetColorU32 ( ImGuiCol  idx ,  float  alpha_mul )  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiStyle &  style  =  GImGui - > Style ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec4  c  =  style . Colors [ idx ] ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    c . w  * =  style . Alpha  *  alpha_mul ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    return  ColorConvertFloat4ToU32 ( c ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					ImU32  ImGui : : GetColorU32 ( const  ImVec4 &  col )  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiStyle &  style  =  GImGui - > Style ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec4  c  =  col ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    c . w  * =  style . Alpha ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    return  ColorConvertFloat4ToU32 ( c ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					const  ImVec4 &  ImGui : : GetStyleColorVec4 ( ImGuiCol  idx )  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiStyle &  style  =  GImGui - > Style ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    return  style . Colors [ idx ] ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					ImU32  ImGui : : GetColorU32 ( ImU32  col )  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    float  style_alpha  =  GImGui - > Style . Alpha ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( style_alpha  > =  1.0f )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        return  col ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImU32  a  =  ( col  &  IM_COL32_A_MASK )  > >  IM_COL32_A_SHIFT ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    a  =  ( ImU32 ) ( a  *  style_alpha ) ;  // We don't need to clamp 0..255 because Style.Alpha is in 0..1 range.
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    return  ( col  &  ~ IM_COL32_A_MASK )  |  ( a  < <  IM_COL32_A_SHIFT ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// [SECTION] ImGuiStorage
  
					 
					 
					 
					// [SECTION] ImGuiStorage
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Helper: Key->value storage
  
					 
					 
					 
					// Helper: Key->value storage
  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -2253,10 +2295,42 @@ bool ImGuiListClipper::Step() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// [SECTION] RENDER HELPERS
  
					 
					 
					 
					// [SECTION] RENDER HELPERS
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// T hose (internal) functions are currently quite a legacy mess - their signature and behavior will change.
  
					 
					 
					 
					// Some of t hose (internal) functions are currently quite a legacy mess - their signature and behavior will change.
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					// Also see imgui_draw.cpp for some more which have been reworked to not rely on ImGui:: state.
  
					 
					 
					 
					// Also see imgui_draw.cpp for some more which have been reworked to not rely on ImGui:: state.
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					ImU32  ImGui : : GetColorU32 ( ImGuiCol  idx ,  float  alpha_mul )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImGuiStyle &  style  =  GImGui - > Style ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec4  c  =  style . Colors [ idx ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    c . w  * =  style . Alpha  *  alpha_mul ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    return  ColorConvertFloat4ToU32 ( c ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					ImU32  ImGui : : GetColorU32 ( const  ImVec4 &  col )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImGuiStyle &  style  =  GImGui - > Style ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec4  c  =  col ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    c . w  * =  style . Alpha ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    return  ColorConvertFloat4ToU32 ( c ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					const  ImVec4 &  ImGui : : GetStyleColorVec4 ( ImGuiCol  idx )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImGuiStyle &  style  =  GImGui - > Style ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    return  style . Colors [ idx ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					ImU32  ImGui : : GetColorU32 ( ImU32  col )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImGuiStyle &  style  =  GImGui - > Style ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    if  ( style . Alpha  > =  1.0f )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        return  col ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImU32  a  =  ( col  &  IM_COL32_A_MASK )  > >  IM_COL32_A_SHIFT ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    a  =  ( ImU32 ) ( a  *  style . Alpha ) ;  // We don't need to clamp 0..255 because Style.Alpha is in 0..1 range.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    return  ( col  &  ~ IM_COL32_A_MASK )  |  ( a  < <  IM_COL32_A_SHIFT ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					const  char *  ImGui : : FindRenderedTextEnd ( const  char *  text ,  const  char *  text_end )  
					 
					 
					 
					const  char *  ImGui : : FindRenderedTextEnd ( const  char *  text ,  const  char *  text_end )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  char *  text_display_end  =  text ;   
					 
					 
					 
					    const  char *  text_display_end  =  text ;