@@ -939,4 +939,36 @@ - (void) testPathRectangle {
939939 vgerDelete (vger);
940940}
941941
942+ - (void ) testHighCurvatureBezierStroke {
943+
944+ auto vger = vgerNew (0 , MTLPixelFormatBGRA8Unorm );
945+
946+ vgerBegin (vger, 512 , 512 , 1.0 );
947+
948+ auto red = vgerColorPaint (vger, float4{1 ,0 ,0 ,1 });
949+ auto green = vgerColorPaint (vger, float4{0 ,1 ,0 ,1 });
950+ auto blue = vgerColorPaint (vger, float4{0 ,0 ,1 ,1 });
951+ auto cyan = vgerColorPaint (vger, float4{0 ,1 ,1 ,1 });
952+ auto magenta = vgerColorPaint (vger, float4{1 ,0 ,1 ,1 });
953+ auto yellow = vgerColorPaint (vger, float4{1 ,1 ,0 ,1 });
954+ auto white = vgerColorPaint (vger, float4{1 ,1 ,1 ,1 });
955+
956+ vgerStrokeBezier (vger, {{100 , 200 }, {120 , 100 }, {140 , 200 }}, 10 , red);
957+
958+ vgerStrokeBezier (vger, {{200 , 200 }, {201 , 150 }, {202 , 200 }}, 8 , green);
959+
960+ vgerStrokeBezier (vger, {{300 , 200 }, {305 , 120 }, {310 , 200 }}, 12 , blue);
961+
962+ vgerStrokeBezier (vger, {{100 , 350 }, {150 , 250 }, {200 , 350 }}, 6 , cyan);
963+
964+ vgerStrokeBezier (vger, {{300 , 350 }, {350 , 280 }, {320 , 380 }}, 8 , magenta);
965+
966+ vgerFillCircle (vger, float2{450 , 200 }, 5 , yellow); // Small filled circles for reference
967+ vgerFillCircle (vger, float2{450 , 350 }, 4 , white);
968+
969+ [self render: vger name: @" high_curvature_bezier_strokes.png" ];
970+
971+ vgerDelete (vger);
972+ }
973+
942974@end
0 commit comments