@ -8030,6 +8030,9 @@ static void ShowExampleAppCustomRendering(bool* p_open)
const float rounding = sz / 5.0f ;
const int circle_segments = circle_segments_override ? circle_segments_override_v : 0 ;
const int curve_segments = curve_segments_override ? curve_segments_override_v : 0 ;
const ImVec2 cp3 [ 3 ] = { ImVec2 ( 0.0f , sz * 0.6f ) , ImVec2 ( sz * 0.5f , - sz * 0.4f ) , ImVec2 ( sz , sz ) } ; // Control points for curves
const ImVec2 cp4 [ 4 ] = { ImVec2 ( 0.0f , 0.0f ) , ImVec2 ( sz * 1.3f , sz * 0.3f ) , ImVec2 ( sz - sz * 1.3f , sz - sz * 0.3f ) , ImVec2 ( sz , sz ) } ;
float x = p . x + 4.0f ;
float y = p . y + 4.0f ;
for ( int n = 0 ; n < 2 ; n + + )
@ -8048,17 +8051,23 @@ static void ShowExampleAppCustomRendering(bool* p_open)
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
// Path
draw_list - > PathArcTo ( ImVec2 ( x + sz * 0.5f , y + sz * 0.5f ) , sz * 0.5f , 3.141592f , 3.141592f * - 0.5f ) ;
draw_list - > PathStroke ( col , ImDrawFlags_None , th ) ;
x + = sz + spacing ;
// Quadratic Bezier Curve (3 control points)
ImVec2 cp3 [ 3 ] = { ImVec2 ( x , y + sz * 0.6f ) , ImVec2 ( x + sz * 0.5f , y - sz * 0.4f ) , ImVec2 ( x + sz , y + sz ) } ;
draw_list - > AddBezierQuadratic ( cp3 [ 0 ] , cp3 [ 1 ] , cp3 [ 2 ] , col , th , curve_segments ) ; x + = sz + spacing ;
draw_list - > AddBezierQuadratic ( ImVec2 ( x + cp3 [ 0 ] . x , y + cp3 [ 0 ] . y ) , ImVec2 ( x + cp3 [ 1 ] . x , y + cp3 [ 1 ] . y ) , ImVec2 ( x + cp3 [ 2 ] . x , y + cp3 [ 2 ] . y ) , col , th , curve_segments ) ;
x + = sz + spacing ;
// Cubic Bezier Curve (4 control points)
ImVec2 cp4 [ 4 ] = { 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 ) } ;
draw_list - > AddBezierCubic ( cp4 [ 0 ] , cp4 [ 1 ] , cp4 [ 2 ] , cp4 [ 3 ] , col , th , curve_segments ) ;
draw_list - > AddBezierCubic ( ImVec2 ( x + cp4 [ 0 ] . x , y + cp4 [ 0 ] . y ) , ImVec2 ( x + cp4 [ 1 ] . x , y + cp4 [ 1 ] . y ) , ImVec2 ( x + cp4 [ 2 ] . x , y + cp4 [ 2 ] . y ) , ImVec2 ( x + cp4 [ 3 ] . x , y + cp4 [ 3 ] . y ) , col , th , curve_segments ) ;
x = p . x + 4 ;
y + = sz + spacing ;
}
// Filled shapes
draw_list - > AddNgonFilled ( ImVec2 ( x + sz * 0.5f , y + sz * 0.5f ) , sz * 0.5f , col , ngon_sides ) ; x + = sz + spacing ; // N-gon
draw_list - > AddCircleFilled ( ImVec2 ( x + sz * 0.5f , y + sz * 0.5f ) , sz * 0.5f , col , circle_segments ) ; x + = sz + spacing ; // Circle
draw_list - > AddEllipseFilled ( ImVec2 ( x + sz * 0.5f , y + sz * 0.5f ) , sz * 0.5f , sz * 0.3f , col , - 0.3f , circle_segments ) ; x + = sz + spacing ; // Ellipse
@ -8070,9 +8079,27 @@ static void ShowExampleAppCustomRendering(bool* p_open)
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)
// Path
draw_list - > PathArcTo ( ImVec2 ( x + sz * 0.5f , y + sz * 0.5f ) , sz * 0.5f , 3.141592f * - 0.5f , 3.141592f ) ;
draw_list - > PathFillConvex ( col ) ;
x + = sz + spacing ;
// Quadratic Bezier Curve (3 control points)
draw_list - > PathLineTo ( ImVec2 ( x + cp3 [ 0 ] . x , y + cp3 [ 0 ] . y ) ) ;
draw_list - > PathBezierQuadraticCurveTo ( ImVec2 ( x + cp3 [ 1 ] . x , y + cp3 [ 1 ] . y ) , ImVec2 ( x + cp3 [ 2 ] . x , y + cp3 [ 2 ] . y ) , curve_segments ) ;
draw_list - > PathFillConvex ( col ) ;
x + = sz + spacing ;
// Cubic Bezier Curve (4 control points): this is concave so not drawing it yet
//draw_list->PathLineTo(ImVec2(x + cp4[0].x, y + cp4[0].y));
//draw_list->PathBezierCubicCurveTo(ImVec2(x + cp4[1].x, y + cp4[1].y), ImVec2(x + cp4[2].x, y + cp4[2].y), ImVec2(x + cp4[3].x, y + cp4[3].y), curve_segments);
//draw_list->PathFillConvex(col);
//x += sz + spacing;
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 ) * 11.2f , ( sz + spacing ) * 3.0f ) ) ;
ImGui : : Dummy ( ImVec2 ( ( sz + spacing ) * 12 .2f , ( sz + spacing ) * 3.0f ) ) ;
ImGui : : PopItemWidth ( ) ;
ImGui : : EndTabItem ( ) ;
}