Browse Source

Overlays => Drawing

af/merge-core
James Jackson-South 8 years ago
parent
commit
6ec2a26982
  1. 3
      src/ImageSharp.Drawing/Primitives/ShapePath.cs
  2. 2
      src/ImageSharp.Drawing/Processing/Drawing/Brushes/BrushApplicator.cs
  3. 2
      src/ImageSharp.Drawing/Processing/Drawing/Brushes/Brushes.cs
  4. 3
      src/ImageSharp.Drawing/Processing/Drawing/Brushes/IBrush.cs
  5. 3
      src/ImageSharp.Drawing/Processing/Drawing/Brushes/ImageBrush{TPixel}.cs
  6. 3
      src/ImageSharp.Drawing/Processing/Drawing/Brushes/PatternBrush{TPixel}.cs
  7. 3
      src/ImageSharp.Drawing/Processing/Drawing/Brushes/RecolorBrush{TPixel}.cs
  8. 3
      src/ImageSharp.Drawing/Processing/Drawing/Brushes/SolidBrush{TPixel}.cs
  9. 6
      src/ImageSharp.Drawing/Processing/Drawing/DrawBezierExtensions.cs
  10. 4
      src/ImageSharp.Drawing/Processing/Drawing/DrawImageExtensions.cs
  11. 6
      src/ImageSharp.Drawing/Processing/Drawing/DrawLineExtensions.cs
  12. 6
      src/ImageSharp.Drawing/Processing/Drawing/DrawPathCollectionExtensions.cs
  13. 6
      src/ImageSharp.Drawing/Processing/Drawing/DrawPathExtensions.cs
  14. 6
      src/ImageSharp.Drawing/Processing/Drawing/DrawPolygonExtensions.cs
  15. 6
      src/ImageSharp.Drawing/Processing/Drawing/DrawRectangleExtensions.cs
  16. 5
      src/ImageSharp.Drawing/Processing/Drawing/FillPathBuilderExtensions.cs
  17. 4
      src/ImageSharp.Drawing/Processing/Drawing/FillPathCollectionExtensions.cs
  18. 4
      src/ImageSharp.Drawing/Processing/Drawing/FillPathExtensions.cs
  19. 4
      src/ImageSharp.Drawing/Processing/Drawing/FillPolygonExtensions.cs
  20. 4
      src/ImageSharp.Drawing/Processing/Drawing/FillRectangleExtensions.cs
  21. 6
      src/ImageSharp.Drawing/Processing/Drawing/FillRegionExtensions.cs
  22. 4
      src/ImageSharp.Drawing/Processing/Drawing/Pens/IPen.cs
  23. 4
      src/ImageSharp.Drawing/Processing/Drawing/Pens/Pens.cs
  24. 4
      src/ImageSharp.Drawing/Processing/Drawing/Pens/Pen{TPixel}.cs
  25. 2
      src/ImageSharp.Drawing/Processing/Drawing/Processors/DrawImageProcessor.cs
  26. 5
      src/ImageSharp.Drawing/Processing/Drawing/Processors/FillProcessor.cs
  27. 5
      src/ImageSharp.Drawing/Processing/Drawing/Processors/FillRegionProcessor.cs
  28. 6
      src/ImageSharp.Drawing/Processing/Text/DrawTextExtensions.Path.cs
  29. 6
      src/ImageSharp.Drawing/Processing/Text/DrawTextExtensions.cs
  30. 2
      tests/ImageSharp.Benchmarks/Drawing/DrawBeziers.cs
  31. 14
      tests/ImageSharp.Benchmarks/Drawing/DrawLines.cs
  32. 1
      tests/ImageSharp.Benchmarks/Drawing/DrawPolygon.cs
  33. 1
      tests/ImageSharp.Benchmarks/Drawing/FillPolygon.cs
  34. 1
      tests/ImageSharp.Benchmarks/Drawing/FillRectangle.cs
  35. 24
      tests/ImageSharp.Benchmarks/Drawing/FillWithPattern.cs
  36. 1
      tests/ImageSharp.Tests/Drawing/BeziersTests.cs
  37. 2
      tests/ImageSharp.Tests/Drawing/BlendedShapes.cs
  38. 2
      tests/ImageSharp.Tests/Drawing/DrawImageTest.cs
  39. 25
      tests/ImageSharp.Tests/Drawing/DrawPathTests.cs
  40. 17
      tests/ImageSharp.Tests/Drawing/FillPatternTests.cs
  41. 9
      tests/ImageSharp.Tests/Drawing/FillRegionProcessorTests.cs
  42. 22
      tests/ImageSharp.Tests/Drawing/FillSolidBrushTests.cs
  43. 38
      tests/ImageSharp.Tests/Drawing/LineComplexPolygonTests.cs
  44. 4
      tests/ImageSharp.Tests/Drawing/LineTests.cs
  45. 8
      tests/ImageSharp.Tests/Drawing/Paths/FillPath.cs
  46. 21
      tests/ImageSharp.Tests/Drawing/Paths/FillPathCollection.cs
  47. 7
      tests/ImageSharp.Tests/Drawing/Paths/FillPolygon.cs
  48. 66
      tests/ImageSharp.Tests/Drawing/Paths/FillRectangle.cs
  49. 17
      tests/ImageSharp.Tests/Drawing/Paths/ShapePathTests.cs
  50. 16
      tests/ImageSharp.Tests/Drawing/Paths/ShapeRegionTests.cs
  51. 1
      tests/ImageSharp.Tests/Drawing/PolygonTests.cs
  52. 8
      tests/ImageSharp.Tests/Drawing/RecolorImageTest.cs
  53. 1
      tests/ImageSharp.Tests/Drawing/SolidBezierTests.cs
  54. 1
      tests/ImageSharp.Tests/Drawing/SolidComplexPolygonTests.cs
  55. 43
      tests/ImageSharp.Tests/Drawing/SolidPolygonTests.cs
  56. 41
      tests/ImageSharp.Tests/Drawing/Text/DrawText.Path.cs
  57. 9
      tests/ImageSharp.Tests/Drawing/Text/DrawText.cs
  58. 17
      tests/ImageSharp.Tests/Drawing/Text/OutputText.cs
  59. 13
      tests/ImageSharp.Tests/Drawing/Text/TextGraphicsOptionsTests.cs
  60. 2
      tests/ImageSharp.Tests/Issues/Issue412.cs
  61. 1
      tests/ImageSharp.Tests/TestUtilities/ImageProviders/SolidProvider.cs

3
src/ImageSharp.Drawing/Primitives/ShapePath.cs

@ -1,6 +1,7 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Processing.Drawing.Pens;
using SixLabors.Shapes;
namespace SixLabors.ImageSharp.Primitives
@ -16,7 +17,7 @@ namespace SixLabors.ImageSharp.Primitives
/// <param name="shape">The shape.</param>
/// <param name="pen">The pen to apply to the shape.</param>
// TODO: SixLabors.shape will be moving to a Span/ReadOnlySpan based API shortly use ToArray for now.
public ShapePath(IPath shape, Drawing.Pens.IPen pen)
public ShapePath(IPath shape, IPen pen)
: base(shape.GenerateOutline(pen.StrokeWidth, pen.StrokePattern.ToArray()))
{
}

2
src/ImageSharp.Drawing/Drawing/Brushes/Processors/BrushApplicator.cs → src/ImageSharp.Drawing/Processing/Drawing/Brushes/BrushApplicator.cs

