public void DrawPath <TPixel>(TestImageProvider <TPixel> provider, string colorName, byte alpha, float thickness) where TPixel : unmanaged, IPixel <TPixel> { var linearSegment = new LinearLineSegment( new Vector2(10, 10), new Vector2(200, 150), new Vector2(50, 300)); var bezierSegment = new CubicBezierLineSegment( new Vector2(50, 300), new Vector2(500, 500), new Vector2(60, 10), new Vector2(10, 400)); var ellipticArcSegment1 = new EllipticalArcLineSegment(80, 425, (float)Math.Sqrt(5525), 40, (float)(Math.Atan2(25, 70) * 180 / Math.PI), -90, -180, Matrix3x2.Identity); var ellipticArcSegment2 = new EllipticalArcLineSegment(150, 520, 140, 70, 0, 180, 360, Matrix3x2.Identity); var path = new Path(linearSegment, bezierSegment, ellipticArcSegment1, ellipticArcSegment2); Rgba32 rgba = TestUtils.GetColorByName(colorName); rgba.A = alpha; Color color = rgba; FormattableString testDetails = $"{colorName}_A{alpha}_T{thickness}"; provider.RunValidatingProcessorTest( x => x.Draw(color, thickness, path), testDetails, appendPixelTypeToFileName: false, appendSourceFileOrDescription: false); }
public void ContainsStartAndEnd() { var segment = new EllipticalArcLineSegment(10, 10, 10, 20, 0, 0, 90, Matrix3x2.Identity); IReadOnlyList <PointF> points = segment.Flatten().ToArray(); Assert.Equal(10, points[0].X, 5); Assert.Equal(30, points[0].Y, 5); Assert.Equal(20, segment.EndPoint.X, 5); Assert.Equal(10, segment.EndPoint.Y, 5); }
public void CheckZeroRadii() { IReadOnlyCollection <PointF> xRadiusZero = new EllipticalArcLineSegment(20, 10, 0, 20, 0, 0, 360, Matrix3x2.Identity).Flatten().ToArray(); IReadOnlyCollection <PointF> yRadiusZero = new EllipticalArcLineSegment(20, 10, 30, 0, 0, 0, 360, Matrix3x2.Identity).Flatten().ToArray(); IReadOnlyCollection <PointF> bothRadiiZero = new EllipticalArcLineSegment(20, 10, 0, 0, 0, 0, 360, Matrix3x2.Identity).Flatten().ToArray(); foreach (PointF point in xRadiusZero) { Assert.Equal(20, point.X); } foreach (PointF point in yRadiusZero) { Assert.Equal(10, point.Y); } foreach (PointF point in bothRadiiZero) { Assert.Equal(20, point.X); Assert.Equal(10, point.Y); } }