@ -4077,44 +4077,48 @@ static void ShowExampleAppCustomRendering(bool* p_open)
if ( ImGui : : BeginTabItem ( " Primitives " ) )
{
static float sz = 36.0f ;
static float thickness = 4 .0f;
static ImVec4 col = ImVec4 ( 1.0f , 1.0f , 0.4f , 1.0f ) ;
static float thickness = 3 .0f;
static ImVec4 col f = ImVec4 ( 1.0f , 1.0f , 0.4f , 1.0f ) ;
ImGui : : DragFloat ( " Size " , & sz , 0.2f , 2.0f , 72.0f , " %.0f " ) ;
ImGui : : DragFloat ( " Thickness " , & thickness , 0.05f , 1.0f , 8.0f , " %.02f " ) ;
ImGui : : ColorEdit4 ( " Color " , & col . x ) ;
ImGui : : ColorEdit4 ( " Color " , & col f . x ) ;
const ImVec2 p = ImGui : : GetCursorScreenPos ( ) ;
const ImU32 col32 = ImColor ( col ) ;
float x = p . x + 4.0f , y = p . y + 4.0f , spacing = 8.0f ;
const ImU32 col = ImColor ( colf ) ;
float x = p . x + 4.0f , y = p . y + 4.0f ;
float spacing = 10.0f ;
ImDrawCornerFlags corners_none = 0 ;
ImDrawCornerFlags corners_all = ImDrawCornerFlags_All ;
ImDrawCornerFlags corners_tl_br = ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_BotRight ;
for ( int n = 0 ; n < 2 ; n + + )
{
// First line uses a thickness of 1.0, second line uses the configurable thickness
// First line uses a thickness of 1.0 f , second line uses the configurable thickness
float th = ( n = = 0 ) ? 1.0f : thickness ;
draw_list - > AddCircle ( ImVec2 ( x + sz * 0.5f , y + sz * 0.5f ) , sz * 0.5f , col 32 , 6 , th ) ; x + = sz + spacing ; // Hexagon
draw_list - > AddCircle ( ImVec2 ( x + sz * 0.5f , y + sz * 0.5f ) , sz * 0.5f , col 32 , 20 , th ) ; x + = sz + spacing ; // Circle
draw_list - > AddRect ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col 32, 0.0f , ImDrawCornerFlags_All , th ) ; x + = sz + spacing ;
draw_list - > AddRect ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col 32, 10.0f , ImDrawCornerFlags_All , th ) ; x + = sz + spacing ;
draw_list - > AddRect ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col 32, 10.0f , ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_BotRight , th ) ; 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 ) , col 32 , th ) ; x + = sz + spacing ;
draw_list - > AddTriangle ( ImVec2 ( x + sz * 0.5f , y ) , ImVec2 ( x + sz * 0.6f , y + sz - 0.5f ) , ImVec2 ( x + sz * 0.4f , y + sz - 0.5f ) , col 32 , th ) ; x + = sz + spacing ;
draw_list - > AddLine ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y ) , col 32 , th ) ; x + = sz + spacing ; // Horizontal line (note: drawing a filled rectangle will be faster!)
draw_list - > AddLine ( ImVec2 ( x , y ) , ImVec2 ( x , y + sz ) , col 32 , th ) ; x + = spacing ; // Vertical line (note: drawing a filled rectangle will be faster!)
draw_list - > AddLine ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col 32 , th ) ; 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 ) , col 32 , th ) ;
draw_list - > AddCircle ( ImVec2 ( x + sz * 0.5f , y + sz * 0.5f ) , sz * 0.5f , col , 6 , th ) ; x + = sz + spacing ; // Hexagon
draw_list - > AddCircle ( ImVec2 ( x + sz * 0.5f , y + sz * 0.5f ) , sz * 0.5f , col , 20 , th ) ; x + = sz + spacing ; // Circle
draw_list - > AddRect ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col , 0.0f , corners_none , th ) ; x + = sz + spacing ; // Square
draw_list - > AddRect ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col , 10.0f , corners_all , th ) ; x + = sz + spacing ; // Square with all rounded corners
draw_list - > AddRect ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col , 10.0f , corners_tl_br , th ) ; x + = sz + spacing ; // Square with two rounded corners
draw_list - > AddTriangle ( ImVec2 ( x + sz * 0.5f , y ) , ImVec2 ( x + sz , y + sz - 0.5f ) , ImVec2 ( x , y + sz - 0.5f ) , col , th ) ; x + = sz + spacing ; // Triangle
draw_list - > AddTriangle ( ImVec2 ( x + sz * 0.2f , y ) , ImVec2 ( x , y + sz - 0.5f ) , ImVec2 ( x + sz * 0.4f , y + sz - 0.5f ) , col , th ) ; x + = sz * 0.4f + spacing ; // Thin triangle
draw_list - > AddLine ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y ) , col , th ) ; x + = sz + spacing ; // Horizontal line (note: drawing a filled rectangle will be faster!)
draw_list - > AddLine ( ImVec2 ( x , y ) , ImVec2 ( x , y + sz ) , col , th ) ; x + = spacing ; // Vertical line (note: drawing a filled rectangle will be faster!)
draw_list - > AddLine ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col , th ) ; 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 ) , col , th ) ;
x = p . x + 4 ;
y + = sz + spacing ;
}
draw_list - > AddCircleFilled ( ImVec2 ( x + sz * 0.5f , y + sz * 0.5f ) , sz * 0.5f , col 32 , 6 ) ; x + = sz + spacing ; // Hexagon
draw_list - > AddCircleFilled ( ImVec2 ( x + sz * 0.5f , y + sz * 0.5f ) , sz * 0.5f , col 32 , 32 ) ; x + = sz + spacing ; // Circle
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col 32 ) ; x + = sz + spacing ;
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col 32 , 10.0f ) ; x + = sz + spacing ;
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col 32, 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 ) , col 32 ) ; x + = sz + spacing ;
draw_list - > AddTriangleFilled ( ImVec2 ( x + sz * 0.5f , y ) , ImVec2 ( x + sz * 0.6f , y + sz - 0.5f ) , ImVec2 ( x + sz * 0.4f , y + sz - 0.5f ) , col 32 ) ; x + = sz + spacing ;
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + thickness ) , col 32 ) ; x + = sz + spacing ; // Horizontal line (faster than AddLine, but only handle integer thickness)
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + thickness , y + sz ) , col 32) ; x + = spacing + spacing ; // Vertical line (faster than AddLine, but only handle integer thickness)
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + 1 , y + 1 ) , col 32 ) ; x + = sz ; // Pixel (faster than AddLine)
draw_list - > AddCircleFilled ( ImVec2 ( x + sz * 0.5f , y + sz * 0.5f ) , sz * 0.5f , col , 6 ) ; x + = sz + spacing ; // Hexagon
draw_list - > AddCircleFilled ( ImVec2 ( x + sz * 0.5f , y + sz * 0.5f ) , sz * 0.5f , col , 32 ) ; x + = sz + spacing ; // Circle
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col ) ; x + = sz + spacing ; // Square
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col , 10.0f ) ; x + = sz + spacing ; // Square with all rounded corners
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + sz ) , col , 10.0f , corners_tl_br ) ; x + = sz + spacing ; // Square with two rounded corners
draw_list - > AddTriangleFilled ( ImVec2 ( x + sz * 0.5f , y ) , ImVec2 ( x + sz , y + sz - 0.5f ) , ImVec2 ( x , y + sz - 0.5f ) , col ) ; x + = sz + spacing ; // Triangle
draw_list - > AddTriangleFilled ( ImVec2 ( x + sz * 0.2f , y ) , ImVec2 ( x , y + sz - 0.5f ) , ImVec2 ( x + sz * 0.4f , y + sz - 0.5f ) , col ) ; x + = sz * 0.4f + spacing ; // Thin triangle
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + sz , y + thickness ) , col ) ; x + = sz + spacing ; // Horizontal line (faster than AddLine, but only handle integer thickness)
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + thickness , y + sz ) , col ) ; x + = spacing * 2.0f ; // Vertical line (faster than AddLine, but only handle integer thickness)
draw_list - > AddRectFilled ( ImVec2 ( x , y ) , ImVec2 ( x + 1 , y + 1 ) , col ) ; 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 ) ) ;
ImGui : : Dummy ( ImVec2 ( ( sz + spacing ) * 9. 5 f, ( sz + spacing ) * 3 ) ) ;
ImGui : : Dummy ( ImVec2 ( ( sz + spacing ) * 9. 8 f, ( sz + spacing ) * 3 ) ) ;
ImGui : : EndTabItem ( ) ;
}