@ -1763,7 +1763,7 @@ static void ShowExampleAppManipulatingWindowTitle(bool* opened) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  ShowExampleAppCustomRendering ( bool *  opened )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : SetNextWindowSize ( ImVec2 ( 300 , 35 0 ) ,  ImGuiSetCond_FirstUseEver ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : SetNextWindowSize ( ImVec2 ( 350 , 56 0 ) ,  ImGuiSetCond_FirstUseEver ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! ImGui : : Begin ( " Example: Custom rendering " ,  opened ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : End ( ) ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -1773,59 +1773,88 @@ static void ShowExampleAppCustomRendering(bool* opened) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Tip: If you do a lot of custom rendering, you probably want to use your own geometrical types and benefit of overloaded operators, etc.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Define IM_VEC2_CLASS_EXTRA in imconfig.h to create implicit conversions between your types and ImVec2/ImVec4.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // ImGui defines overloaded operators but they are internal to imgui.cpp and not exposed outside (to avoid messing with your types)
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // In this example we aren't using the operators.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    static  ImVector < ImVec2 >  points ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    static  bool  adding_line  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ImGui : : Button ( " Clear " ) )  points . clear ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( points . Size  > =  2 )  {  ImGui : : SameLine ( ) ;  if  ( ImGui : : Button ( " Undo " ) )  {  points . pop_back ( ) ;  points . pop_back ( ) ;  }  }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : Text ( " Left-click and drag to add lines " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : Text ( " Right-click to undo " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // In this example we are not using the maths operators!
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImDrawList *  draw_list  =  ImGui : : GetWindowDrawList ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Here we are using InvisibleButton() as a convenience to 1) advance the cursor and 2) allows us to use IsItemHovered()
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // However you can draw directly and poll mouse/keyboard by yourself. You can manipulate the cursor using GetCursorPos() and SetCursorPos().
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // If you only use the ImDrawList API, you can notify the owner window of its extends by using SetCursorPos(max).
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImVec2  canvas_pos  =  ImGui : : GetCursorScreenPos ( ) ;             // ImDrawList API uses screen coordinates!
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImVec2  canvas_size  =  ImGui : : GetContentRegionAvail ( ) ;         // Resize canvas to what's available
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( canvas_size . x  <  50.0f )  canvas_size . x  =  50.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( canvas_size . y  <  50.0f )  canvas_size . y  =  50.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    draw_list - > AddRectFilledMultiColor ( canvas_pos ,  ImVec2 ( canvas_pos . x  +  canvas_size . x ,  canvas_pos . y  +  canvas_size . y ) ,  ImColor ( 0 , 0 , 0 ) ,  ImColor ( 255 , 0 , 0 ) ,  ImColor ( 255 , 255 , 0 ) ,  ImColor ( 0 , 255 , 0 ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    draw_list - > AddRect ( canvas_pos ,  ImVec2 ( canvas_pos . x  +  canvas_size . x ,  canvas_pos . y  +  canvas_size . y ) ,  ImColor ( 255 , 255 , 255 ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    draw_list - > AddBezierCurve ( ImVec2 ( canvas_pos . x + 20 , canvas_pos . y + 20 ) ,  ImVec2 ( canvas_pos . x + 100 , canvas_pos . y + 20 ) ,  ImVec2 ( canvas_pos . x + canvas_size . x - 100 , canvas_pos . y + canvas_size . y - 20 ) ,  ImVec2 ( canvas_pos . x + canvas_size . x - 20 , canvas_pos . y + canvas_size . y - 20 ) ,  ImColor ( 255 , 200 , 0 ) ,  5.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool  adding_preview  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : InvisibleButton ( " canvas " ,  canvas_size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ImGui : : IsItemHovered ( ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Primitives
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : Text ( " Primitives " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    static  float  sz  =  36.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    static  ImVec4  col  =  ImVec4 ( 1.0f , 1.0f , 0.4f , 1.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : DragFloat ( " Size " ,  & sz ,  0.2f ,  1.0f ,  72.0f ,  " %.0f " ) ;  
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : ColorEdit3 ( " Color " ,  & col . x ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImVec2  mouse_pos_in_canvas  =  ImVec2 ( ImGui : : GetIO ( ) . MousePos . x  -  canvas_pos . x ,  ImGui : : GetIO ( ) . MousePos . y  -  canvas_pos . y ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ! adding_line  & &  ImGui : : IsMouseClicked ( 0 ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            points . push_back ( mouse_pos_in_canvas ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            adding_line  =  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( adding_line )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        const  ImVec2  p  =  ImGui : : GetCursorScreenPos ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        const  ImU32  col32  =  ImColor ( col ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        float  x  =  p . x  +  4.0f ,  y  =  p . y  +  4.0f ,  spacing  =  8.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddCircle ( ImVec2 ( x + sz * 0.5f ,  y + sz * 0.5f ) ,  sz * 0.5f ,  col32 ,  32 ) ;  x  + =  sz + spacing ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddRect ( ImVec2 ( x ,  y ) ,  ImVec2 ( x + sz ,  y + sz ) ,  col32 ) ;  x  + =  sz + spacing ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddRect ( ImVec2 ( x ,  y ) ,  ImVec2 ( x + sz ,  y + sz ) ,  col32 ,  10.0f ) ;  x  + =  sz + spacing ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddLine ( ImVec2 ( x ,  y ) ,  ImVec2 ( x + sz ,  y    ) ,  col32 ) ;  x  + =  sz + spacing ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddLine ( ImVec2 ( x ,  y ) ,  ImVec2 ( x + sz ,  y + sz ) ,  col32 ) ;  x  + =  sz + spacing ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddLine ( ImVec2 ( x ,  y ) ,  ImVec2 ( x ,     y + sz ) ,  col32 ) ;  x  + =  spacing ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddBezierCurve ( ImVec2 ( x ,  y ) ,  ImVec2 ( x + sz * 1.3f , y + sz * 0.3f ) ,  ImVec2 ( x + sz - sz * 1.3f , y + sz - sz * 0.3f ) ,  ImVec2 ( x + sz ,  y + sz ) ,  col32 ,  1.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        x  =  p . x  +  4 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        y  + =  sz + spacing ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddCircleFilled ( ImVec2 ( x + sz * 0.5f ,  y + sz * 0.5f ) ,  sz * 0.5f ,  col32 ,  32 ) ;  x  + =  sz + spacing ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddRectFilled ( ImVec2 ( x ,  y ) ,  ImVec2 ( x + sz ,  y + sz ) ,  col32 ) ;  x  + =  sz + spacing ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddRectFilled ( ImVec2 ( x ,  y ) ,  ImVec2 ( x + sz ,  y + sz ) ,  col32 ,  10.0f ) ;  x  + =  sz + spacing ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddLine ( ImVec2 ( x ,  y ) ,  ImVec2 ( x + sz ,  y    ) ,  col32 ,  4.0f ) ;  x  + =  sz + spacing ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddLine ( ImVec2 ( x ,  y ) ,  ImVec2 ( x + sz ,  y + sz ) ,  col32 ,  4.0f ) ;  x  + =  sz + spacing ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddLine ( ImVec2 ( x ,  y ) ,  ImVec2 ( x ,     y + sz ) ,  col32 ,  4.0f ) ;  x  + =  spacing ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddBezierCurve ( ImVec2 ( x ,  y ) ,  ImVec2 ( x + sz * 1.3f , y + sz * 0.3f ) ,  ImVec2 ( x + sz - sz * 1.3f , y + sz - sz * 0.3f ) ,  ImVec2 ( x + sz ,  y + sz ) ,  col32 ,  4.0f ) ;  x  + =  sz + spacing ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddRectFilledMultiColor ( ImVec2 ( x ,  y ) ,  ImVec2 ( x + sz ,  y + sz ) ,  ImColor ( 0 , 0 , 0 ) ,  ImColor ( 255 , 0 , 0 ) ,  ImColor ( 255 , 255 , 0 ) ,  ImColor ( 0 , 255 , 0 ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : Dummy ( ImVec2 ( ( sz + spacing ) * 8 ,  ( sz + spacing ) * 2 ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : Separator ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        static  ImVector < ImVec2 >  points ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        static  bool  adding_line  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : Text ( " Canvas example " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ImGui : : Button ( " Clear " ) )  points . clear ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( points . Size  > =  2 )  {  ImGui : : SameLine ( ) ;  if  ( ImGui : : Button ( " Undo " ) )  {  points . pop_back ( ) ;  points . pop_back ( ) ;  }  }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : Text ( " Left-click and drag to add lines, \n Right-click to undo " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Here we are using InvisibleButton() as a convenience to 1) advance the cursor and 2) allows us to use IsItemHovered()
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // However you can draw directly and poll mouse/keyboard by yourself. You can manipulate the cursor using GetCursorPos() and SetCursorPos().
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // If you only use the ImDrawList API, you can notify the owner window of its extends by using SetCursorPos(max).
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImVec2  canvas_pos  =  ImGui : : GetCursorScreenPos ( ) ;             // ImDrawList API uses screen coordinates!
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImVec2  canvas_size  =  ImGui : : GetContentRegionAvail ( ) ;         // Resize canvas to what's available
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( canvas_size . x  <  50.0f )  canvas_size . x  =  50.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( canvas_size . y  <  50.0f )  canvas_size . y  =  50.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddRectFilledMultiColor ( canvas_pos ,  ImVec2 ( canvas_pos . x  +  canvas_size . x ,  canvas_pos . y  +  canvas_size . y ) ,  ImColor ( 50 , 50 , 50 ) ,  ImColor ( 50 , 50 , 60 ) ,  ImColor ( 60 , 60 , 70 ) ,  ImColor ( 50 , 50 , 60 ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddRect ( canvas_pos ,  ImVec2 ( canvas_pos . x  +  canvas_size . x ,  canvas_pos . y  +  canvas_size . y ) ,  ImColor ( 255 , 255 , 255 ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        bool  adding_preview  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : InvisibleButton ( " canvas " ,  canvas_size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ImGui : : IsItemHovered ( ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            adding_preview  =  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            points . push_back ( mouse_pos_in_canvas ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( ! ImGui : : GetIO ( ) . MouseDown [ 0 ] )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImVec2  mouse_pos_in_canvas  =  ImVec2 ( ImGui : : GetIO ( ) . MousePos . x  -  canvas_pos . x ,  ImGui : : GetIO ( ) . MousePos . y  -  canvas_pos . y ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( ! adding_line  & &  ImGui : : IsMouseClicked ( 0 ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                points . push_back ( mouse_pos_in_canvas ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                adding_line  =  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( adding_line )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                adding_preview  =  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                points . push_back ( mouse_pos_in_canvas ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if  ( ! ImGui : : GetIO ( ) . MouseDown [ 0 ] )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    adding_line  =  adding_preview  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( ImGui : : IsMouseClicked ( 1 )  & &  ! points . empty ( ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                adding_line  =  adding_preview  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                points . pop_back ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                points . pop_back ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ImGui : : IsMouseClicked ( 1 )  & &  ! points . empty ( ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            adding_line  =  adding_preview  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > PushClipRect ( ImVec4 ( canvas_pos . x ,  canvas_pos . y ,  canvas_pos . x + canvas_size . x ,  canvas_pos . y + canvas_size . y ) ) ;       // clip lines within the canvas (if we resize it, etc.)
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( int  i  =  0 ;  i  <  points . Size  -  1 ;  i  + =  2 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            draw_list - > AddLine ( ImVec2 ( canvas_pos . x  +  points [ i ] . x ,  canvas_pos . y  +  points [ i ] . y ) ,  ImVec2 ( canvas_pos . x  +  points [ i + 1 ] . x ,  canvas_pos . y  +  points [ i + 1 ] . y ) ,  0xFF00FFFF ,  2.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > PopClipRect ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( adding_preview )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            points . pop_back ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            points . pop_back ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    draw_list - > PushClipRect ( ImVec4 ( canvas_pos . x ,  canvas_pos . y ,  canvas_pos . x + canvas_size . x ,  canvas_pos . y + canvas_size . y ) ) ;       // clip lines within the canvas (if we resize it, etc.)
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( int  i  =  0 ;  i  <  points . Size  -  1 ;  i  + =  2 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        draw_list - > AddLine ( ImVec2 ( canvas_pos . x  +  points [ i ] . x ,  canvas_pos . y  +  points [ i ] . y ) ,  ImVec2 ( canvas_pos . x  +  points [ i + 1 ] . x ,  canvas_pos . y  +  points [ i + 1 ] . y ) ,  0xFF00FFFF ,  2.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    draw_list - > PopClipRect ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( adding_preview )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        points . pop_back ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGui : : End ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}