Beispiel #1
0
        public void ImageShouldBeOverlayedByPath()
        {
            string path = this.CreateOutputDirectory("Drawing", "Path");

            using (Image <Rgba32> image = new Image <Rgba32>(500, 500))
            {
                LinearLineSegment linerSegemnt = new LinearLineSegment(
                    new Vector2(10, 10),
                    new Vector2(200, 150),
                    new Vector2(50, 300));
                BezierLineSegment bazierSegment = new BezierLineSegment(new Vector2(50, 300),
                                                                        new Vector2(500, 500),
                                                                        new Vector2(60, 10),
                                                                        new Vector2(10, 400));

                ShapePath p = new ShapePath(linerSegemnt, bazierSegment);

                using (FileStream output = File.OpenWrite($"{path}/Simple.png"))
                {
                    image
                    .BackgroundColor(Rgba32.Blue)
                    .Draw(Rgba32.HotPink, 5, p)
                    .Save(output);
                }

                using (PixelAccessor <Rgba32> sourcePixels = image.Lock())
                {
                    Assert.Equal(Rgba32.HotPink, sourcePixels[9, 9]);

                    Assert.Equal(Rgba32.HotPink, sourcePixels[199, 149]);

                    Assert.Equal(Rgba32.Blue, sourcePixels[50, 50]);
                }
            }
        }
Beispiel #2
0
        public void ImageShouldBeOverlayedByPath()
        {
            string path = CreateOutputDirectory("Drawing", "Path");
            var image = new Image(500, 500);

            var linerSegemnt = new LinearLineSegment(
                            new Vector2(10, 10),
                            new Vector2(200, 150),
                            new Vector2(50, 300));
            var bazierSegment = new BezierLineSegment(new Vector2(50, 300),
                            new Vector2(500, 500),
                            new Vector2(60, 10),
                            new Vector2(10, 400));

            var p = new CorePath(linerSegemnt, bazierSegment);

            using (FileStream output = File.OpenWrite($"{path}/Simple.png"))
            {
                image
                    .BackgroundColor(Color.Blue)
                    .DrawPath(Color.HotPink, 5, p)
                    .Save(output);
            }

            using (var sourcePixels = image.Lock())
            {
                Assert.Equal(Color.HotPink, sourcePixels[9, 9]);

                Assert.Equal(Color.HotPink, sourcePixels[199, 149]);

                Assert.Equal(Color.Blue, sourcePixels[50, 50]);
            }

        }
Beispiel #3
0
        public void SingleSegmentConstructor()
        {
            var segment = new BezierLineSegment(new Vector2(0, 0), new Vector2(10, 0), new Vector2(10, 0), new Vector2(20, 0));
            var points  = segment.Flatten();

            Assert.Equal(51, points.Length);
            Assert.Contains(new Vector2(0, 0), points);
            Assert.Contains(new Vector2(10, 0), points);
            Assert.Contains(new Vector2(20, 0), points);
        }
        public void CorrectlySetsPenPointsAndOptions()
        {
            img.DrawBeziers(pen, points, noneDefault);

            Assert.NotEmpty(img.ProcessorApplications);
            DrawPathProcessor <Color> processor = Assert.IsType <DrawPathProcessor <Color> >(img.ProcessorApplications[0].processor);

            Assert.Equal(noneDefault, processor.Options);

            ShapePath path = Assert.IsType <ShapePath>(processor.Path);

            SixLabors.Shapes.Path vector  = Assert.IsType <SixLabors.Shapes.Path>(path.Path);
            BezierLineSegment     segment = Assert.IsType <BezierLineSegment>(vector.LineSegments[0]);

            Assert.Equal(pen, processor.Pen);
        }
