Пример #1
0
        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);
            }
        }