@ -138,6 +138,7 @@ 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 Occasionally  introducing  changes  that  are  breaking  the  API .  The  breakage  are  generally  minor  and  easy  to  fix .   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 Here  is  a  change - log  of  API  breaking  changes ,  if  you  are  using  one  of  the  functions  listed ,  expect  to  have  to  fix  some  code .   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					< < < < < < <  HEAD  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 -  2015 / 07 / 08  ( 1.43 )  -  switched  rendering  data  to  use  indexed  rendering .  this  is  saving  a  fair  amount  of  CPU / GPU  and  enables  us  to  get  anti - aliasing  for  a  marginal  cost .   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                       this  necessary  change  will  break  your  rendering  function !  the  fix  should  be  very  easy .  sorry  for  that  : (   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                     -  if  you  are  using  a  vanilla  copy  of  one  of  the  imgui_impl_XXXX . cpp  provided  in  the  example ,  you  just  need  to  update  your  copy  and  you  can  ignore  the  rest .   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -157,6 +158,7 @@ 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                     -  each  ImDrawList  now  contains  both  a  vertex  buffer  and  an  index  buffer .  For  each  command ,  render  ElemCount / 3  triangles  using  indices  from  the  index  buffer .   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                     -  if  you  REALLY  cannot  render  indexed  primitives ,  you  can  call  the  draw_data - > DeIndexAllBuffers ( )  method  to  de - index  your  buffer .  This  is  slow  and  a  waste  of  CPU / GPU .  Prefer  using  indexed  rendering !   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                     -  refer  to  code  in  the  examples /  folder  or  ask  on  the  GitHub  if  you  are  unsure  of  how  to  upgrade .  please  upgrade !   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 -  2015 / 07 / 10  ( 1.43 )  -  changed  SameLine ( )  parameters  from  int  to  float .   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 -  2015 / 07 / 02  ( 1.42 )  -  renamed  SetScrollPosHere ( )  to  SetScrollFromCursorPos ( ) .  Kept  inline  redirection  function  ( will  obsolete ) .   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 -  2015 / 07 / 02  ( 1.42 )  -  renamed  GetScrollPosY ( )  to  GetScrollY ( ) .  Necessary  to  reduce  confusion  along  with  other  scrolling  functions ,  because  positions  ( e . g .  cursor  position )  are  not  equivalent  to  scrolling  amount .   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 -  2015 / 06 / 14  ( 1.41 )  -  changed  ImageButton ( )  default  bg_col  parameter  from  ( 0 , 0 , 0 , 1 )  ( black )  to  ( 0 , 0 , 0 , 0 )  ( transparent )  -  makes  a  difference  when  texture  have  transparence   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -1315,7 +1317,7 @@ struct ImGuiState 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool                     ActiveIdIsJustActivated ;             // Set at the time of activation for one frame
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool                     ActiveIdIsFocusedOnly ;               // Set only by active widget. Denote focus but no active interaction
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiWindow *             ActiveIdWindow ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiWindow *             MovedWindow ;                         // Track the child window we clicked on to move a window. O nly valid if ActiveID is the "#MOVE" identifier of a window.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiWindow *             MovedWindow ;                         // Track the child window we clicked on to move a window. Pointer is o nly valid if ActiveID is the "#MOVE" identifier of a window.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    float                    SettingsDirtyTimer ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImVector < ImGuiIniData >   Settings ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    int                      DisableHideTextAfterDoubleHash ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -2427,13 +2429,14 @@ void ImGui::Render() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : End ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Click to focus window and start moving (after we're done with all our widgets)
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ! g . ActiveId )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            g . MovedWindow  =  NULL ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( g . ActiveId  = =  0  & &  g . HoveredId  = =  0  & &  g . IO . MouseClicked [ 0 ] )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( ! ( g . FocusedWindow  & &  ! g . FocusedWindow - > WasActive  & &  g . FocusedWindow - > Active ) )  // Unless we just made a popup appear
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if  ( g . HoveredRootWindow  ! =  NULL )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    IM_ASSERT ( g . MovedWindow  = =  NULL ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    g . MovedWindow  =  g . HoveredWindow ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    SetActiveId ( g . HoveredRootWindow - > MoveID ,  g . HoveredRootWindow ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                }   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6190,7 +6193,7 @@ static bool SliderFloatN(const char* label, float* v, int components, float v_mi 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PushID ( i ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        value_changed  | =  ImGui : : SliderFloat ( " ##v " ,  & v [ i ] ,  v_min ,  v_max ,  display_format ,  power ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  ( int ) g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PopID ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PopItemWidth ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6232,7 +6235,7 @@ static bool SliderIntN(const char* label, int* v, int components, int v_min, int 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PushID ( i ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        value_changed  | =  ImGui : : SliderInt ( " ##v " ,  & v [ i ] ,  v_min ,  v_max ,  display_format ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  ( int ) g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PopID ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PopItemWidth ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6416,7 +6419,7 @@ static bool DragFloatN(const char* label, float* v, int components, float v_spee 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PushID ( i ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        value_changed  | =  ImGui : : DragFloat ( " ##v " ,  & v [ i ] ,  v_speed ,  v_min ,  v_max ,  display_format ,  power ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  ( int ) g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PopID ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PopItemWidth ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6456,10 +6459,10 @@ bool ImGui::DragFloatRange2(const char* label, float* v_current_min, float* v_cu 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool  value_changed  =  ImGui : : DragFloat ( " ##min " ,  v_current_min ,  v_speed ,  ( v_min  > =  v_max )  ?  - FLT_MAX  :  v_min ,  ( v_min  > =  v_max )  ?  * v_current_max  :  ImMin ( v_max ,  * v_current_max ) ,  display_format ,  power ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : PopItemWidth ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : SameLine ( 0 ,  ( int ) g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : SameLine ( 0 ,  g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    value_changed  | =  ImGui : : DragFloat ( " ##max " ,  v_current_max ,  v_speed ,  ( v_min  > =  v_max )  ?  * v_current_min  :  ImMax ( v_min ,  * v_current_min ) ,  ( v_min  > =  v_max )  ?  FLT_MAX  :  v_max ,  display_format_max  ?  display_format_max  :  display_format ,  power ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : PopItemWidth ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : SameLine ( 0 ,  ( int ) g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : SameLine ( 0 ,  g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : TextUnformatted ( label ,  FindTextDisplayEnd ( label ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : EndGroup ( ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6494,7 +6497,7 @@ static bool DragIntN(const char* label, int* v, int components, float v_speed, i 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PushID ( i ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        value_changed  | =  ImGui : : DragInt ( " ##v " ,  & v [ i ] ,  v_speed ,  v_min ,  v_max ,  display_format ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  ( int ) g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PopID ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PopItemWidth ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6534,10 +6537,10 @@ bool ImGui::DragIntRange2(const char* label, int* v_current_min, int* v_current_ 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool  value_changed  =  ImGui : : DragInt ( " ##min " ,  v_current_min ,  v_speed ,  ( v_min  > =  v_max )  ?  IM_INT_MIN  :  v_min ,  ( v_min  > =  v_max )  ?  * v_current_max  :  ImMin ( v_max ,  * v_current_max ) ,  display_format ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : PopItemWidth ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : SameLine ( 0 ,  ( int ) g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : SameLine ( 0 ,  g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    value_changed  | =  ImGui : : DragInt ( " ##max " ,  v_current_max ,  v_speed ,  ( v_min  > =  v_max )  ?  * v_current_min  :  ImMax ( v_min ,  * v_current_min ) ,  ( v_min  > =  v_max )  ?  IM_INT_MAX  :  v_max ,  display_format_max  ?  display_format_max  :  display_format ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : PopItemWidth ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : SameLine ( 0 ,  ( int ) g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : SameLine ( 0 ,  g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : TextUnformatted ( label ,  FindTextDisplayEnd ( label ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : EndGroup ( ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6701,7 +6704,7 @@ bool ImGui::Checkbox(const char* label, bool* v) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImRect  total_bb  =  check_bb ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( label_size . x  >  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        SameLine ( 0 ,  ( int ) style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        SameLine ( 0 ,  style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  ImRect  text_bb ( window - > DC . CursorPos  +  ImVec2 ( 0 , style . FramePadding . y ) ,  window - > DC . CursorPos  +  ImVec2 ( 0 , style . FramePadding . y )  +  label_size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( label_size . x  >  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6759,7 +6762,7 @@ bool ImGui::RadioButton(const char* label, bool active) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImRect  total_bb  =  check_bb ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( label_size . x  >  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        SameLine ( 0 ,  ( int ) style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        SameLine ( 0 ,  style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  ImRect  text_bb ( window - > DC . CursorPos  +  ImVec2 ( 0 ,  style . FramePadding . y ) ,  window - > DC . CursorPos  +  ImVec2 ( 0 ,  style . FramePadding . y )  +  label_size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( label_size . x  >  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -7150,6 +7153,8 @@ static bool InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                edit_state . StbState . select_start  =  ImMin ( edit_state . StbState . select_start ,  edit_state . CurLenW ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                edit_state . StbState . select_end  =  ImMin ( edit_state . StbState . select_end ,  edit_state . CurLenW ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( flags  &  ImGuiInputTextFlags_AlwaysInsertMode )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                edit_state . StbState . insert_mode  =  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( ! is_multiline  & &  ( focus_requested_by_tab  | |  ( user_clicked  & &  is_ctrl_down ) ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                select_all  =  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -7449,11 +7454,18 @@ static bool InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( edit_state . CursorFollow )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // Horizontal scroll in chunks of quarter width
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( ! ( flags  &  ImGuiInputTextFlags_NoHorizontalScroll ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                const  float  scroll_increment_x  =  size . x  *  0.25f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if  ( cursor_offset . x  <  edit_state . ScrollX )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    edit_state . ScrollX  =  ImMax ( 0.0f ,  cursor_offset . x  -  scroll_increment_x ) ;     
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                else  if  ( cursor_offset . x  -  size . x  > =  edit_state . ScrollX )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    edit_state . ScrollX  =  cursor_offset . x  -  size . x  +  scroll_increment_x ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                edit_state . ScrollX  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // Vertical scroll
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( is_multiline )   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -7595,13 +7607,13 @@ bool ImGui::InputFloat(const char* label, float *v, float step, float step_fast, 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( step  >  0.0f )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PopItemWidth ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  ( int ) style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ButtonEx ( " - " ,  button_sz ,  ImGuiButtonFlags_Repeat  |  ImGuiButtonFlags_DontClosePopups ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            * v  - =  g . IO . KeyCtrl  & &  step_fast  >  0.0f  ?  step_fast  :  step ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            value_changed  =  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  ( int ) style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ButtonEx ( " + " ,  button_sz ,  ImGuiButtonFlags_Repeat  |  ImGuiButtonFlags_DontClosePopups ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            * v  + =  g . IO . KeyCtrl  & &  step_fast  >  0.0f  ?  step_fast  :  step ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -7612,7 +7624,7 @@ bool ImGui::InputFloat(const char* label, float *v, float step, float step_fast, 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( label_size . x  >  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  ( int ) style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        RenderText ( ImVec2 ( window - > DC . CursorPos . x ,  window - > DC . CursorPos . y  +  style . FramePadding . y ) ,  label ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ItemSize ( label_size ,  style . FramePadding . y ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -7645,7 +7657,7 @@ static bool InputFloatN(const char* label, float* v, int components, int decimal 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PushID ( i ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        value_changed  | =  ImGui : : InputFloat ( " ##v " ,  & v [ i ] ,  0 ,  0 ,  decimal_precision ,  extra_flags ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  ( int ) g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PopID ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PopItemWidth ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -7688,7 +7700,7 @@ static bool InputIntN(const char* label, int* v, int components, ImGuiInputTextF 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PushID ( i ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        value_changed  | =  ImGui : : InputInt ( " ##v " ,  & v [ i ] ,  0 ,  0 ,  extra_flags ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  ( int ) g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  g . Style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PopID ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PopItemWidth ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -8362,7 +8374,7 @@ bool ImGui::ColorEdit4(const char* label, float col[4], bool alpha) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for  ( int  n  =  0 ;  n  <  components ;  n + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if  ( n  >  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    ImGui : : SameLine ( 0 ,  ( int ) style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    ImGui : : SameLine ( 0 ,  style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if  ( n  +  1  = =  components )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    ImGui : : PushItemWidth ( w_item_last ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                value_changed  | =  ImGui : : DragInt ( ids [ n ] ,  & i [ n ] ,  1.0f ,  0 ,  255 ,  fmt [ n ] ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -8397,7 +8409,7 @@ bool ImGui::ColorEdit4(const char* label, float col[4], bool alpha) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : SameLine ( 0 ,  ( int ) style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : SameLine ( 0 ,  style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  ImVec4  col_display ( col [ 0 ] ,  col [ 1 ] ,  col [ 2 ] ,  1.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ImGui : : ColorButton ( col_display ) )   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -8405,7 +8417,7 @@ bool ImGui::ColorEdit4(const char* label, float col[4], bool alpha) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( window - > DC . ColorEditMode  = =  ImGuiColorEditMode_UserSelectShowButton )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  ( int ) style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        const  char *  button_titles [ 3 ]  =  {  " RGB " ,  " HSV " ,  " HEX "  } ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ButtonEx ( button_titles [ edit_mode ] ,  ImVec2 ( 0 , 0 ) ,  ImGuiButtonFlags_DontClosePopups ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            g . ColorEditModeStorage . SetInt ( id ,  ( edit_mode  +  1 )  %  3 ) ;  // Don't set local copy of 'edit_mode' right away!
   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -8413,7 +8425,7 @@ bool ImGui::ColorEdit4(const char* label, float col[4], bool alpha) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  ( int ) style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  style . ItemInnerSpacing . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : TextUnformatted ( label ,  FindTextDisplayEnd ( label ) ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -8635,11 +8647,11 @@ void ImGui::EndGroup() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// Gets back to previous line and continue with horizontal layout
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//      column _x == 0   : follow on previous item
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//      columm _x != 0   : align to specified column
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//      pos _x == 0   : follow on previous item
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//      pos _x != 0   : align to specified column
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//      spacing_w < 0   : use default spacing if column_x==0, no spacing if column_x!=0
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//      spacing_w >= 0  : enforce spacing
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  ImGui : : SameLine ( int  column_x ,  in t  spacing_w )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  ImGui : : SameLine ( float  pos_x ,  floa t  spacing_w )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiState &  g  =  * GImGui ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiWindow *  window  =  GetCurrentWindow ( ) ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -8647,16 +8659,16 @@ void ImGui::SameLine(int column_x, int spacing_w) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    float  x ,  y ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( column_x  ! =  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( pos_x  ! =  0.0f )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( spacing_w  <  0 )  spacing_w  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        x  =  window - > Pos . x  +  ( float ) column_x  +  ( float ) spacing_w ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( spacing_w  <  0.0f )  spacing_w  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        x  =  window - > Pos . x  +  pos_x  +  spacing_w ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        y  =  window - > DC . CursorPosPrevLine . y ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( spacing_w  <  0 )  spacing_w  =  ( int ) g . Style . ItemSpacing . x ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        x  =  window - > DC . CursorPosPrevLine . x  +  ( float ) spacing_w ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( spacing_w  <  0.0f )  spacing_w  =  g . Style . ItemSpacing . x ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        x  =  window - > DC . CursorPosPrevLine . x  +  spacing_w ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        y  =  window - > DC . CursorPosPrevLine . y ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > DC . CurrentLineHeight  =  window - > DC . PrevLineHeight ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -11638,7 +11650,7 @@ void ImGui::ShowTestWindow(bool* opened) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : PlotLines ( " ##Graph " ,  values . Data ,  values . Size ,  values_offset ,  " avg 0.0 " ,  - 1.0f ,  1.0f ,  ImVec2 ( 0 , 80 ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  ( int ) ImGui : : GetStyle ( ) . ItemInnerSpacing . x ) ;  
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : SameLine ( 0 ,  ImGui : : GetStyle ( ) . ItemInnerSpacing . x ) ;  
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : BeginGroup ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : Text ( " Graph " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : Checkbox ( " pause " ,  & pause ) ;