Beispiel #5
0
        public void ImageShouldBeOverlayedPathWithOpacity()
        {
            string path = this.CreateOutputDirectory("Drawing", "Path");

            Rgba32 color = new Rgba32(Rgba32.HotPink.R, Rgba32.HotPink.G, Rgba32.HotPink.B, 150);


            LinearLineSegment linerSegemnt = new LinearLineSegment(
                new Vector2(10, 10),
                new Vector2(200, 150),
                new Vector2(50, 300)
                );

            BezierLineSegment bazierSegment = new BezierLineSegment(new Vector2(50, 300),
                                                                    new Vector2(500, 500),
                                                                    new Vector2(60, 10),
                                                                    new Vector2(10, 400));

            ShapePath p = new ShapePath(linerSegemnt, bazierSegment);

            using (Image <Rgba32> image = new Image <Rgba32>(500, 500))
            {
                using (FileStream output = File.OpenWrite($"{path}/Opacity.png"))
                {
                    image
                    .BackgroundColor(Rgba32.Blue)
                    .Draw(color, 10, p)
                    .Save(output);
                }

                //shift background color towards forground color by the opacity amount
                Rgba32 mergedColor = new Rgba32(Vector4.Lerp(Rgba32.Blue.ToVector4(), Rgba32.HotPink.ToVector4(), 150f / 255f));

                using (PixelAccessor <Rgba32> sourcePixels = image.Lock())
                {
                    Assert.Equal(mergedColor, sourcePixels[9, 9]);

                    Assert.Equal(mergedColor, sourcePixels[199, 149]);

                    Assert.Equal(Rgba32.Blue, sourcePixels[50, 50]);
                }
            }
        }
        public void CorrectlySetsBrushThicknessPointsAndOptions()
        {
            img.DrawBeziers(brush, thickness, points, noneDefault);

            Assert.NotEmpty(img.ProcessorApplications);
            DrawPathProcessor <Rgba32> processor = Assert.IsType <DrawPathProcessor <Rgba32> >(img.ProcessorApplications[0].processor);

            Assert.Equal(noneDefault, processor.Options);

            ShapePath path = Assert.IsType <ShapePath>(processor.Path);

            SixLabors.Shapes.Path vector  = Assert.IsType <SixLabors.Shapes.Path>(path.Path);
            BezierLineSegment     segment = Assert.IsType <BezierLineSegment>(vector.LineSegments[0]);

            Pen <Rgba32> pen = Assert.IsType <Pen <Rgba32> >(processor.Pen);

            Assert.Equal(brush, pen.Brush);
            Assert.Equal(thickness, pen.Width);
        }
Beispiel #7
0
        public void ImageShouldBeOverlayedPathWithOpacity()
        {
            string path = CreateOutputDirectory("Drawing", "Path");

            var color = new Color(Color.HotPink.R, Color.HotPink.G, Color.HotPink.B, 150);


            var linerSegemnt = new LinearLineSegment(
                            new Vector2(10, 10),
                            new Vector2(200, 150),
                            new Vector2(50, 300)
                    );
            var bazierSegment = new BezierLineSegment(new Vector2(50, 300),
                new Vector2(500, 500),
                new Vector2(60, 10),
                new Vector2(10, 400));

            var p = new CorePath(linerSegemnt, bazierSegment);

            var image = new Image(500, 500);


            using (FileStream output = File.OpenWrite($"{path}/Opacity.png"))
            {
                image
                    .BackgroundColor(Color.Blue)
                    .DrawPath(color, 10, p)
                    .Save(output);
            }

            //shift background color towards forground color by the opacity amount
            var mergedColor = new Color(Vector4.Lerp(Color.Blue.ToVector4(), Color.HotPink.ToVector4(), 150f / 255f));

            using (var sourcePixels = image.Lock())
            {
                Assert.Equal(mergedColor, sourcePixels[9, 9]);

                Assert.Equal(mergedColor, sourcePixels[199, 149]);

                Assert.Equal(Color.Blue, sourcePixels[50, 50]);
            }
        }
        public void CorrectlySetsColorThicknessAndPoints()
        {
            img.DrawBeziers(color, thickness, points);

            Assert.NotEmpty(img.ProcessorApplications);
            DrawPathProcessor <Color> processor = Assert.IsType <DrawPathProcessor <Color> >(img.ProcessorApplications[0].processor);

            Assert.Equal(GraphicsOptions.Default, processor.Options);

            ShapePath path = Assert.IsType <ShapePath>(processor.Path);

            SixLabors.Shapes.Path vector  = Assert.IsType <SixLabors.Shapes.Path>(path.Path);
            BezierLineSegment     segment = Assert.IsType <BezierLineSegment>(vector.LineSegments[0]);

            Pen <Color> pen = Assert.IsType <Pen <Color> >(processor.Pen);

            Assert.Equal(thickness, pen.Width);

            SolidBrush <Color> brush = Assert.IsType <SolidBrush <Color> >(pen.Brush);

            Assert.Equal(color, brush.Color);
        }