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]); } } }
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]); } }
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); }
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); }
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); }