@ -6,7 +6,7 @@ using SixLabors.ImageSharp.Advanced;
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats;
namespace SixLabors.ImageSharp.Drawing.Brushes.Processors
namespace SixLabors.ImageSharp.Processing.Drawing.Brushes
{
/// <summary>
/// primitive that converts a point in to a color for discovering the fill color based on an implementation

2
src/ImageSharp.Drawing/Drawing/Brushes/Brushes.cs → src/ImageSharp.Drawing/Processing/Drawing/Brushes/Brushes.cs

@ -3,7 +3,7 @@
using SixLabors.ImageSharp.PixelFormats;
namespace SixLabors.ImageSharp.Drawing.Brushes
namespace SixLabors.ImageSharp.Processing.Drawing.Brushes
{
/// <summary>
/// A collection of methods for creating generic brushes.

3
src/ImageSharp.Drawing/Drawing/Brushes/IBrush.cs → src/ImageSharp.Drawing/Processing/Drawing/Brushes/IBrush.cs

@ -1,11 +1,10 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Drawing.Brushes.Processors;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.Primitives;
namespace SixLabors.ImageSharp.Drawing.Brushes
namespace SixLabors.ImageSharp.Processing.Drawing.Brushes
{
/// <summary>
/// Brush represents a logical configuration of a brush which can be used to source pixel colors

3
src/ImageSharp.Drawing/Drawing/Brushes/ImageBrush{TPixel}.cs → src/ImageSharp.Drawing/Processing/Drawing/Brushes/ImageBrush{TPixel}.cs

@ -3,12 +3,11 @@
using System;
using SixLabors.ImageSharp.Advanced;
using SixLabors.ImageSharp.Drawing.Brushes.Processors;
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.Primitives;
namespace SixLabors.ImageSharp.Drawing.Brushes
namespace SixLabors.ImageSharp.Processing.Drawing.Brushes
{
/// <summary>
/// Provides an implementation of an image brush for painting images within areas.

3
src/ImageSharp.Drawing/Drawing/Brushes/PatternBrush{TPixel}.cs → src/ImageSharp.Drawing/Processing/Drawing/Brushes/PatternBrush{TPixel}.cs

@ -4,13 +4,12 @@
using System;
using System.Numerics;
using SixLabors.ImageSharp.Advanced;
using SixLabors.ImageSharp.Drawing.Brushes.Processors;
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Primitives;
using SixLabors.Primitives;
namespace SixLabors.ImageSharp.Drawing.Brushes
namespace SixLabors.ImageSharp.Processing.Drawing.Brushes
{
/// <summary>
/// Provides an implementation of a pattern brush for painting patterns.

3
src/ImageSharp.Drawing/Drawing/Brushes/RecolorBrush{TPixel}.cs → src/ImageSharp.Drawing/Processing/Drawing/Brushes/RecolorBrush{TPixel}.cs

@ -4,12 +4,11 @@
using System;
using System.Numerics;
using SixLabors.ImageSharp.Advanced;
using SixLabors.ImageSharp.Drawing.Brushes.Processors;
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.Primitives;
namespace SixLabors.ImageSharp.Drawing.Brushes
namespace SixLabors.ImageSharp.Processing.Drawing.Brushes
{
/// <summary>
/// Provides an implementation of a brush that can recolor an image

3
src/ImageSharp.Drawing/Drawing/Brushes/SolidBrush{TPixel}.cs → src/ImageSharp.Drawing/Processing/Drawing/Brushes/SolidBrush{TPixel}.cs

@ -3,12 +3,11 @@
using System;
using SixLabors.ImageSharp.Advanced;
using SixLabors.ImageSharp.Drawing.Brushes.Processors;
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.Primitives;
namespace SixLabors.ImageSharp.Drawing.Brushes
namespace SixLabors.ImageSharp.Processing.Drawing.Brushes
{
/// <summary>
/// Provides an implementation of a solid brush for painting solid color areas.

6
src/ImageSharp.Drawing/Processing/Overlays/DrawBezierExtensions.cs → src/ImageSharp.Drawing/Processing/Drawing/DrawBezierExtensions.cs

@ -1,13 +1,13 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Pens;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Drawing.Pens;
using SixLabors.Primitives;
using SixLabors.Shapes;
namespace SixLabors.ImageSharp.Processing.Overlays
namespace SixLabors.ImageSharp.Processing.Drawing
{
/// <summary>
/// Adds extensions that allow the drawing of Bezier paths to the <see cref="Image{TPixel}"/> type.

4
src/ImageSharp.Drawing/Processing/Overlays/DrawImageExtensions.cs → src/ImageSharp.Drawing/Processing/Drawing/DrawImageExtensions.cs

@ -2,10 +2,10 @@
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Overlays.Processors;
using SixLabors.ImageSharp.Processing.Drawing.Processors;
using SixLabors.Primitives;
namespace SixLabors.ImageSharp.Processing.Overlays
namespace SixLabors.ImageSharp.Processing.Drawing
{
/// <summary>
/// Adds extensions that allow the drawing of images to the <see cref="Image{TPixel}"/> type.

6
src/ImageSharp.Drawing/Processing/Overlays/DrawLineExtensions.cs → src/ImageSharp.Drawing/Processing/Drawing/DrawLineExtensions.cs

@ -1,13 +1,13 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Pens;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Drawing.Pens;
using SixLabors.Primitives;
using SixLabors.Shapes;
namespace SixLabors.ImageSharp.Processing.Overlays
namespace SixLabors.ImageSharp.Processing.Drawing
{
/// <summary>
/// Adds extensions that allow the drawing of lines to the <see cref="Image{TPixel}"/> type.

6
src/ImageSharp.Drawing/Processing/Overlays/DrawPathCollectionExtensions.cs → src/ImageSharp.Drawing/Processing/Drawing/DrawPathCollectionExtensions.cs

@ -1,12 +1,12 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Pens;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Drawing.Pens;
using SixLabors.Shapes;
namespace SixLabors.ImageSharp.Processing.Overlays
namespace SixLabors.ImageSharp.Processing.Drawing
{
/// <summary>
/// Adds extensions that allow the drawing of collections of polygon outlines to the <see cref="Image{TPixel}"/> type.

6
src/ImageSharp.Drawing/Processing/Overlays/DrawPathExtensions.cs → src/ImageSharp.Drawing/Processing/Drawing/DrawPathExtensions.cs

@ -1,13 +1,13 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Pens;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Primitives;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Drawing.Pens;
using SixLabors.Shapes;
namespace SixLabors.ImageSharp.Processing.Overlays
namespace SixLabors.ImageSharp.Processing.Drawing
{
/// <summary>
/// Adds extensions that allow the drawing of polygon outlines to the <see cref="Image{TPixel}"/> type.

6
src/ImageSharp.Drawing/Processing/Overlays/DrawPolygonExtensions.cs → src/ImageSharp.Drawing/Processing/Drawing/DrawPolygonExtensions.cs

@ -1,13 +1,13 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Pens;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Drawing.Pens;
using SixLabors.Primitives;
using SixLabors.Shapes;
namespace SixLabors.ImageSharp.Processing.Overlays
namespace SixLabors.ImageSharp.Processing.Drawing
{
/// <summary>
/// Adds extensions that allow the drawing of closed linear polygons to the <see cref="Image{TPixel}"/> type.

6
src/ImageSharp.Drawing/Processing/Overlays/DrawRectangleExtensions.cs → src/ImageSharp.Drawing/Processing/Drawing/DrawRectangleExtensions.cs

@ -1,13 +1,13 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Pens;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Drawing.Pens;
using SixLabors.Primitives;
using SixLabors.Shapes;
namespace SixLabors.ImageSharp.Processing.Overlays
namespace SixLabors.ImageSharp.Processing.Drawing
{
/// <summary>
/// Adds extensions that allow the drawing of rectangles to the <see cref="Image{TPixel}"/> type.

5
src/ImageSharp.Drawing/Processing/Overlays/FillPathBuilderExtensions.cs → src/ImageSharp.Drawing/Processing/Drawing/FillPathBuilderExtensions.cs

@ -2,12 +2,11 @@
// Licensed under the Apache License, Version 2.0.
using System;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.Shapes;
namespace SixLabors.ImageSharp.Processing.Overlays
namespace SixLabors.ImageSharp.Processing.Drawing
{
/// <summary>
/// Adds extensions that allow the filling of polygons with various brushes to the <see cref="Image{TPixel}"/> type.

4
src/ImageSharp.Drawing/Processing/Overlays/FillPathCollectionExtensions.cs → src/ImageSharp.Drawing/Processing/Drawing/FillPathCollectionExtensions.cs

@ -1,11 +1,11 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.Shapes;
namespace SixLabors.ImageSharp.Processing.Overlays
namespace SixLabors.ImageSharp.Processing.Drawing
{
/// <summary>
/// Adds extensions that allow the filling of collections of polygon outlines to the <see cref="Image{TPixel}"/> type.

4
src/ImageSharp.Drawing/Processing/Overlays/FillPathExtensions.cs → src/ImageSharp.Drawing/Processing/Drawing/FillPathExtensions.cs

@ -1,12 +1,12 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Primitives;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.Shapes;
namespace SixLabors.ImageSharp.Processing.Overlays
namespace SixLabors.ImageSharp.Processing.Drawing
{
/// <summary>
/// Adds extensions that allow the filling of polygon outlines to the <see cref="Image{TPixel}"/> type.

4
src/ImageSharp.Drawing/Processing/Overlays/FillPolygonExtensions.cs → src/ImageSharp.Drawing/Processing/Drawing/FillPolygonExtensions.cs

@ -1,12 +1,12 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.Primitives;
using SixLabors.Shapes;
namespace SixLabors.ImageSharp.Processing.Overlays
namespace SixLabors.ImageSharp.Processing.Drawing
{
/// <summary>
/// Adds extensions that allow the filling of closed linear polygons to the <see cref="Image{TPixel}"/> type.

4
src/ImageSharp.Drawing/Processing/Overlays/FillRectangleExtensions.cs → src/ImageSharp.Drawing/Processing/Drawing/FillRectangleExtensions.cs

@ -1,12 +1,12 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.Primitives;
using SixLabors.Shapes;
namespace SixLabors.ImageSharp.Processing.Overlays
namespace SixLabors.ImageSharp.Processing.Drawing
{
/// <summary>
/// Adds extensions that allow the filling of rectangles to the <see cref="Image{TPixel}"/> type.

6
src/ImageSharp.Drawing/Processing/Overlays/FillRegionExtensions.cs → src/ImageSharp.Drawing/Processing/Drawing/FillRegionExtensions.cs

@ -1,12 +1,12 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Processors;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Primitives;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Drawing.Processors;
namespace SixLabors.ImageSharp.Processing.Overlays
namespace SixLabors.ImageSharp.Processing.Drawing
{
/// <summary>
/// Adds extensions that allow the filling of regions with various brushes to the <see cref="Image{TPixel}"/> type.

4
src/ImageSharp.Drawing/Drawing/Pens/IPen.cs → src/ImageSharp.Drawing/Processing/Drawing/Pens/IPen.cs

@ -2,10 +2,10 @@
// Licensed under the Apache License, Version 2.0.
using System;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
namespace SixLabors.ImageSharp.Drawing.Pens
namespace SixLabors.ImageSharp.Processing.Drawing.Pens
{
/// <summary>
/// Interface representing a Pen

4
src/ImageSharp.Drawing/Drawing/Pens/Pens.cs → src/ImageSharp.Drawing/Processing/Drawing/Pens/Pens.cs

@ -1,10 +1,10 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
namespace SixLabors.ImageSharp.Drawing.Pens
namespace SixLabors.ImageSharp.Processing.Drawing.Pens
{
/// <summary>
/// Contains a collection of common Pen styles

4
src/ImageSharp.Drawing/Drawing/Pens/Pen{TPixel}.cs → src/ImageSharp.Drawing/Processing/Drawing/Pens/Pen{TPixel}.cs

@ -2,10 +2,10 @@
// Licensed under the Apache License, Version 2.0.
using System;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
namespace SixLabors.ImageSharp.Drawing.Pens
namespace SixLabors.ImageSharp.Processing.Drawing.Pens
{
/// <summary>
/// Provides a pen that can apply a pattern to a line with a set brush and thickness

2
src/ImageSharp.Drawing/Processing/Overlays/Processors/DrawImageProcessor.cs → src/ImageSharp.Drawing/Processing/Drawing/Processors/DrawImageProcessor.cs

@ -9,7 +9,7 @@ using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Processors;
using SixLabors.Primitives;
namespace SixLabors.ImageSharp.Processing.Overlays.Processors
namespace SixLabors.ImageSharp.Processing.Drawing.Processors
{
/// <summary>
/// Combines two images together by blending the pixels.

5
src/ImageSharp.Drawing/Processing/Overlays/Processors/FillProcessor.cs → src/ImageSharp.Drawing/Processing/Drawing/Processors/FillProcessor.cs

@ -3,14 +3,13 @@
using System;
using System.Threading.Tasks;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Brushes.Processors;
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Processors;
using SixLabors.Primitives;
namespace SixLabors.ImageSharp.Drawing.Processors
namespace SixLabors.ImageSharp.Processing.Drawing.Processors
{
/// <summary>
/// Using the brush as a source of pixels colors blends the brush color with source.

5
src/ImageSharp.Drawing/Processing/Overlays/Processors/FillRegionProcessor.cs → src/ImageSharp.Drawing/Processing/Drawing/Processors/FillRegionProcessor.cs

@ -3,15 +3,14 @@
using System;
using System.Runtime.CompilerServices;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Brushes.Processors;
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Primitives;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Processors;
using SixLabors.Primitives;
namespace SixLabors.ImageSharp.Drawing.Processors
namespace SixLabors.ImageSharp.Processing.Drawing.Processors
{
/// <summary>
/// Using a brush and a shape fills shape with contents of brush the

6
src/ImageSharp.Drawing/Processing/Text/DrawTextExtensions.Path.cs

@ -2,10 +2,10 @@
// Licensed under the Apache License, Version 2.0.
using SixLabors.Fonts;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Pens;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Overlays;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Drawing.Pens;
using SixLabors.Shapes;
namespace SixLabors.ImageSharp.Processing.Text

6
src/ImageSharp.Drawing/Processing/Text/DrawTextExtensions.cs

@ -2,10 +2,10 @@
// Licensed under the Apache License, Version 2.0.
using SixLabors.Fonts;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Pens;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Overlays;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Drawing.Pens;
using SixLabors.Primitives;
using SixLabors.Shapes;

2
tests/ImageSharp.Benchmarks/Drawing/DrawBeziers.cs

@ -11,7 +11,7 @@ using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Overlays;
using SixLabors.ImageSharp.Processing.Drawing;
namespace SixLabors.ImageSharp.Benchmarks
{

14
tests/ImageSharp.Benchmarks/Drawing/DrawLines.cs

@ -3,7 +3,7 @@
// Licensed under the Apache License, Version 2.0.
// </copyright>
using SixLabors.ImageSharp.Processing.Overlays;
using SixLabors.ImageSharp.Processing.Drawing;
namespace SixLabors.ImageSharp.Benchmarks
{
@ -22,13 +22,13 @@ namespace SixLabors.ImageSharp.Benchmarks
[Benchmark(Baseline = true, Description = "System.Drawing Draw Lines")]
public void DrawPathSystemDrawing()
{
using (Bitmap destination = new Bitmap(800, 800))
using (var destination = new Bitmap(800, 800))
{
using (Graphics graphics = Graphics.FromImage(destination))
using (var graphics = Graphics.FromImage(destination))
{
graphics.InterpolationMode = InterpolationMode.Default;
graphics.SmoothingMode = SmoothingMode.AntiAlias;
Pen pen = new Pen(System.Drawing.Color.HotPink, 10);
var pen = new Pen(System.Drawing.Color.HotPink, 10);
graphics.DrawLines(pen, new[] {
new PointF(10, 10),
new PointF(550, 50),
@ -36,7 +36,7 @@ namespace SixLabors.ImageSharp.Benchmarks
});
}
using (MemoryStream ms = new MemoryStream())
using (var ms = new MemoryStream())
{
destination.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
}
@ -46,7 +46,7 @@ namespace SixLabors.ImageSharp.Benchmarks
[Benchmark(Description = "ImageSharp Draw Lines")]
public void DrawLinesCore()
{
using (Image<Rgba32> image = new Image<Rgba32>(800, 800))
using (var image = new Image<Rgba32>(800, 800))
{
image.Mutate(x => x.DrawLines(
Rgba32.HotPink,
@ -57,7 +57,7 @@ namespace SixLabors.ImageSharp.Benchmarks
new Vector2(200, 400)
}));
using (MemoryStream ms = new MemoryStream())
using (var ms = new MemoryStream())
{
image.SaveAsBmp(ms);
}

1
tests/ImageSharp.Benchmarks/Drawing/DrawPolygon.cs

@ -11,6 +11,7 @@ using System.Numerics;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Overlays;
namespace SixLabors.ImageSharp.Benchmarks

1
tests/ImageSharp.Benchmarks/Drawing/FillPolygon.cs

@ -12,6 +12,7 @@ using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Overlays;
namespace SixLabors.ImageSharp.Benchmarks

1
tests/ImageSharp.Benchmarks/Drawing/FillRectangle.cs

@ -10,6 +10,7 @@ using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Overlays;
using CoreRectangle = SixLabors.Primitives.Rectangle;
using CoreSize = SixLabors.Primitives.Size;

24
tests/ImageSharp.Benchmarks/Drawing/FillWithPattern.cs

@ -3,20 +3,22 @@
// Licensed under the Apache License, Version 2.0.
// </copyright>
using SixLabors.ImageSharp.Processing.Overlays;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Drawing;
using CoreBrushes = SixLabors.ImageSharp.Processing.Drawing.Brushes.Brushes;
namespace SixLabors.ImageSharp.Benchmarks
{
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.Drawing.Brushes;
using CoreBrushes = ImageSharp.Drawing.Brushes.Brushes;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
public class FillWithPattern
{
@ -29,7 +31,7 @@ namespace SixLabors.ImageSharp.Benchmarks
{
graphics.SmoothingMode = SmoothingMode.AntiAlias;
HatchBrush brush = new HatchBrush(HatchStyle.BackwardDiagonal, System.Drawing.Color.HotPink);
graphics.FillRectangle(brush, new Rectangle(0,0, 800,800)); // can't find a way to flood fill with a brush
graphics.FillRectangle(brush, new Rectangle(0, 0, 800, 800)); // can't find a way to flood fill with a brush
}
using (MemoryStream ms = new MemoryStream())
{

1
tests/ImageSharp.Tests/Drawing/BeziersTests.cs

@ -5,6 +5,7 @@ using System.Numerics;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Overlays;
using Xunit;

2
tests/ImageSharp.Tests/Drawing/BlendedShapes.cs

@ -5,7 +5,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Overlays;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.Primitives;
using Xunit;

2
tests/ImageSharp.Tests/Drawing/DrawImageTest.cs

@ -5,7 +5,7 @@ using System;
using System.Numerics;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Overlays;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.Primitives;
using Xunit;

25
tests/ImageSharp.Tests/Drawing/DrawPathTests.cs

@ -2,9 +2,10 @@
// Licensed under the Apache License, Version 2.0.
using System.Numerics;
using SixLabors.ImageSharp.Drawing.Pens;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Drawing.Pens;
using SixLabors.ImageSharp.Processing.Overlays;
using SixLabors.Shapes;
using Xunit;
@ -17,18 +18,18 @@ namespace SixLabors.ImageSharp.Tests.Drawing
public void ImageShouldBeOverlayedByPath()
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "Path");
using (Image<Rgba32> image = new Image<Rgba32>(500, 500))
using (var image = new Image<Rgba32>(500, 500))
{
LinearLineSegment linerSegemnt = new LinearLineSegment(
var linerSegemnt = new LinearLineSegment(
new Vector2(10, 10),
new Vector2(200, 150),
new Vector2(50, 300));
CubicBezierLineSegment bazierSegment = new CubicBezierLineSegment(new Vector2(50, 300),
var bazierSegment = new CubicBezierLineSegment(new Vector2(50, 300),
new Vector2(500, 500),
new Vector2(60, 10),
new Vector2(10, 400));
Path p = new Path(linerSegemnt, bazierSegment);
var p = new Path(linerSegemnt, bazierSegment);
image.Mutate(x => x
.BackgroundColor(Rgba32.Blue)
@ -52,23 +53,23 @@ namespace SixLabors.ImageSharp.Tests.Drawing
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "Path");
Rgba32 color = new Rgba32(Rgba32.HotPink.R, Rgba32.HotPink.G, Rgba32.HotPink.B, 150);
var color = new Rgba32(Rgba32.HotPink.R, Rgba32.HotPink.G, Rgba32.HotPink.B, 150);
LinearLineSegment linerSegemnt = new LinearLineSegment(
var linerSegemnt = new LinearLineSegment(
new Vector2(10, 10),
new Vector2(200, 150),
new Vector2(50, 300)
);
CubicBezierLineSegment bazierSegment = new CubicBezierLineSegment(new Vector2(50, 300),
var bazierSegment = new CubicBezierLineSegment(new Vector2(50, 300),
new Vector2(500, 500),
new Vector2(60, 10),
new Vector2(10, 400));
Path p = new Path(linerSegemnt, bazierSegment);
var p = new Path(linerSegemnt, bazierSegment);
using (Image<Rgba32> image = new Image<Rgba32>(500, 500))
using (var image = new Image<Rgba32>(500, 500))
{
image.Mutate(x => x
.BackgroundColor(Rgba32.Blue)
@ -76,7 +77,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing
image.Save($"{path}/Opacity.png");
//shift background color towards forground color by the opacity amount
Rgba32 mergedColor = new Rgba32(Vector4.Lerp(Rgba32.Blue.ToVector4(), Rgba32.HotPink.ToVector4(), 150f / 255f));
var mergedColor = new Rgba32(Vector4.Lerp(Rgba32.Blue.ToVector4(), Rgba32.HotPink.ToVector4(), 150f / 255f));
using (PixelAccessor<Rgba32> sourcePixels = image.Lock())
{
@ -98,7 +99,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing
using (var image = new Image<Rgba32>(256, 256))
{
image.Mutate(x => x.Fill(Rgba32.Black));
var pen = Pens.Solid(Rgba32.White, 5f);
Pen<Rgba32> pen = Pens.Solid(Rgba32.White, 5f);
for (int i = 0; i < 300; i += 20)
{

17
tests/ImageSharp.Tests/Drawing/FillPatternTests.cs

@ -2,12 +2,9 @@
// Licensed under the Apache License, Version 2.0.
using System;
using System.IO;
using SixLabors.ImageSharp.Drawing;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Overlays;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using Xunit;
@ -22,7 +19,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing
private void Test(string name, Rgba32 background, IBrush<Rgba32> brush, Rgba32[,] expectedPattern)
{
string path = TestEnvironment.CreateOutputDirectory("Fill", "PatternBrush");
using (Image<Rgba32> image = new Image<Rgba32>(20, 20))
using (var image = new Image<Rgba32>(20, 20))
{
image.Mutate(x => x
.Fill(background)
@ -33,15 +30,15 @@ namespace SixLabors.ImageSharp.Tests.Drawing
using (PixelAccessor<Rgba32> sourcePixels = image.Lock())
{
// lets pick random spots to start checking
Random r = new Random();
DenseMatrix<Rgba32> expectedPatternFast = new DenseMatrix<Rgba32>(expectedPattern);
var r = new Random();
var expectedPatternFast = new DenseMatrix<Rgba32>(expectedPattern);
int xStride = expectedPatternFast.Columns;
int yStride = expectedPatternFast.Rows;
int offsetX = r.Next(image.Width / xStride) * xStride;
int offsetY = r.Next(image.Height / yStride) * yStride;
for (int x = 0; x < xStride; x++)
for (var x = 0; x < xStride; x++)
{
for (int y = 0; y < yStride; y++)
for (var y = 0; y < yStride; y++)
{
int actualX = x + offsetX;
int actualY = y + offsetY;

9
tests/ImageSharp.Tests/Drawing/FillRegionProcessorTests.cs

@ -2,15 +2,16 @@
// Licensed under the Apache License, Version 2.0.
using System.Numerics;
using SixLabors.ImageSharp.Drawing.Pens;
using SixLabors.ImageSharp.Drawing.Processors;
using Moq;
using Xunit;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Primitives;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Overlays;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Drawing.Pens;
using SixLabors.ImageSharp.Processing.Drawing.Processors;
using SixLabors.Primitives;
namespace SixLabors.ImageSharp.Tests.Drawing

22
tests/ImageSharp.Tests/Drawing/FillSolidBrushTests.cs

@ -1,13 +1,9 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Numerics;
using SixLabors.ImageSharp.Drawing;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.Drawing;
using SixLabors.ImageSharp.Processing.Drawing;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Drawing
@ -21,12 +17,10 @@ namespace SixLabors.ImageSharp.Tests.Drawing
public void ImageShouldBeFloodFilledWithColorOnDefaultBackground()
{
string path = TestEnvironment.CreateOutputDirectory("Fill", "SolidBrush");
using (Image<Rgba32> image = new Image<Rgba32>(500, 500))
using (var image = new Image<Rgba32>(500, 500))
{
image.Mutate(x => x
.Fill(Rgba32.HotPink));
image
.Save($"{path}/DefaultBack.png");
image.Mutate(x => x.Fill(Rgba32.HotPink));
image.Save($"{path}/DefaultBack.png");
using (PixelAccessor<Rgba32> sourcePixels = image.Lock())
{
@ -41,7 +35,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing
public void ImageShouldBeFloodFilledWithColor()
{
string path = TestEnvironment.CreateOutputDirectory("Fill", "SolidBrush");
using (Image<Rgba32> image = new Image<Rgba32>(500, 500))
using (var image = new Image<Rgba32>(500, 500))
{
image.Mutate(x => x
.BackgroundColor(Rgba32.Blue)
@ -61,9 +55,9 @@ namespace SixLabors.ImageSharp.Tests.Drawing
public void ImageShouldBeFloodFilledWithColorOpacity()
{
string path = TestEnvironment.CreateOutputDirectory("Fill", "SolidBrush");
using (Image<Rgba32> image = new Image<Rgba32>(500, 500))
using (var image = new Image<Rgba32>(500, 500))
{
Rgba32 color = new Rgba32(Rgba32.HotPink.R, Rgba32.HotPink.G, Rgba32.HotPink.B, 150);
var color = new Rgba32(Rgba32.HotPink.R, Rgba32.HotPink.G, Rgba32.HotPink.B, 150);
image.Mutate(x => x
.BackgroundColor(Rgba32.Blue)
@ -71,7 +65,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing
image.Save($"{path}/Opacity.png");
//shift background color towards forground color by the opacity amount
Rgba32 mergedColor = new Rgba32(Vector4.Lerp(Rgba32.Blue.ToVector4(), Rgba32.HotPink.ToVector4(), 150f / 255f));
var mergedColor = new Rgba32(Vector4.Lerp(Rgba32.Blue.ToVector4(), Rgba32.HotPink.ToVector4(), 150f / 255f));
using (PixelAccessor<Rgba32> sourcePixels = image.Lock())

38
tests/ImageSharp.Tests/Drawing/LineComplexPolygonTests.cs

@ -2,9 +2,9 @@
// Licensed under the Apache License, Version 2.0.
using System.Numerics;
using SixLabors.ImageSharp.Drawing.Pens;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Drawing.Pens;
using SixLabors.Shapes;
using Xunit;
@ -20,17 +20,17 @@ namespace SixLabors.ImageSharp.Tests.Drawing
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "LineComplexPolygon");
Polygon simplePath = new Polygon(new LinearLineSegment(
var simplePath = new Polygon(new LinearLineSegment(
new Vector2(10, 10),
new Vector2(200, 150),
new Vector2(50, 300)));
Polygon hole1 = new Polygon(new LinearLineSegment(
var hole1 = new Polygon(new LinearLineSegment(
new Vector2(37, 85),
new Vector2(93, 85),
new Vector2(65, 137)));
using (Image<Rgba32> image = new Image<Rgba32>(500, 500))
using (var image = new Image<Rgba32>(500, 500))
{
image.Mutate(x => x
.BackgroundColor(Rgba32.Blue)
@ -67,17 +67,17 @@ namespace SixLabors.ImageSharp.Tests.Drawing
public void ImageShouldBeOverlayedByPolygonOutlineNoOverlapping()
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "LineComplexPolygon");
Polygon simplePath = new Polygon(new LinearLineSegment(
var simplePath = new Polygon(new LinearLineSegment(
new Vector2(10, 10),
new Vector2(200, 150),
new Vector2(50, 300)));
Polygon hole1 = new Polygon(new LinearLineSegment(
var hole1 = new Polygon(new LinearLineSegment(
new Vector2(207, 25),
new Vector2(263, 25),
new Vector2(235, 57)));
using (Image<Rgba32> image = new Image<Rgba32>(500, 500))
using (var image = new Image<Rgba32>(500, 500))
{
image.Mutate(x => x
.BackgroundColor(Rgba32.Blue)
@ -115,17 +115,17 @@ namespace SixLabors.ImageSharp.Tests.Drawing
public void ImageShouldBeOverlayedByPolygonOutlineOverlapping()
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "LineComplexPolygon");
Polygon simplePath = new Polygon(new LinearLineSegment(
var simplePath = new Polygon(new LinearLineSegment(
new Vector2(10, 10),
new Vector2(200, 150),
new Vector2(50, 300)));
Polygon hole1 = new Polygon(new LinearLineSegment(
var hole1 = new Polygon(new LinearLineSegment(
new Vector2(37, 85),
new Vector2(130, 40),
new Vector2(65, 137)));
using (Image<Rgba32> image = new Image<Rgba32>(500, 500))
using (var image = new Image<Rgba32>(500, 500))
{
image.Mutate(x => x
.BackgroundColor(Rgba32.Blue)
@ -158,17 +158,17 @@ namespace SixLabors.ImageSharp.Tests.Drawing
public void ImageShouldBeOverlayedByPolygonOutlineDashed()
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "LineComplexPolygon");
Polygon simplePath = new Polygon(new LinearLineSegment(
var simplePath = new Polygon(new LinearLineSegment(
new Vector2(10, 10),
new Vector2(200, 150),
new Vector2(50, 300)));
Polygon hole1 = new Polygon(new LinearLineSegment(
var hole1 = new Polygon(new LinearLineSegment(
new Vector2(37, 85),
new Vector2(93, 85),
new Vector2(65, 137)));
using (Image<Rgba32> image = new Image<Rgba32>(500, 500))
using (var image = new Image<Rgba32>(500, 500))
{
image.Mutate(x => x
.BackgroundColor(Rgba32.Blue)
@ -182,18 +182,18 @@ namespace SixLabors.ImageSharp.Tests.Drawing
public void ImageShouldBeOverlayedPolygonOutlineWithOpacity()
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "LineComplexPolygon");
Polygon simplePath = new Polygon(new LinearLineSegment(
var simplePath = new Polygon(new LinearLineSegment(
new Vector2(10, 10),
new Vector2(200, 150),
new Vector2(50, 300)));
Polygon hole1 = new Polygon(new LinearLineSegment(
var hole1 = new Polygon(new LinearLineSegment(
new Vector2(37, 85),
new Vector2(93, 85),
new Vector2(65, 137)));
Rgba32 color = new Rgba32(Rgba32.HotPink.R, Rgba32.HotPink.G, Rgba32.HotPink.B, 150);
var color = new Rgba32(Rgba32.HotPink.R, Rgba32.HotPink.G, Rgba32.HotPink.B, 150);
using (Image<Rgba32> image = new Image<Rgba32>(500, 500))
using (var image = new Image<Rgba32>(500, 500))
{
image.Mutate(x => x
.BackgroundColor(Rgba32.Blue)
@ -201,7 +201,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing
image.Save($"{path}/Opacity.png");
//shift background color towards forground color by the opacity amount
Rgba32 mergedColor = new Rgba32(Vector4.Lerp(Rgba32.Blue.ToVector4(), Rgba32.HotPink.ToVector4(), 150f / 255f));
var mergedColor = new Rgba32(Vector4.Lerp(Rgba32.Blue.ToVector4(), Rgba32.HotPink.ToVector4(), 150f / 255f));
using (PixelAccessor<Rgba32> sourcePixels = image.Lock())
{

4
tests/ImageSharp.Tests/Drawing/LineTests.cs

@ -2,9 +2,9 @@
// Licensed under the Apache License, Version 2.0.
using System.Numerics;
using SixLabors.ImageSharp.Drawing.Pens;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Drawing.Pens;
using Xunit;

8
tests/ImageSharp.Tests/Drawing/Paths/FillPath.cs

@ -2,11 +2,11 @@
// Licensed under the Apache License, Version 2.0.
using System.Numerics;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Processors;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Primitives;
using SixLabors.ImageSharp.Processing.Overlays;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Drawing.Processors;
using SixLabors.Shapes;
using Xunit;
@ -17,7 +17,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
GraphicsOptions noneDefault = new GraphicsOptions();
Rgba32 color = Rgba32.HotPink;
SolidBrush<Rgba32> brush = Brushes.Solid(Rgba32.HotPink);
IPath path = new SixLabors.Shapes.Path(new LinearLineSegment(new SixLabors.Primitives.PointF[] {
IPath path = new Path(new LinearLineSegment(new SixLabors.Primitives.PointF[] {
new Vector2(10,10),
new Vector2(20,10),
new Vector2(20,10),

21
tests/ImageSharp.Tests/Drawing/Paths/FillPathCollection.cs

@ -1,15 +1,12 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
using System.Numerics;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Drawing;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Processors;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Primitives;
using SixLabors.ImageSharp.Processing.Overlays;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Drawing.Processors;
using SixLabors.Shapes;
using Xunit;
@ -20,13 +17,13 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
GraphicsOptions noneDefault = new GraphicsOptions();
Rgba32 color = Rgba32.HotPink;
SolidBrush<Rgba32> brush = Brushes.Solid(Rgba32.HotPink);
IPath path1 = new SixLabors.Shapes.Path(new LinearLineSegment(new SixLabors.Primitives.PointF[] {
IPath path1 = new Path(new LinearLineSegment(new SixLabors.Primitives.PointF[] {
new Vector2(10,10),
new Vector2(20,10),
new Vector2(20,10),
new Vector2(30,10),
}));
IPath path2 = new SixLabors.Shapes.Path(new LinearLineSegment(new SixLabors.Primitives.PointF[] {
IPath path2 = new Path(new LinearLineSegment(new SixLabors.Primitives.PointF[] {
new Vector2(10,10),
new Vector2(20,10),
new Vector2(20,10),
@ -45,7 +42,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
{
this.operations.Fill(this.brush, this.pathCollection);
for (var i = 0; i < 2; i++)
for (int i = 0; i < 2; i++)
{
FillRegionProcessor<Rgba32> processor = this.Verify<FillRegionProcessor<Rgba32>>(i);
@ -66,7 +63,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
{
this.operations.Fill(this.brush, this.pathCollection, this.noneDefault);
for (var i = 0; i < 2; i++)
for (int i = 0; i < 2; i++)
{
FillRegionProcessor<Rgba32> processor = this.Verify<FillRegionProcessor<Rgba32>>(i);
@ -85,7 +82,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
{
this.operations.Fill(this.color, this.pathCollection);
for (var i = 0; i < 2; i++)
for (int i = 0; i < 2; i++)
{
FillRegionProcessor<Rgba32> processor = this.Verify<FillRegionProcessor<Rgba32>>(i);
@ -105,7 +102,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
{
this.operations.Fill(this.color, this.pathCollection, this.noneDefault);
for (var i = 0; i < 2; i++)
for (int i = 0; i < 2; i++)
{
FillRegionProcessor<Rgba32> processor = this.Verify<FillRegionProcessor<Rgba32>>(i);

7
tests/ImageSharp.Tests/Drawing/Paths/FillPolygon.cs

@ -2,12 +2,11 @@
// Licensed under the Apache License, Version 2.0.
using System.Numerics;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Processors;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Primitives;
using SixLabors.ImageSharp.Processing.Overlays;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Drawing.Processors;
using SixLabors.Shapes;
using Xunit;

66
tests/ImageSharp.Tests/Drawing/Paths/FillRectangle.cs

@ -1,11 +1,11 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Processors;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Primitives;
using SixLabors.ImageSharp.Processing.Overlays;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Drawing.Processors;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Drawing.Paths
@ -20,75 +20,75 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
[Fact]
public void CorrectlySetsBrushAndRectangle()
{
this.operations.Fill(brush, rectangle);
this.operations.Fill(this.brush, this.rectangle);
FillRegionProcessor<Rgba32> processor = this.Verify<FillRegionProcessor<Rgba32>>();
Assert.Equal(GraphicsOptions.Default, processor.Options);
ShapeRegion region = Assert.IsType<ShapeRegion>(processor.Region);
SixLabors.Shapes.RectangularePolygon rect = Assert.IsType<SixLabors.Shapes.RectangularePolygon>(region.Shape);
Assert.Equal(rect.Location.X, rectangle.X);
Assert.Equal(rect.Location.Y, rectangle.Y);
Assert.Equal(rect.Size.Width, rectangle.Width);
Assert.Equal(rect.Size.Height, rectangle.Height);
Shapes.RectangularePolygon rect = Assert.IsType<Shapes.RectangularePolygon>(region.Shape);
Assert.Equal(rect.Location.X, this.rectangle.X);
Assert.Equal(rect.Location.Y, this.rectangle.Y);
Assert.Equal(rect.Size.Width, this.rectangle.Width);
Assert.Equal(rect.Size.Height, this.rectangle.Height);
Assert.Equal(brush, processor.Brush);
Assert.Equal(this.brush, processor.Brush);
}
[Fact]
public void CorrectlySetsBrushRectangleAndOptions()
{
this.operations.Fill(brush, rectangle, noneDefault);
this.operations.Fill(this.brush, this.rectangle, this.noneDefault);
FillRegionProcessor<Rgba32> processor = this.Verify<FillRegionProcessor<Rgba32>>();
Assert.Equal(noneDefault, processor.Options);
Assert.Equal(this.noneDefault, processor.Options);
ShapeRegion region = Assert.IsType<ShapeRegion>(processor.Region);
SixLabors.Shapes.RectangularePolygon rect = Assert.IsType<SixLabors.Shapes.RectangularePolygon>(region.Shape);
Assert.Equal(rect.Location.X, rectangle.X);
Assert.Equal(rect.Location.Y, rectangle.Y);
Assert.Equal(rect.Size.Width, rectangle.Width);
Assert.Equal(rect.Size.Height, rectangle.Height);
Shapes.RectangularePolygon rect = Assert.IsType<Shapes.RectangularePolygon>(region.Shape);
Assert.Equal(rect.Location.X, this.rectangle.X);
Assert.Equal(rect.Location.Y, this.rectangle.Y);
Assert.Equal(rect.Size.Width, this.rectangle.Width);
Assert.Equal(rect.Size.Height, this.rectangle.Height);
Assert.Equal(brush, processor.Brush);
Assert.Equal(this.brush, processor.Brush);
}
[Fact]
public void CorrectlySetsColorAndRectangle()
{
this.operations.Fill(color, rectangle);
this.operations.Fill(this.color, this.rectangle);
FillRegionProcessor<Rgba32> processor = this.Verify<FillRegionProcessor<Rgba32>>();
Assert.Equal(GraphicsOptions.Default, processor.Options);
ShapeRegion region = Assert.IsType<ShapeRegion>(processor.Region);
SixLabors.Shapes.RectangularePolygon rect = Assert.IsType<SixLabors.Shapes.RectangularePolygon>(region.Shape);
Assert.Equal(rect.Location.X, rectangle.X);
Assert.Equal(rect.Location.Y, rectangle.Y);
Assert.Equal(rect.Size.Width, rectangle.Width);
Assert.Equal(rect.Size.Height, rectangle.Height);
Shapes.RectangularePolygon rect = Assert.IsType<Shapes.RectangularePolygon>(region.Shape);
Assert.Equal(rect.Location.X, this.rectangle.X);
Assert.Equal(rect.Location.Y, this.rectangle.Y);
Assert.Equal(rect.Size.Width, this.rectangle.Width);
Assert.Equal(rect.Size.Height, this.rectangle.Height);
SolidBrush<Rgba32> brush = Assert.IsType<SolidBrush<Rgba32>>(processor.Brush);
Assert.Equal(color, brush.Color);
Assert.Equal(this.color, brush.Color);
}
[Fact]
public void CorrectlySetsColorRectangleAndOptions()
{
this.operations.Fill(color, rectangle, noneDefault);
this.operations.Fill(this.color, this.rectangle, this.noneDefault);
FillRegionProcessor<Rgba32> processor = this.Verify<FillRegionProcessor<Rgba32>>();
Assert.Equal(noneDefault, processor.Options);
Assert.Equal(this.noneDefault, processor.Options);
ShapeRegion region = Assert.IsType<ShapeRegion>(processor.Region);
SixLabors.Shapes.RectangularePolygon rect = Assert.IsType<SixLabors.Shapes.RectangularePolygon>(region.Shape);
Assert.Equal(rect.Location.X, rectangle.X);
Assert.Equal(rect.Location.Y, rectangle.Y);
Assert.Equal(rect.Size.Width, rectangle.Width);
Assert.Equal(rect.Size.Height, rectangle.Height);
Shapes.RectangularePolygon rect = Assert.IsType<Shapes.RectangularePolygon>(region.Shape);
Assert.Equal(rect.Location.X, this.rectangle.X);
Assert.Equal(rect.Location.Y, this.rectangle.Y);
Assert.Equal(rect.Size.Width, this.rectangle.Width);
Assert.Equal(rect.Size.Height, this.rectangle.Height);
SolidBrush<Rgba32> brush = Assert.IsType<SolidBrush<Rgba32>>(processor.Brush);
Assert.Equal(color, brush.Color);
Assert.Equal(this.color, brush.Color);
}
}
}

17
tests/ImageSharp.Tests/Drawing/Paths/ShapePathTests.cs

@ -1,25 +1,10 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.IO;
using System.Numerics;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Drawing;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Pens;
using SixLabors.ImageSharp.Drawing.Processors;
using SixLabors.ImageSharp.Processing;
using Moq;
using SixLabors.Shapes;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Drawing.Paths
{
public class ShapePathTests
{
// TODO readd these back in
// TODO read these back in
}
}

16
tests/ImageSharp.Tests/Drawing/Paths/ShapeRegionTests.cs

@ -8,8 +8,6 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
using System;
using Moq;
using SixLabors.ImageSharp.Drawing;
using SixLabors.Primitives;
using SixLabors.Shapes;
@ -42,7 +40,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
[Fact]
public void ShapeRegionWithPathRetainsShape()
{
ShapeRegion region = new ShapeRegion(this.pathMock.Object);
var region = new ShapeRegion(this.pathMock.Object);
Assert.Equal(this.pathMock.Object, region.Shape);
}
@ -50,7 +48,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
[Fact]
public void ShapeRegionFromPathConvertsBoundsProxyToShape()
{
ShapeRegion region = new ShapeRegion(this.pathMock.Object);
var region = new ShapeRegion(this.pathMock.Object);
Assert.Equal(Math.Floor(this.bounds.Left), region.Bounds.Left);
Assert.Equal(Math.Ceiling(this.bounds.Right), region.Bounds.Right);
@ -61,7 +59,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
[Fact]
public void ShapeRegionFromPathMaxIntersectionsProxyToShape()
{
ShapeRegion region = new ShapeRegion(this.pathMock.Object);
var region = new ShapeRegion(this.pathMock.Object);
int i = region.MaxIntersections;
this.pathMock.Verify(x => x.MaxIntersections);
@ -71,7 +69,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
public void ShapeRegionFromPathScanYProxyToShape()
{
int yToScan = 10;
ShapeRegion region = new ShapeRegion(this.pathMock.Object);
var region = new ShapeRegion(this.pathMock.Object);
this.pathMock
.Setup(
@ -99,7 +97,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
public void ShapeRegionFromShapeScanYProxyToShape()
{
int yToScan = 10;
ShapeRegion region = new ShapeRegion(this.pathMock.Object);
var region = new ShapeRegion(this.pathMock.Object);
this.pathMock
.Setup(
@ -126,7 +124,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
[Fact]
public void ShapeRegionFromShapeConvertsBoundsProxyToShape()
{
ShapeRegion region = new ShapeRegion(this.pathMock.Object);
var region = new ShapeRegion(this.pathMock.Object);
Assert.Equal(Math.Floor(this.bounds.Left), region.Bounds.Left);
Assert.Equal(Math.Ceiling(this.bounds.Right), region.Bounds.Right);
@ -137,7 +135,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
[Fact]
public void ShapeRegionFromShapeMaxIntersectionsProxyToShape()
{
ShapeRegion region = new ShapeRegion(this.pathMock.Object);
var region = new ShapeRegion(this.pathMock.Object);
int i = region.MaxIntersections;
this.pathMock.Verify(x => x.MaxIntersections);

1
tests/ImageSharp.Tests/Drawing/PolygonTests.cs

@ -6,6 +6,7 @@ using System.Numerics;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.Primitives;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Overlays;
using Xunit;

8
tests/ImageSharp.Tests/Drawing/RecolorImageTest.cs

@ -1,9 +1,9 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Overlays;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.Primitives;
using Xunit;
@ -18,7 +18,7 @@ namespace SixLabors.ImageSharp.Tests
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "RecolorImage");
RecolorBrush<Rgba32> brush = new RecolorBrush<Rgba32>(Rgba32.Yellow, Rgba32.HotPink, 0.2f);
var brush = new RecolorBrush<Rgba32>(Rgba32.Yellow, Rgba32.HotPink, 0.2f);
foreach (TestFile file in Files)
{
@ -35,7 +35,7 @@ namespace SixLabors.ImageSharp.Tests
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "RecolorImage");
RecolorBrush<Rgba32> brush = new RecolorBrush<Rgba32>(Rgba32.Yellow, Rgba32.HotPink, 0.2f);
var brush = new RecolorBrush<Rgba32>(Rgba32.Yellow, Rgba32.HotPink, 0.2f);
foreach (TestFile file in Files)
{

1
tests/ImageSharp.Tests/Drawing/SolidBezierTests.cs

@ -3,6 +3,7 @@
using System.Numerics;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.Shapes;
using Xunit;

1
tests/ImageSharp.Tests/Drawing/SolidComplexPolygonTests.cs

@ -4,6 +4,7 @@
using System.Numerics;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.Shapes;
using Xunit;

43
tests/ImageSharp.Tests/Drawing/SolidPolygonTests.cs

@ -3,14 +3,15 @@
using System;
using System.Numerics;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.Shapes;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Drawing
{
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Overlays;
public class SolidPolygonTests : FileTestBase
@ -25,7 +26,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing
new Vector2(50, 300)
};
using (Image<Rgba32> image = new Image<Rgba32>(500, 500))
using (var image = new Image<Rgba32>(500, 500))
{
image.Mutate(x => x
.FillPolygon(Rgba32.HotPink, simplePath, new GraphicsOptions(true)));
@ -42,13 +43,13 @@ namespace SixLabors.ImageSharp.Tests.Drawing
public void ImageShouldBeOverlayedByFilledPolygonWithPattern()
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "FilledPolygons");
SixLabors.Primitives.PointF[] simplePath = new SixLabors.Primitives.PointF[] {
var simplePath = new SixLabors.Primitives.PointF[] {
new Vector2(10, 10),
new Vector2(200, 150),
new Vector2(50, 300)
};
using (Image<Rgba32> image = new Image<Rgba32>(500, 500))
using (var image = new Image<Rgba32>(500, 500))
{
image.Mutate(x => x
.FillPolygon(Brushes.Horizontal(Rgba32.HotPink), simplePath, new GraphicsOptions(true)));
@ -65,13 +66,13 @@ namespace SixLabors.ImageSharp.Tests.Drawing
public void ImageShouldBeOverlayedByFilledPolygonNoAntialias()
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "FilledPolygons");
SixLabors.Primitives.PointF[] simplePath = new SixLabors.Primitives.PointF[] {
var simplePath = new SixLabors.Primitives.PointF[] {
new Vector2(10, 10),
new Vector2(200, 150),
new Vector2(50, 300)
};
using (Image<Rgba32> image = new Image<Rgba32>(500, 500))
using (var image = new Image<Rgba32>(500, 500))
{
image.Mutate(x => x
.BackgroundColor(Rgba32.Blue)
@ -95,16 +96,16 @@ namespace SixLabors.ImageSharp.Tests.Drawing
public void ImageShouldBeOverlayedByFilledPolygonImage()
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "FilledPolygons");
SixLabors.Primitives.PointF[] simplePath = new SixLabors.Primitives.PointF[] {
var simplePath = new SixLabors.Primitives.PointF[] {
new Vector2(10, 10),
new Vector2(200, 150),
new Vector2(50, 300)
};
using (Image<Rgba32> brushImage = TestFile.Create(TestImages.Bmp.Car).CreateImage())
using (Image<Rgba32> image = new Image<Rgba32>(500, 500))
using (var image = new Image<Rgba32>(500, 500))
{
ImageBrush<Rgba32> brush = new ImageBrush<Rgba32>(brushImage);
var brush = new ImageBrush<Rgba32>(brushImage);
image.Mutate(x => x
.BackgroundColor(Rgba32.Blue)
@ -117,14 +118,14 @@ namespace SixLabors.ImageSharp.Tests.Drawing
public void ImageShouldBeOverlayedByFilledPolygonOpacity()
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "FilledPolygons");
SixLabors.Primitives.PointF[] simplePath = new SixLabors.Primitives.PointF[] {
var simplePath = new SixLabors.Primitives.PointF[] {
new Vector2(10, 10),
new Vector2(200, 150),
new Vector2(50, 300)
};
Rgba32 color = new Rgba32(Rgba32.HotPink.R, Rgba32.HotPink.G, Rgba32.HotPink.B, 150);
var color = new Rgba32(Rgba32.HotPink.R, Rgba32.HotPink.G, Rgba32.HotPink.B, 150);
using (Image<Rgba32> image = new Image<Rgba32>(500, 500))
using (var image = new Image<Rgba32>(500, 500))
{
image.Mutate(x => x
.BackgroundColor(Rgba32.Blue)
@ -132,7 +133,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing
image.Save($"{path}/Opacity.png");
//shift background color towards forground color by the opacity amount
Rgba32 mergedColor = new Rgba32(Vector4.Lerp(Rgba32.Blue.ToVector4(), Rgba32.HotPink.ToVector4(), 150f / 255f));
var mergedColor = new Rgba32(Vector4.Lerp(Rgba32.Blue.ToVector4(), Rgba32.HotPink.ToVector4(), 150f / 255f));
using (PixelAccessor<Rgba32> sourcePixels = image.Lock())
{
@ -146,7 +147,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "FilledPolygons");
using (Image<Rgba32> image = new Image<Rgba32>(500, 500))
using (var image = new Image<Rgba32>(500, 500))
{
image.Mutate(x => x
.BackgroundColor(Rgba32.Blue)
@ -173,7 +174,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "FilledPolygons");
using (Image<Rgba32> image = new Image<Rgba32>(100, 100))
using (var image = new Image<Rgba32>(100, 100))
{
image.Mutate(x => x
.BackgroundColor(Rgba32.Blue)
@ -194,9 +195,9 @@ namespace SixLabors.ImageSharp.Tests.Drawing
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "FilledPolygons");
Configuration config = Configuration.CreateDefaultInstance();
var config = Configuration.CreateDefaultInstance();
config.ParallelOptions.MaxDegreeOfParallelism = 1;
using (Image<Rgba32> image = new Image<Rgba32>(config, 100, 100))
using (var image = new Image<Rgba32>(config, 100, 100))
{
image.Mutate(x => x
.BackgroundColor(Rgba32.Blue)
@ -210,9 +211,9 @@ namespace SixLabors.ImageSharp.Tests.Drawing
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "FilledPolygons");
Configuration config = Configuration.CreateDefaultInstance();
var config = Configuration.CreateDefaultInstance();
config.ParallelOptions.MaxDegreeOfParallelism = 1;
using (Image<Rgba32> image = new Image<Rgba32>(config, 100, 100))
using (var image = new Image<Rgba32>(config, 100, 100))
{
image.Mutate(x => x
.BackgroundColor(Rgba32.Blue)
@ -227,9 +228,9 @@ namespace SixLabors.ImageSharp.Tests.Drawing
{
string path = TestEnvironment.CreateOutputDirectory("Drawing", "FilledPolygons");
Configuration config = Configuration.CreateDefaultInstance();
var config = Configuration.CreateDefaultInstance();
config.ParallelOptions.MaxDegreeOfParallelism = 1;
using (Image<Rgba32> image = new Image<Rgba32>(config, 200, 200))
using (var image = new Image<Rgba32>(config, 200, 200))
{
image.Mutate(x => x
.Fill(Rgba32.Blue)

41
tests/ImageSharp.Tests/Drawing/Text/DrawText.Path.cs

@ -1,18 +1,15 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
using System.Numerics;
using SixLabors.ImageSharp.Drawing;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Pens;
using SixLabors.ImageSharp.Drawing.Processors;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.Drawing.Paths;
using SixLabors.Fonts;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Drawing.Processors;
using SixLabors.ImageSharp.Processing.Text;
using SixLabors.Shapes;
using Xunit;
using SixLabors.ImageSharp.Processing.Drawing.Pens;
namespace SixLabors.ImageSharp.Tests.Drawing.Text
{
@ -44,7 +41,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
this.Font,
Brushes.Solid(Rgba32.Red),
null,
path,
this.path,
new TextGraphicsOptions(true));
this.Verify<FillRegionProcessor<Rgba32>>(0);
@ -55,7 +52,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
[Fact]
public void FillsForEachACharachterWhenBrushSetAndNotPenDefaultOptions()
{
this.operations.DrawText("123", this.Font, Brushes.Solid(Rgba32.Red), null, path);
this.operations.DrawText("123", this.Font, Brushes.Solid(Rgba32.Red), null, this.path);
this.Verify<FillRegionProcessor<Rgba32>>(0);
this.Verify<FillRegionProcessor<Rgba32>>(1);
@ -65,7 +62,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
[Fact]
public void FillsForEachACharachterWhenBrushSet()
{
this.operations.DrawText("123", this.Font, Brushes.Solid(Rgba32.Red), path, new TextGraphicsOptions(true));
this.operations.DrawText("123", this.Font, Brushes.Solid(Rgba32.Red), this.path, new TextGraphicsOptions(true));
this.Verify<FillRegionProcessor<Rgba32>>(0);
this.Verify<FillRegionProcessor<Rgba32>>(1);
@ -75,7 +72,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
[Fact]
public void FillsForEachACharachterWhenBrushSetDefaultOptions()
{
this.operations.DrawText("123", this.Font, Brushes.Solid(Rgba32.Red), path);
this.operations.DrawText("123", this.Font, Brushes.Solid(Rgba32.Red), this.path);
this.Verify<FillRegionProcessor<Rgba32>>(0);
this.Verify<FillRegionProcessor<Rgba32>>(1);
@ -85,7 +82,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
[Fact]
public void FillsForEachACharachterWhenColorSet()
{
this.operations.DrawText("123", this.Font, Rgba32.Red, path, new TextGraphicsOptions(true));
this.operations.DrawText("123", this.Font, Rgba32.Red, this.path, new TextGraphicsOptions(true));
var processor = this.Verify<FillRegionProcessor<Rgba32>>(0);
this.Verify<FillRegionProcessor<Rgba32>>(1);
@ -98,9 +95,9 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
[Fact]
public void FillsForEachACharachterWhenColorSetDefaultOptions()
{
this.operations.DrawText("123", this.Font, Rgba32.Red, path);
this.operations.DrawText("123", this.Font, Rgba32.Red, this.path);
var processor = this.Verify<FillRegionProcessor<Rgba32>>(0);
FillRegionProcessor<Rgba32> processor = this.Verify<FillRegionProcessor<Rgba32>>(0);
this.Verify<FillRegionProcessor<Rgba32>>(1);
this.Verify<FillRegionProcessor<Rgba32>>(2);
@ -116,7 +113,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
this.Font,
null,
Pens.Dash(Rgba32.Red, 1),
path,
this.path,
new TextGraphicsOptions(true));
var processor = this.Verify<FillRegionProcessor<Rgba32>>(0);
@ -127,7 +124,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
[Fact]
public void DrawForEachACharachterWhenPenSetAndNotBrushDefaultOptions()
{
this.operations.DrawText("123", this.Font, null, Pens.Dash(Rgba32.Red, 1), path);
this.operations.DrawText("123", this.Font, null, Pens.Dash(Rgba32.Red, 1), this.path);
var processor = this.Verify<FillRegionProcessor<Rgba32>>(0);
this.Verify<FillRegionProcessor<Rgba32>>(1);
@ -137,7 +134,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
[Fact]
public void DrawForEachACharachterWhenPenSet()
{
this.operations.DrawText("123", this.Font, Pens.Dash(Rgba32.Red, 1), path, new TextGraphicsOptions(true));
this.operations.DrawText("123", this.Font, Pens.Dash(Rgba32.Red, 1), this.path, new TextGraphicsOptions(true));
var processor = this.Verify<FillRegionProcessor<Rgba32>>(0);
this.Verify<FillRegionProcessor<Rgba32>>(1);
@ -147,9 +144,9 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
[Fact]
public void DrawForEachACharachterWhenPenSetDefaultOptions()
{
this.operations.DrawText("123", this.Font, Pens.Dash(Rgba32.Red, 1), path);
this.operations.DrawText("123", this.Font, Pens.Dash(Rgba32.Red, 1), this.path);
var processor = this.Verify<FillRegionProcessor<Rgba32>>(0);
FillRegionProcessor<Rgba32> processor = this.Verify<FillRegionProcessor<Rgba32>>(0);
this.Verify<FillRegionProcessor<Rgba32>>(1);
this.Verify<FillRegionProcessor<Rgba32>>(2);
}
@ -162,7 +159,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
this.Font,
Brushes.Solid(Rgba32.Red),
Pens.Dash(Rgba32.Red, 1),
path,
this.path,
new TextGraphicsOptions(true));
var processor = this.Verify<FillRegionProcessor<Rgba32>>(0);
@ -176,7 +173,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
[Fact]
public void DrawForEachACharachterWhenPenSetAndFillFroEachWhenBrushSetDefaultOptions()
{
this.operations.DrawText("123", this.Font, Brushes.Solid(Rgba32.Red), Pens.Dash(Rgba32.Red, 1), path);
this.operations.DrawText("123", this.Font, Brushes.Solid(Rgba32.Red), Pens.Dash(Rgba32.Red, 1), this.path);
var processor = this.Verify<FillRegionProcessor<Rgba32>>(0);
this.Verify<FillRegionProcessor<Rgba32>>(1);
@ -194,7 +191,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
this.Font,
Brushes.Solid(Rgba32.Red),
Pens.Dash(Rgba32.Red, 1),
path,
this.path,
new TextGraphicsOptions(true));
var processor = this.Verify<FillRegionProcessor<Rgba32>>(0);
@ -204,7 +201,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
[Fact]
public void BrushAppliesBeforPenDefaultOptions()
{
this.operations.DrawText("1", this.Font, Brushes.Solid(Rgba32.Red), Pens.Dash(Rgba32.Red, 1), path);
this.operations.DrawText("1", this.Font, Brushes.Solid(Rgba32.Red), Pens.Dash(Rgba32.Red, 1), this.path);
var processor = this.Verify<FillRegionProcessor<Rgba32>>(0);
this.Verify<FillRegionProcessor<Rgba32>>(1);

9
tests/ImageSharp.Tests/Drawing/Text/DrawText.cs

@ -1,15 +1,12 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
using System.Numerics;
using SixLabors.ImageSharp.Drawing;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Pens;
using SixLabors.ImageSharp.Drawing.Processors;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.Drawing.Paths;
using SixLabors.Fonts;
using SixLabors.ImageSharp.Processing.Drawing.Brushes;
using SixLabors.ImageSharp.Processing.Drawing.Pens;
using SixLabors.ImageSharp.Processing.Drawing.Processors;
using SixLabors.ImageSharp.Processing.Text;
using SixLabors.Shapes;
using Xunit;

17
tests/ImageSharp.Tests/Drawing/Text/OutputText.cs

@ -1,21 +1,14 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
using System.Collections.Generic;
using System.IO;
using System.Numerics;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Drawing;
using SixLabors.ImageSharp.Drawing.Brushes;
using SixLabors.ImageSharp.Drawing.Pens;
using SixLabors.ImageSharp.Drawing.Processors;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.Fonts;
using SixLabors.ImageSharp.Processing.Overlays;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Text;
using SixLabors.Shapes;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Drawing.Text
@ -28,14 +21,14 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
public OutputText()
{
this.FontCollection = new FontCollection();
this.Font = FontCollection.Install(TestFontUtilities.GetPath("SixLaborsSampleAB.woff")).CreateFont(12);
this.Font = this.FontCollection.Install(TestFontUtilities.GetPath("SixLaborsSampleAB.woff")).CreateFont(12);
}
[Fact]
public void DrawAB()
{
//draws 2 overlapping triangle glyphs twice 1 set on each line
using (Image<Rgba32> img = new Image<Rgba32>(100, 200))
using (var img = new Image<Rgba32>(100, 200))
{
img.Mutate(x => x.Fill(Rgba32.DarkBlue)
.DrawText("AB\nAB", new Font(this.Font, 50), Rgba32.Red, new Vector2(0, 0)));

13
tests/ImageSharp.Tests/Drawing/Text/TextGraphicsOptionsTests.cs

@ -1,13 +1,6 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using System.Threading.Tasks;
using SixLabors.ImageSharp.Drawing;
using SixLabors.Fonts;
using SixLabors.ImageSharp.Processing.Text;
using Xunit;
@ -19,7 +12,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
[Fact]
public void ExplicitCastOfGraphicsOptions()
{
GraphicsOptions opt = new GraphicsOptions(false)
var opt = new GraphicsOptions(false)
{
AntialiasSubpixelDepth = 99
};
@ -33,12 +26,12 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Text
[Fact]
public void ImplicitCastToGraphicsOptions()
{
TextGraphicsOptions textOptions = new TextGraphicsOptions(false)
var textOptions = new TextGraphicsOptions(false)
{
AntialiasSubpixelDepth = 99
};
GraphicsOptions opt = (GraphicsOptions)textOptions;
var opt = (GraphicsOptions)textOptions;
Assert.False(opt.Antialias);
Assert.Equal(99, opt.AntialiasSubpixelDepth);

2
tests/ImageSharp.Tests/Issues/Issue412.cs

@ -2,7 +2,7 @@
using Xunit;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Overlays;
using SixLabors.ImageSharp.Processing.Drawing;
namespace SixLabors.ImageSharp.Tests.Issues
{

1
tests/ImageSharp.Tests/TestUtilities/ImageProviders/SolidProvider.cs

@ -4,6 +4,7 @@
using System;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Drawing;
using SixLabors.ImageSharp.Processing.Overlays;
using Xunit.Abstractions;

Loading…
Cancel
Save