@ -3222,19 +3222,19 @@ static void ShowExampleAppConstrainedResize(bool* p_open)
struct CustomConstraints // Helper functions to demonstrate programmatic constraints
struct CustomConstraints // Helper functions to demonstrate programmatic constraints
{
{
static void Square ( ImGuiSizeCallbackData * data ) { data - > DesiredSize = ImVec2 ( IM_MAX ( data - > DesiredSize . x , data - > DesiredSize . y ) , IM_MAX ( data - > DesiredSize . x , data - > DesiredSize . y ) ) ; }
static void Square ( ImGuiSizeCallbackData * data ) { data - > DesiredSize = ImVec2 ( IM_MAX ( data - > DesiredSize . x , data - > DesiredSize . y ) , IM_MAX ( data - > DesiredSize . x , data - > DesiredSize . y ) ) ; }
static void Step ( ImGuiSizeCallbackData * data ) { float step = ( float ) ( int ) ( intptr_t ) data - > UserData ; data - > DesiredSize = ImVec2 ( ( int ) ( data - > DesiredSize . x / step + 0.5f ) * step , ( int ) ( data - > DesiredSize . y / step + 0.5f ) * step ) ; }
static void Step ( ImGuiSizeCallbackData * data ) { float step = ( float ) ( int ) ( intptr_t ) data - > UserData ; data - > DesiredSize = ImVec2 ( ( int ) ( data - > DesiredSize . x / step + 0.5f ) * step , ( int ) ( data - > DesiredSize . y / step + 0.5f ) * step ) ; }
} ;
} ;
static bool auto_resize = false ;
static bool auto_resize = false ;
static int type = 0 ;
static int type = 0 ;
static int display_lines = 10 ;
static int display_lines = 10 ;
if ( type = = 0 ) ImGui : : SetNextWindowSizeConstraints ( ImVec2 ( - 1 , 0 ) , ImVec2 ( - 1 , FLT_MAX ) ) ; // Vertical only
if ( type = = 0 ) ImGui : : SetNextWindowSizeConstraints ( ImVec2 ( - 1 , 0 ) , ImVec2 ( - 1 , FLT_MAX ) ) ; // Vertical only
if ( type = = 1 ) ImGui : : SetNextWindowSizeConstraints ( ImVec2 ( 0 , - 1 ) , ImVec2 ( FLT_MAX , - 1 ) ) ; // Horizontal only
if ( type = = 1 ) ImGui : : SetNextWindowSizeConstraints ( ImVec2 ( 0 , - 1 ) , ImVec2 ( FLT_MAX , - 1 ) ) ; // Horizontal only
if ( type = = 2 ) ImGui : : SetNextWindowSizeConstraints ( ImVec2 ( 100 , 100 ) , ImVec2 ( FLT_MAX , FLT_MAX ) ) ; // Width > 100, Height > 100
if ( type = = 2 ) ImGui : : SetNextWindowSizeConstraints ( ImVec2 ( 100 , 100 ) , ImVec2 ( FLT_MAX , FLT_MAX ) ) ; // Width > 100, Height > 100
if ( type = = 3 ) ImGui : : SetNextWindowSizeConstraints ( ImVec2 ( 400 , - 1 ) , ImVec2 ( 500 , - 1 ) ) ; // Width 400-500
if ( type = = 3 ) ImGui : : SetNextWindowSizeConstraints ( ImVec2 ( 400 , - 1 ) , ImVec2 ( 500 , - 1 ) ) ; // Width 400-500
if ( type = = 4 ) ImGui : : SetNextWindowSizeConstraints ( ImVec2 ( - 1 , 400 ) , ImVec2 ( - 1 , 500 ) ) ; // Height 400-500
if ( type = = 4 ) ImGui : : SetNextWindowSizeConstraints ( ImVec2 ( - 1 , 400 ) , ImVec2 ( - 1 , 500 ) ) ; // Height 400-500
if ( type = = 5 ) ImGui : : SetNextWindowSizeConstraints ( ImVec2 ( 0 , 0 ) , ImVec2 ( FLT_MAX , FLT_MAX ) , CustomConstraints : : Square ) ; // Always Square
if ( type = = 5 ) ImGui : : SetNextWindowSizeConstraints ( ImVec2 ( 0 , 0 ) , ImVec2 ( FLT_MAX , FLT_MAX ) , CustomConstraints : : Square ) ; // Always Square
if ( type = = 6 ) ImGui : : SetNextWindowSizeConstraints ( ImVec2 ( 0 , 0 ) , ImVec2 ( FLT_MAX , FLT_MAX ) , CustomConstraints : : Step , ( void * ) 100 ) ; // Fixed Step
if ( type = = 6 ) ImGui : : SetNextWindowSizeConstraints ( ImVec2 ( 0 , 0 ) , ImVec2 ( FLT_MAX , FLT_MAX ) , CustomConstraints : : Step , ( void * ) 100 ) ; // Fixed Step
ImGuiWindowFlags flags = auto_resize ? ImGuiWindowFlags_AlwaysAutoResize : 0 ;
ImGuiWindowFlags flags = auto_resize ? ImGuiWindowFlags_AlwaysAutoResize : 0 ;
if ( ImGui : : Begin ( " Example: Constrained Resize " , p_open , flags ) )
if ( ImGui : : Begin ( " Example: Constrained Resize " , p_open , flags ) )
@ -3287,10 +3287,10 @@ static void ShowExampleAppSimpleOverlay(bool* p_open)
ImGui : : Text ( " Mouse Position: <invalid> " ) ;
ImGui : : Text ( " Mouse Position: <invalid> " ) ;
if ( ImGui : : BeginPopupContextWindow ( ) )
if ( ImGui : : BeginPopupContextWindow ( ) )
{
{
if ( ImGui : : MenuItem ( " Custom " , NULL , corner = = - 1 ) ) corner = - 1 ;
if ( ImGui : : MenuItem ( " Custom " , NULL , corner = = - 1 ) ) corner = - 1 ;
if ( ImGui : : MenuItem ( " Top-left " , NULL , corner = = 0 ) ) corner = 0 ;
if ( ImGui : : MenuItem ( " Top-left " , NULL , corner = = 0 ) ) corner = 0 ;
if ( ImGui : : MenuItem ( " Top-right " , NULL , corner = = 1 ) ) corner = 1 ;
if ( ImGui : : MenuItem ( " Top-right " , NULL , corner = = 1 ) ) corner = 1 ;
if ( ImGui : : MenuItem ( " Bottom-left " , NULL , corner = = 2 ) ) corner = 2 ;
if ( ImGui : : MenuItem ( " Bottom-left " , NULL , corner = = 2 ) ) corner = 2 ;
if ( ImGui : : MenuItem ( " Bottom-right " , NULL , corner = = 3 ) ) corner = 3 ;
if ( ImGui : : MenuItem ( " Bottom-right " , NULL , corner = = 3 ) ) corner = 3 ;
if ( p_open & & ImGui : : MenuItem ( " Close " ) ) * p_open = false ;
if ( p_open & & ImGui : : MenuItem ( " Close " ) ) * p_open = false ;
ImGui : : EndPopup ( ) ;
ImGui : : EndPopup ( ) ;
@ -3370,8 +3370,8 @@ static void ShowExampleAppCustomRendering(bool* p_open)
draw_list - > AddRect ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col32 , 10.0f , ImDrawCornerFlags_All , curr_thickness ) ; x + = sz + spacing ;
draw_list - > AddRect ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col32 , 10.0f , ImDrawCornerFlags_All , curr_thickness ) ; x + = sz + spacing ;
draw_list - > AddRect ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col32 , 10.0f , ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_BotRight , curr_thickness ) ; x + = sz + spacing ;
draw_list - > AddRect ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col32 , 10.0f , ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_BotRight , curr_thickness ) ; x + = sz + spacing ;
draw_list - > AddTriangle ( ImVec2 ( x + sz * 0.5f , y ) , ImVec2 ( x + sz , y + sz - 0.5f ) , ImVec2 ( x , y + sz - 0.5f ) , col32 , curr_thickness ) ; x + = sz + spacing ;
draw_list - > AddTriangle ( ImVec2 ( x + sz * 0.5f , y ) , ImVec2 ( x + sz , y + sz - 0.5f ) , ImVec2 ( x , y + sz - 0.5f ) , col32 , curr_thickness ) ; x + = sz + spacing ;
draw_list - > AddLine ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y ) , col32 , curr_thickness ) ; x + = sz + spacing ; // Horizontal line (note: drawing a filled rectangle will be faster!)
draw_list - > AddLine ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y ) , col32 , curr_thickness ) ; x + = sz + spacing ; // Horizontal line (note: drawing a filled rectangle will be faster!)
draw_list - > AddLine ( ImVec2 ( x , y ) , ImVec2 ( x , y + sz ) , col32 , curr_thickness ) ; x + = spacing ; // Vertical line (note: drawing a filled rectangle will be faster!)
draw_list - > AddLine ( ImVec2 ( x , y ) , ImVec2 ( x , y + sz ) , col32 , curr_thickness ) ; x + = spacing ; // Vertical line (note: drawing a filled rectangle will be faster!)
draw_list - > AddLine ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col32 , curr_thickness ) ; x + = sz + spacing ; // Diagonal line
draw_list - > AddLine ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col32 , curr_thickness ) ; x + = sz + spacing ; // Diagonal line
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 , curr_thickness ) ;
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 , curr_thickness ) ;
x = p . x + 4 ;
x = p . x + 4 ;
@ -3382,8 +3382,8 @@ static void ShowExampleAppCustomRendering(bool* p_open)
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col32 , 10.0f ) ; x + = sz + spacing ;
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col32 , 10.0f ) ; x + = sz + spacing ;
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col32 , 10.0f , ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_BotRight ) ; x + = sz + spacing ;
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col32 , 10.0f , ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_BotRight ) ; x + = sz + spacing ;
draw_list - > AddTriangleFilled ( ImVec2 ( x + sz * 0.5f , y ) , ImVec2 ( x + sz , y + sz - 0.5f ) , ImVec2 ( x , y + sz - 0.5f ) , col32 ) ; x + = sz + spacing ;
draw_list - > AddTriangleFilled ( ImVec2 ( x + sz * 0.5f , y ) , ImVec2 ( x + sz , y + sz - 0.5f ) , ImVec2 ( x , y + sz - 0.5f ) , col32 ) ; x + = sz + spacing ;
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + thickness ) , col32 ) ; x + = sz + spacing ; // Horizontal line (faster than AddLine, but only handle integer thickness)
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + thickness ) , col32 ) ; x + = sz + spacing ; // Horizontal line (faster than AddLine, but only handle integer thickness)
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + thickness , y + sz ) , col32 ) ; x + = spacing + spacing ; // Vertical line (faster than AddLine, but only handle integer thickness)
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + thickness , y + sz ) , col32 ) ; x + = spacing + spacing ; // Vertical line (faster than AddLine, but only handle integer thickness)
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + 1 , y + 1 ) , col32 ) ; x + = sz ; // Pixel (faster than AddLine)
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + 1 , y + 1 ) , col32 ) ; x + = sz ; // Pixel (faster than AddLine)
draw_list - > AddRectFilledMultiColor ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , IM_COL32 ( 0 , 0 , 0 , 255 ) , IM_COL32 ( 255 , 0 , 0 , 255 ) , IM_COL32 ( 255 , 255 , 0 , 255 ) , IM_COL32 ( 0 , 255 , 0 , 255 ) ) ;
draw_list - > AddRectFilledMultiColor ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , IM_COL32 ( 0 , 0 , 0 , 255 ) , IM_COL32 ( 255 , 0 , 0 , 255 ) , IM_COL32 ( 255 , 255 , 0 , 255 ) , IM_COL32 ( 0 , 255 , 0 , 255 ) ) ;
ImGui : : Dummy ( ImVec2 ( ( sz + spacing ) * 8 , ( sz + spacing ) * 3 ) ) ;
ImGui : : Dummy ( ImVec2 ( ( sz + spacing ) * 8 , ( sz + spacing ) * 3 ) ) ;