From 3a504362baf0bdca7b29fac673383253bd50aa6d Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Thu, 7 Sep 2023 16:41:29 +1000 Subject: [PATCH 01/15] Add Avx rounding --- .../Rasterization/ScanEdgeCollection.Build.cs | 49 +++++++++- .../Drawing/Rounding.cs | 91 +++++++++++++++++++ 2 files changed, 135 insertions(+), 5 deletions(-) create mode 100644 tests/ImageSharp.Drawing.Benchmarks/Drawing/Rounding.cs diff --git a/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs b/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs index 20803dcd5..8b313c127 100644 --- a/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs +++ b/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs @@ -4,6 +4,9 @@ using System.Buffers; using System.Diagnostics; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.X86; using SixLabors.ImageSharp.Memory; namespace SixLabors.ImageSharp.Drawing.Shapes.Rasterization; @@ -82,12 +85,48 @@ internal static ScanEdgeCollection Create(TessellatedMultipolygon multipolygon, static void RoundY(ReadOnlySpan vertices, Span destination, float subsamplingRatio) { - for (int i = 0; i < vertices.Length; i++) + int ri = 0; + if (Avx.IsSupported) { - // for future SIMD impl: - // https://www.ocf.berkeley.edu/~horie/rounding.html - // Avx.RoundToPositiveInfinity() - destination[i] = MathF.Round(vertices[i].Y * subsamplingRatio, MidpointRounding.AwayFromZero) / subsamplingRatio; + // If the length of the input buffer as a float array is a multiple of 16, we can use AVX instructions: + int verticesLengthInFloats = vertices.Length * 2; + int vector256FloatCount_x2 = Vector256.Count * 2; + int remainder = verticesLengthInFloats % vector256FloatCount_x2; + int verticesLength = verticesLengthInFloats - remainder; + + if (verticesLength > 0) + { + ri = vertices.Length - (remainder / 2); + float maxIterations = verticesLength / (Vector256.Count * 2); + ref Vector256 sourceBase = ref Unsafe.As>(ref MemoryMarshal.GetReference(vertices)); + ref Vector256 destinationBase = ref Unsafe.As>(ref MemoryMarshal.GetReference(destination)); + + Vector256 ssRatio = Vector256.Create(subsamplingRatio); + Vector256 inverseSsRatio = Vector256.Create(1F / subsamplingRatio); + + // For every 1 vector we add to the destination we read 2 from the vertices. + for (nint i = 0, j = 0; i < maxIterations; i++, j += 2) + { + // Load 8 PointF + Vector256 points1 = Unsafe.Add(ref sourceBase, j); + Vector256 points2 = Unsafe.Add(ref sourceBase, j + 1); + + // Shuffle the points to group the Y properties + Vector128 points1Y = Sse.Shuffle(points1.GetLower(), points1.GetUpper(), 0b11_01_11_01); + Vector128 points2Y = Sse.Shuffle(points2.GetLower(), points2.GetUpper(), 0b11_01_11_01); + Vector256 pointsY = Vector256.Create(points1Y, points2Y); + + // Multiply by the subsampling ratio, round, then multiply by the inverted subsampling ratio and assign. + // https://www.ocf.berkeley.edu/~horie/rounding.html + Vector256 rounded = Avx.RoundToPositiveInfinity(Avx.Multiply(pointsY, ssRatio)); + Unsafe.Add(ref destinationBase, i) = Avx.Multiply(rounded, inverseSsRatio); + } + } + } + + for (; ri < vertices.Length; ri++) + { + destination[ri] = MathF.Round(vertices[ri].Y * subsamplingRatio, MidpointRounding.AwayFromZero) / subsamplingRatio; } } diff --git a/tests/ImageSharp.Drawing.Benchmarks/Drawing/Rounding.cs b/tests/ImageSharp.Drawing.Benchmarks/Drawing/Rounding.cs new file mode 100644 index 000000000..4d4f4fdfa --- /dev/null +++ b/tests/ImageSharp.Drawing.Benchmarks/Drawing/Rounding.cs @@ -0,0 +1,91 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.X86; +using BenchmarkDotNet.Attributes; + +namespace SixLabors.ImageSharp.Drawing.Benchmarks.Drawing; +public class Rounding +{ + private PointF[] vertices; + private float[] destination; + private float[] destinationAvx; + + [GlobalSetup] + public void Setup() + { + this.vertices = new PointF[1000]; + this.destination = new float[this.vertices.Length]; + this.destinationAvx = new float[this.vertices.Length]; + Random r = new(42); + for (int i = 0; i < this.vertices.Length; i++) + { + this.vertices[i] = new PointF((float)r.NextDouble(), (float)r.NextDouble()); + } + } + + [Benchmark] + public void RoundYAvx() => RoundYAvx(this.vertices, this.destinationAvx, 16); + + [Benchmark(Baseline = true)] + public void RoundY() => RoundY(this.vertices, this.destination, 16); + + private static void RoundYAvx(ReadOnlySpan vertices, Span destination, float subsamplingRatio) + { + int ri = 0; + if (Avx.IsSupported) + { + // If the length of the input buffer as a float array is a multiple of 16, we can use AVX instructions: + int verticesLengthInFloats = vertices.Length * 2; + int vector256FloatCount_x2 = Vector256.Count * 2; + int remainder = verticesLengthInFloats % vector256FloatCount_x2; + int verticesLength = verticesLengthInFloats - remainder; + + if (verticesLength > 0) + { + ri = vertices.Length - (remainder / 2); + float maxIterations = verticesLength / (Vector256.Count * 2); + ref Vector256 sourceBase = ref Unsafe.As>(ref MemoryMarshal.GetReference(vertices)); + ref Vector256 destinationBase = ref Unsafe.As>(ref MemoryMarshal.GetReference(destination)); + + Vector256 ssRatio = Vector256.Create(subsamplingRatio); + Vector256 inverseSsRatio = Vector256.Create(1F / subsamplingRatio); + + // For every 1 vector we add to the destination we read 2 from the vertices. + for (nint i = 0, j = 0; i < maxIterations; i++, j += 2) + { + // Load 8 PointF + Vector256 points1 = Unsafe.Add(ref sourceBase, j); + Vector256 points2 = Unsafe.Add(ref sourceBase, j + 1); + + // Shuffle the points to group the Y properties + Vector128 points1Y = Sse.Shuffle(points1.GetLower(), points1.GetUpper(), 0b11_01_11_01); + Vector128 points2Y = Sse.Shuffle(points2.GetLower(), points2.GetUpper(), 0b11_01_11_01); + Vector256 pointsY = Vector256.Create(points1Y, points2Y); + + // Multiply by the subsampling ratio, round, then multiply by the inverted subsampling ratio and assign. + // https://www.ocf.berkeley.edu/~horie/rounding.html + Vector256 rounded = Avx.RoundToPositiveInfinity(Avx.Multiply(pointsY, ssRatio)); + Unsafe.Add(ref destinationBase, i) = Avx.Multiply(rounded, inverseSsRatio); + } + } + } + + for (; ri < vertices.Length; ri++) + { + destination[ri] = MathF.Round(vertices[ri].Y * subsamplingRatio, MidpointRounding.AwayFromZero) / subsamplingRatio; + } + } + + private static void RoundY(ReadOnlySpan vertices, Span destination, float subsamplingRatio) + { + int ri = 0; + for (; ri < vertices.Length; ri++) + { + destination[ri] = MathF.Round(vertices[ri].Y * subsamplingRatio, MidpointRounding.AwayFromZero) / subsamplingRatio; + } + } +} From d244b89b270f6c24075e9fbe64ad22328aa707cd Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Thu, 7 Sep 2023 16:41:52 +1000 Subject: [PATCH 02/15] Remove unneeded clipper scaling --- .../Shapes/PolygonClipper/ClipperOffset.cs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/ImageSharp.Drawing/Shapes/PolygonClipper/ClipperOffset.cs b/src/ImageSharp.Drawing/Shapes/PolygonClipper/ClipperOffset.cs index 304cda41e..1ebcc51c9 100644 --- a/src/ImageSharp.Drawing/Shapes/PolygonClipper/ClipperOffset.cs +++ b/src/ImageSharp.Drawing/Shapes/PolygonClipper/ClipperOffset.cs @@ -1,8 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System.Numerics; - namespace SixLabors.ImageSharp.Drawing.Shapes.PolygonClipper; /// @@ -10,8 +8,6 @@ namespace SixLabors.ImageSharp.Drawing.Shapes.PolygonClipper; /// internal class ClipperOffset { - // To make the floating point polygons compatible with clipper we have to scale them. - private const float ScalingFactor = 1000F; private readonly PolygonOffsetter polygonClipperOffset; /// @@ -30,16 +26,16 @@ public ClipperOffset(float meterLimit = 2F, float arcTolerance = .25F) public ComplexPolygon Execute(float width) { PathsF solution = new(); - this.polygonClipperOffset.Execute(width * ScalingFactor, solution); + this.polygonClipperOffset.Execute(width, solution); - var polygons = new Polygon[solution.Count]; + Polygon[] polygons = new Polygon[solution.Count]; for (int i = 0; i < solution.Count; i++) { PathF pt = solution[i]; - var points = new PointF[pt.Count]; + PointF[] points = new PointF[pt.Count]; for (int j = 0; j < pt.Count; j++) { - points[j] = pt[j] / ScalingFactor; + points[j] = pt[j]; } polygons[i] = new Polygon(points); @@ -59,7 +55,7 @@ public void AddPath(ReadOnlySpan pathPoints, JointStyle jointStyle, EndC PathF points = new(pathPoints.Length); for (int i = 0; i < pathPoints.Length; i++) { - points.Add((Vector2)pathPoints[i] * ScalingFactor); + points.Add(pathPoints[i]); } this.polygonClipperOffset.AddPath(points, jointStyle, endCapStyle); From 560c671d5e42cc78b8e7974e6c802bbd87d983cd Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Thu, 7 Sep 2023 16:50:50 +1000 Subject: [PATCH 03/15] Update test output --- .../ClipTests/Clip_offset_x-20_y-20.png | 4 ++-- .../Drawing/ClipTests/Clip_offset_x0_y0.png | 4 ++-- .../Drawing/ClipTests/Clip_offset_x20_y20.png | 4 ++-- .../Drawing/ClipTests/Clip_offset_x40_y60.png | 4 ++-- .../DrawBeziers_HotPink_A150_T5.png | 4 ++-- .../DrawBeziers_HotPink_A255_T5.png | 4 ++-- .../DrawBeziers_Red_A255_T3.png | 4 ++-- .../DrawBeziers_White_A255_T1.5.png | 4 ++-- .../DrawBeziers_White_A255_T15.png | 4 ++-- .../DrawComplexPolygon__Dashed.png | Bin 8328 -> 129 bytes .../DrawComplexPolygon__Overlap.png | Bin 6630 -> 129 bytes ...es_EndCapRound_Rgba32_Yellow_A(1)_T(5).png | 4 ++-- ...intStyleRound_Rgba32_Yellow_A(1)_T(10).png | 4 ++-- ...ntStyleSquare_Rgba32_Yellow_A(1)_T(10).png | 4 ++-- ...awLines_Simple_Bgr24_Yellow_A(1)_T(10).png | 4 ++-- ...Lines_Simple_Rgba32_White_A(0.6)_T(10).png | 4 ++-- ...wLines_Simple_Rgba32_White_A(1)_T(2.5).png | 4 ++-- ...ple_Rgba32_White_A(1)_T(5)_NoAntialias.png | 4 ++-- .../DrawPathTests/DrawPathClippedOnTop.png | 4 ++-- .../DrawPath_HotPink_A150_T5.png | 4 ++-- .../DrawPath_HotPink_A255_T5.png | 4 ++-- .../DrawPathTests/DrawPath_Red_A255_T3.png | 4 ++-- .../DrawPath_White_A255_T1.5.png | 4 ++-- .../DrawPathTests/DrawPath_White_A255_T15.png | 4 ++-- ...sformed_Rgba32_BasicTestPattern100x100.png | 4 ++-- ...oJson_Mississippi_Lines_PixelOffset(0).png | 4 ++-- ...on_Mississippi_Lines_PixelOffset(5500).png | 4 ++-- .../LargeGeoJson_States_Fill.png | Bin 372252 -> 131 bytes ...CircleOutsideBoundsDrawingArea_(0_-20).png | Bin 506 -> 128 bytes ...awCircleOutsideBoundsDrawingArea_(0_0).png | Bin 612 -> 128 bytes ...rcleOutsideBoundsDrawingArea_(110_-20).png | Bin 467 -> 128 bytes ...CircleOutsideBoundsDrawingArea_(110_0).png | Bin 573 -> 128 bytes ...wCircleOutsideBoundsDrawingArea_(99_0).png | Bin 608 -> 128 bytes .../FillPathTests/FillPathArcToAlternates.png | 4 ++-- .../FillPathTests/FillPathCanvasArcs.png | 4 ++-- .../Drawing/FillPathTests/FillPathSVGArcs.png | 4 ++-- .../FillPolygon_StarCircle.png | Bin 1062 -> 129 bytes ..._StarCircle_AllOperations_Intersection.png | 4 ++-- ...lPolygon_StarCircle_AllOperations_None.png | 4 ++-- ...verse(False)_IntersectionRule(EvenOdd).png | 4 ++-- ...verse(False)_IntersectionRule(Nonzero).png | Bin 2437 -> 129 bytes ...everse(True)_IntersectionRule(EvenOdd).png | 4 ++-- ...everse(True)_IntersectionRule(Nonzero).png | Bin 2439 -> 129 bytes ...ll_RegularPolygon_V(7)_R(80)_Ang(-180).png | Bin 2847 -> 129 bytes ...ExistingBackground_Rgba32_Blank200x200.png | Bin 1523 -> 129 bytes .../FilledBezier_Rgba32_Blank500x500.png | Bin 5585 -> 129 bytes ...lledPolygonOpacity_Rgba32_Blank500x500.png | Bin 2997 -> 129 bytes ...100_(0,0,0,255)_RichText-Path-(spiral).png | 4 ++-- ...0_(0,0,0,255)_RichText-Path-(triangle).png | 4 ++-- ...350_(0,0,0,255)_RichText-Path-(circle).png | 4 ++-- ...zontal_Rgba32_Blank100x100_type-spiral.png | 4 ++-- ...ntal_Rgba32_Blank120x120_type-triangle.png | 4 ++-- ...zontal_Rgba32_Blank350x350_type-circle.png | 4 ++-- ...ical_Rgba32_Blank250x250_type-triangle.png | 4 ++-- ...rtical_Rgba32_Blank350x350_type-circle.png | 4 ++-- ...wTextVerticalMixed_Rgba32_Blank500x400.png | 4 ++-- ...anDrawTextVertical_Rgba32_Blank500x400.png | 4 ++-- ...lTextVerticalMixed_Rgba32_Blank500x400.png | 4 ++-- ...anFillTextVertical_Rgba32_Blank500x400.png | 4 ++-- ...penSans-Regular.ttf)-S(32)-A(75)-Quic).png | 4 ++-- ...penSans-Regular.ttf)-S(40)-A(90)-Quic).png | 4 ++-- ...-Regular.ttf)-S(32)-A(75)-STR(1)-Quic).png | 4 ++-- ...-Regular.ttf)-S(40)-A(90)-STR(2)-Quic).png | 4 ++-- ...x200_(0,0,0,255)_RichText-Arabic-F(32).png | 4 ++-- ...x300_(0,0,0,255)_RichText-Arabic-F(40).png | 4 ++-- ...200_(0,0,0,255)_RichText-Rainbow-F(32).png | 4 ++-- ...300_(0,0,0,255)_RichText-Rainbow-F(40).png | 4 ++-- ...olid500x200_(0,0,0,255)_RichText-F(32).png | 4 ++-- ...olid500x300_(0,0,0,255)_RichText-F(40).png | 4 ++-- ...5,255,255,255)_ColorFontsEnabled-False.png | 4 ++-- ...55,255,255,255)_ColorFontsEnabled-True.png | 4 ++-- ..._Rgba32_Solid400x200_(255,255,255,255).png | 4 ++-- ..._OpenSans-Regular.ttf-50-Sphi-(150,50).png | 4 ++-- ...n_SixLaborsSampleAB.woff-50-ABAB-(0,0).png | 4 ++-- ...pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png | 4 ++-- ..._OpenSans-Regular.ttf-50-Sphi-(150,50).png | 4 ++-- ...n_SixLaborsSampleAB.woff-50-ABAB-(0,0).png | 4 ++-- ...pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png | 4 ++-- ...ntShapesAreRenderedCorrectly_LargeText.png | 4 ++-- ..._OpenSans-Regular.ttf-50-Sphi-(150,50).png | 4 ++-- ...5,255)_OpenSans-Regular.ttf-50-i-(0,0).png | 4 ++-- ...55)_OpenSans-Regular.ttf-20-Sphi-(0,0).png | 2 +- ...55)_OpenSans-Regular.ttf-50-Sphi-(0,0).png | 4 ++-- ...linespacing_1.5_linecount_3_wrap_False.png | 4 ++-- ..._linespacing_1.5_linecount_3_wrap_True.png | 4 ++-- ...g_linespacing_1_linecount_5_wrap_False.png | 4 ++-- ...ng_linespacing_1_linecount_5_wrap_True.png | 4 ++-- ...g_linespacing_2_linecount_2_wrap_False.png | 4 ++-- ...ng_linespacing_2_linecount_2_wrap_True.png | 4 ++-- ...egular.ttf)-S(20)-A(45)-Sphi-(200,200).png | 4 ++-- ...ans-Regular.ttf)-S(50)-A(45)-i-(25,25).png | 4 ++-- ...lar.ttf)-S(20)-A(0,-10)-Sphi-(200,200).png | 4 ++-- ...d_Rgba32_Solid400x75_(255,255,255,255).png | 4 ++-- ...erSvgPath_Rgba32_Blank110x50_type-wave.png | 4 ++-- ...derSvgPath_Rgba32_Blank110x70_type-zag.png | 4 ++-- ...SvgPath_Rgba32_Blank500x400_type-bumpy.png | 4 ++-- ..._Rgba32_Blank500x400_type-chopped_oval.png | 4 ++-- ...gPath_Rgba32_Blank500x400_type-pie_big.png | 4 ++-- ...ath_Rgba32_Blank500x400_type-pie_small.png | 4 ++-- 99 files changed, 167 insertions(+), 167 deletions(-) diff --git a/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x-20_y-20.png b/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x-20_y-20.png index 1d55c599e..cf094d08b 100644 --- a/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x-20_y-20.png +++ b/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x-20_y-20.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cba43d7b20b634630515c4be65b2e3adbfbfed0d824f649e166856abf385761c -size 4140 +oid sha256:2d438c75dff3f33b588dd4fccb0d1188b714aa88a6b3140ddef642780f47aec2 +size 4926 diff --git a/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x0_y0.png b/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x0_y0.png index cc0d01fcf..07cbfc4eb 100644 --- a/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x0_y0.png +++ b/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x0_y0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e2521a16b8378a6a9da1a1e2af9506c62a5f149c9a04f8f4fa0efcaa3030ed7e -size 4643 +oid sha256:2f41bc89141ae5adc18b2dd8b1625e38844853f81979efc85519b3f1fbba25d8 +size 5335 diff --git a/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x20_y20.png b/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x20_y20.png index 76c34f9d9..71e52e064 100644 --- a/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x20_y20.png +++ b/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x20_y20.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:141c0538433a547e09a34690915b1bd84fb2c35f8f71e39075cbcc2db8a12336 -size 4585 +oid sha256:d9dbe1f33a9dbf7e1fde89848f26fb77a61441b0078431d4d44d25a6d18f9a51 +size 5356 diff --git a/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x40_y60.png b/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x40_y60.png index d4e811f5e..b519d8555 100644 --- a/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x40_y60.png +++ b/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x40_y60.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a30ca888127436a977aef4672d5cc4af3e6fd636a05844fcc08430ccf7ebdd9 -size 4515 +oid sha256:509059e02a1ac42dc921303aed0086112f91847c336a4d17be3aad672f7cad6a +size 2310 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_HotPink_A150_T5.png b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_HotPink_A150_T5.png index 9a7d7ac04..eb6c2b80f 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_HotPink_A150_T5.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_HotPink_A150_T5.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1efde4790cdd3aa5ff66434881ad8df5e3025218fdea728da0f0ac810467e037 -size 4524 +oid sha256:791743eb1ae2969cd987a55634c55c62ebdceacb608575105246f2308276b05d +size 4437 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_HotPink_A255_T5.png b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_HotPink_A255_T5.png index e42f359be..8a42eea92 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_HotPink_A255_T5.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_HotPink_A255_T5.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c7ee0aed826a7509c54542ae642099c3a177118ebcdbc7bb6f284d063d43714e -size 8525 +oid sha256:f37cdb86cc194d269d0e9c5bdc8522a09486f3d10a2f773b79dbbff026b51bfc +size 8337 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_Red_A255_T3.png b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_Red_A255_T3.png index de2c975eb..c84c6bade 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_Red_A255_T3.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_Red_A255_T3.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7f87aaba20d7a47a71769f621bdd3e0301e0763e84c75f7fe1769386a7ea0f13 -size 4659 +oid sha256:06c90586c01682dea02eb48b045ff17f38c4713bd99d496a1992878726eba85a +size 4586 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_White_A255_T1.5.png b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_White_A255_T1.5.png index 01dfc2c27..88552efef 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_White_A255_T1.5.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_White_A255_T1.5.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:856bd9e4cb88d85284b8cbec4fdca18b93462f8b4617b0e1a94590ed0eb3fd30 -size 4659 +oid sha256:230e15d0f608928b2fb58ad49ba54d53212b7ced81371cbe6b03a72d4f4038be +size 4586 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_White_A255_T15.png b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_White_A255_T15.png index 01dfc2c27..88552efef 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_White_A255_T15.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_White_A255_T15.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:856bd9e4cb88d85284b8cbec4fdca18b93462f8b4617b0e1a94590ed0eb3fd30 -size 4659 +oid sha256:230e15d0f608928b2fb58ad49ba54d53212b7ced81371cbe6b03a72d4f4038be +size 4586 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawComplexPolygonTests/DrawComplexPolygon__Dashed.png b/tests/Images/ReferenceOutput/Drawing/DrawComplexPolygonTests/DrawComplexPolygon__Dashed.png index 546de6659da597484b940f144ee555cc8f977ee8..f75b4c9e845a17b4a03e32f1c407d89d2bb1cd7a 100644 GIT binary patch literal 129 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 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawComplexPolygonTests/DrawComplexPolygon__Overlap.png b/tests/Images/ReferenceOutput/Drawing/DrawComplexPolygonTests/DrawComplexPolygon__Overlap.png index 772c0376cd88beb0a083710608a692d849021b9e..c766d1e754c2730b8cafbd04f5c6dd12b2595a76 100644 GIT binary patch literal 129 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%0DkCo8Z%F$>uTRM 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𝔖&4^{?MX-Rr zXI+b6dZJ9#_c!z2Oj=UjlSKnIG2I&m~2Xy~3;Nlw_ zlanUQZNI6N$VNvbXdn41RIuoW!75kQ-j?YC-3y?6{ftJX6sQiCd5qLTS#dp&EYra4 zGm)Ok#lk@TpY2{V(jvI$?tsn}@c}7P*Y=Q+uUpo0o}k(4s&R=@Ct~2)=2+U$=$=x~ z{EG&7hta?e(`Aki)D8yZ5oa+roi6oxGf)-#YC5sNf}fpFTx?-bdG78|VYl+>rAcM37*C zbeW)R{U{hXv!C;P>VFn(K8v;L4m@_dnHj9R=jGHED4W8%^5V5X2n1+n2lohK;(F>e z%qIqpVj47GJeXx2zg_jc(aoxz4ek3KMC)ulzBg}42JbXzNldkT-fX{Ue<9qUFL)o= zf}yvgDxb1t@-N`;cr>nK4JBjt{QQmR2H6(~!b2cAU~h>^AoMGz>4ZRP^c@|qs6<%VS|)_P}& zYQ;T*7By;nb1WA01Z`PZ@Zv@!q*m5fsFpu8tPe`Q5asb`@TubAP!CRvmL({jQmsd zzCxP)Lcl_F3M_uu-h0bv+!0M@W|AkQxRd~d5#NUC0hl)X}}+C8n0Z|g

+/// RemoteExecutor can only execute static methods, which can only consume string arguments, +/// because data is being passed on command line interface. This utility allows serialization +/// of types to strings. +/// +internal class BasicSerializer : IXunitSerializationInfo +{ + private readonly Dictionary map = new(); + + public const char Separator = ':'; + + private string DumpToString(Type type) + { + using MemoryStream ms = new(); + using StreamWriter writer = new(ms); + writer.WriteLine(type.FullName); + foreach (KeyValuePair kv in this.map) + { + writer.WriteLine($"{kv.Key}{Separator}{kv.Value}"); + } + + writer.Flush(); + byte[] data = ms.ToArray(); + return Convert.ToBase64String(data); + } + + private Type LoadDump(string dump) + { + byte[] data = Convert.FromBase64String(dump); + + using MemoryStream ms = new(data); + using StreamReader reader = new(ms); + Type type = Type.GetType(reader.ReadLine()); + for (string s = reader.ReadLine(); s != null; s = reader.ReadLine()) + { + string[] kv = s.Split(Separator); + this.map[kv[0]] = kv[1]; + } + + return type; + } + + public static string Serialize(IXunitSerializable serializable) + { + BasicSerializer serializer = new(); + serializable.Serialize(serializer); + return serializer.DumpToString(serializable.GetType()); + } + + public static T Deserialize(string dump) + where T : IXunitSerializable + { + BasicSerializer serializer = new(); + Type type = serializer.LoadDump(dump); + + T result = (T)Activator.CreateInstance(type); + result.Deserialize(serializer); + return result; + } + + public void AddValue(string key, object value, Type type = null) + { + if (value == null) + { + return; + } + + type ??= value.GetType(); + + this.map[key] = TypeDescriptor.GetConverter(type).ConvertToInvariantString(value); + } + + public object GetValue(string key, Type type) + { + if (!this.map.TryGetValue(key, out string str)) + { + return type.IsValueType ? Activator.CreateInstance(type) : null; + } + + return TypeDescriptor.GetConverter(type).ConvertFromInvariantString(str); + } + + public T GetValue(string key) => (T)this.GetValue(key, typeof(T)); +} diff --git a/tests/ImageSharp.Drawing.Tests/TestUtilities/FeatureTesting/FeatureTestRunner.cs b/tests/ImageSharp.Drawing.Tests/TestUtilities/FeatureTesting/FeatureTestRunner.cs new file mode 100644 index 000000000..4b2d9a0ce --- /dev/null +++ b/tests/ImageSharp.Drawing.Tests/TestUtilities/FeatureTesting/FeatureTestRunner.cs @@ -0,0 +1,465 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +using System.Diagnostics; +using System.Globalization; +using Microsoft.DotNet.RemoteExecutor; +using Xunit.Abstractions; + +namespace SixLabors.ImageSharp.Drawing.Tests.TestUtilities; + +/// +/// Allows the testing against specific feature sets. +/// +public static class FeatureTestRunner +{ + private static readonly char[] SplitChars = { ',', ' ' }; + + /// + /// Allows the deserialization of parameters passed to the feature test. + /// + /// + /// This is required because does not allow + /// marshalling of fields so we cannot pass a wrapped + /// allowing automatic deserialization. + /// + /// + /// + /// The type to deserialize to. + /// The string value to deserialize. + /// The value. + public static T DeserializeForXUnit(string value) + where T : IXunitSerializable + => BasicSerializer.Deserialize(value); + + /// + /// Allows the deserialization of types implementing + /// passed to the feature test. + /// + /// The type of object to deserialize. + /// The string value to deserialize. + /// The value. + public static T Deserialize(string value) + where T : IConvertible + => (T)Convert.ChangeType(value, typeof(T), CultureInfo.InvariantCulture); + + /// + /// Runs the given test within an environment + /// where the given features. + /// + /// The test action to run. + /// The intrinsics features. + public static void RunWithHwIntrinsicsFeature( + Action action, + HwIntrinsics intrinsics) + { + if (!RemoteExecutor.IsSupported) + { + return; + } + + foreach (KeyValuePair intrinsic in intrinsics.ToFeatureKeyValueCollection()) + { + ProcessStartInfo processStartInfo = new(); + if (intrinsic.Key != HwIntrinsics.AllowAll) + { + processStartInfo.Environment[$"DOTNET_{intrinsic.Value}"] = "0"; + + RemoteExecutor.Invoke( + action, + new RemoteInvokeOptions + { + StartInfo = processStartInfo + }) + .Dispose(); + } + else + { + // Since we are running using the default architecture there is no + // point creating the overhead of running the action in a separate process. + action(); + } + } + } + + /// + /// Runs the given test within an environment + /// where the given features. + /// + /// + /// The test action to run. + /// The parameter passed will be a string representing the currently testing . + /// The intrinsics features. + public static void RunWithHwIntrinsicsFeature( + Action action, + HwIntrinsics intrinsics) + { + if (!RemoteExecutor.IsSupported) + { + return; + } + + foreach (KeyValuePair intrinsic in intrinsics.ToFeatureKeyValueCollection()) + { + ProcessStartInfo processStartInfo = new(); + if (intrinsic.Key != HwIntrinsics.AllowAll) + { + processStartInfo.Environment[$"COMPlus_{intrinsic.Value}"] = "0"; + + RemoteExecutor.Invoke( + action, + intrinsic.Key.ToString(), + new RemoteInvokeOptions + { + StartInfo = processStartInfo + }) + .Dispose(); + } + else + { + // Since we are running using the default architecture there is no + // point creating the overhead of running the action in a separate process. + action(intrinsic.Key.ToString()); + } + } + } + + /// + /// Runs the given test within an environment + /// where the given features. + /// + /// The type to deserialize to. + /// The test action to run. + /// The intrinsics features. + /// The value to pass as a parameter to the test action. + public static void RunWithHwIntrinsicsFeature( + Action action, + HwIntrinsics intrinsics, + T serializable) + where T : IXunitSerializable + { + if (!RemoteExecutor.IsSupported) + { + return; + } + + foreach (KeyValuePair intrinsic in intrinsics.ToFeatureKeyValueCollection()) + { + ProcessStartInfo processStartInfo = new(); + if (intrinsic.Key != HwIntrinsics.AllowAll) + { + processStartInfo.Environment[$"COMPlus_{intrinsic.Value}"] = "0"; + + RemoteExecutor.Invoke( + action, + BasicSerializer.Serialize(serializable), + new RemoteInvokeOptions + { + StartInfo = processStartInfo + }) + .Dispose(); + } + else + { + // Since we are running using the default architecture there is no + // point creating the overhead of running the action in a separate process. + action(BasicSerializer.Serialize(serializable)); + } + } + } + + /// + /// Runs the given test within an environment + /// where the given features. + /// + /// The type to deserialize to. + /// The test action to run. + /// The intrinsics features. + /// The value to pass as a parameter to the test action. + public static void RunWithHwIntrinsicsFeature( + Action action, + HwIntrinsics intrinsics, + T serializable) + where T : IXunitSerializable + { + if (!RemoteExecutor.IsSupported) + { + return; + } + + foreach (KeyValuePair intrinsic in intrinsics.ToFeatureKeyValueCollection()) + { + ProcessStartInfo processStartInfo = new(); + if (intrinsic.Key != HwIntrinsics.AllowAll) + { + processStartInfo.Environment[$"COMPlus_{intrinsic.Value}"] = "0"; + + RemoteExecutor.Invoke( + action, + BasicSerializer.Serialize(serializable), + intrinsic.Key.ToString(), + new RemoteInvokeOptions + { + StartInfo = processStartInfo + }) + .Dispose(); + } + else + { + // Since we are running using the default architecture there is no + // point creating the overhead of running the action in a separate process. + action(BasicSerializer.Serialize(serializable), intrinsic.Key.ToString()); + } + } + } + + /// + /// Runs the given test within an environment + /// where the given features. + /// + /// The first type to deserialize to. + /// The second type to deserialize to. + /// The test action to run. + /// The intrinsics features. + /// The value to pass as a parameter to the test action. + /// The second value to pass as a parameter to the test action. + public static void RunWithHwIntrinsicsFeature( + Action action, + HwIntrinsics intrinsics, + T arg1, + T2 arg2) + where T : IXunitSerializable + where T2 : IXunitSerializable + { + if (!RemoteExecutor.IsSupported) + { + return; + } + + foreach (KeyValuePair intrinsic in intrinsics.ToFeatureKeyValueCollection()) + { + ProcessStartInfo processStartInfo = new(); + if (intrinsic.Key != HwIntrinsics.AllowAll) + { + processStartInfo.Environment[$"COMPlus_{intrinsic.Value}"] = "0"; + + RemoteExecutor.Invoke( + action, + BasicSerializer.Serialize(arg1), + BasicSerializer.Serialize(arg2), + new RemoteInvokeOptions + { + StartInfo = processStartInfo + }) + .Dispose(); + } + else + { + // Since we are running using the default architecture there is no + // point creating the overhead of running the action in a separate process. + action(BasicSerializer.Serialize(arg1), BasicSerializer.Serialize(arg2)); + } + } + } + + /// + /// Runs the given test within an environment + /// where the given features. + /// + /// The type to deserialize to. + /// The test action to run. + /// The intrinsics features. + /// The value to pass as a parameter to the test action. + /// The second value to pass as a parameter to the test action. + public static void RunWithHwIntrinsicsFeature( + Action action, + HwIntrinsics intrinsics, + T arg1, + string arg2) + where T : IXunitSerializable + { + if (!RemoteExecutor.IsSupported) + { + return; + } + + foreach (KeyValuePair intrinsic in intrinsics.ToFeatureKeyValueCollection()) + { + ProcessStartInfo processStartInfo = new(); + if (intrinsic.Key != HwIntrinsics.AllowAll) + { + processStartInfo.Environment[$"COMPlus_{intrinsic.Value}"] = "0"; + + RemoteExecutor.Invoke( + action, + BasicSerializer.Serialize(arg1), + arg2, + new RemoteInvokeOptions + { + StartInfo = processStartInfo + }) + .Dispose(); + } + else + { + // Since we are running using the default architecture there is no + // point creating the overhead of running the action in a separate process. + action(BasicSerializer.Serialize(arg1), arg2); + } + } + } + + /// + /// Runs the given test within an environment + /// where the given features. + /// + /// The type to deserialize to. + /// The test action to run. + /// The value to pass as a parameter to the test action. + /// The intrinsics features. + public static void RunWithHwIntrinsicsFeature( + Action action, + T serializable, + HwIntrinsics intrinsics) + where T : IConvertible + { + if (!RemoteExecutor.IsSupported) + { + return; + } + + foreach (KeyValuePair intrinsic in intrinsics.ToFeatureKeyValueCollection()) + { + ProcessStartInfo processStartInfo = new(); + if (intrinsic.Key != HwIntrinsics.AllowAll) + { + processStartInfo.Environment[$"COMPlus_{intrinsic.Value}"] = "0"; + + RemoteExecutor.Invoke( + action, + serializable.ToString(), + new RemoteInvokeOptions + { + StartInfo = processStartInfo + }) + .Dispose(); + } + else + { + // Since we are running using the default architecture there is no + // point creating the overhead of running the action in a separate process. + action(serializable.ToString()); + } + } + } + + /// + /// Runs the given test within an environment + /// where the given features. + /// + /// The type to deserialize to. + /// The test action to run. + /// The value to pass as a parameter #0 to the test action. + /// The value to pass as a parameter #1 to the test action. + /// The intrinsics features. + public static void RunWithHwIntrinsicsFeature( + Action action, + T arg0, + T arg1, + HwIntrinsics intrinsics) + where T : IConvertible + { + if (!RemoteExecutor.IsSupported) + { + return; + } + + foreach (KeyValuePair intrinsic in intrinsics.ToFeatureKeyValueCollection()) + { + ProcessStartInfo processStartInfo = new(); + if (intrinsic.Key != HwIntrinsics.AllowAll) + { + processStartInfo.Environment[$"COMPlus_{intrinsic.Value}"] = "0"; + + RemoteExecutor.Invoke( + action, + arg0.ToString(), + arg1.ToString(), + new RemoteInvokeOptions + { + StartInfo = processStartInfo + }) + .Dispose(); + } + else + { + // Since we are running using the default architecture there is no + // point creating the overhead of running the action in a separate process. + action(arg0.ToString(), arg1.ToString()); + } + } + } + + internal static Dictionary ToFeatureKeyValueCollection(this HwIntrinsics intrinsics) + { + // Loop through and translate the given values into COMPlus equivalents + Dictionary features = new(); + foreach (string intrinsic in intrinsics.ToString("G").Split(SplitChars, StringSplitOptions.RemoveEmptyEntries)) + { + HwIntrinsics key = (HwIntrinsics)Enum.Parse(typeof(HwIntrinsics), intrinsic); + switch (intrinsic) + { + case nameof(HwIntrinsics.AllowAll): + + // Not a COMPlus value. We filter in calling method. + features.Add(key, nameof(HwIntrinsics.AllowAll)); + break; + + default: + features.Add(key, intrinsic.Replace("Disable", "Enable")); + break; + } + } + + return features; + } +} + +/// +/// See +/// +/// ends up impacting all SIMD support(including System.Numerics) +/// but not things like , , and . +/// +/// +[Flags] +#pragma warning disable RCS1135 // Declare enum member with zero value (when enum has FlagsAttribute). +public enum HwIntrinsics +#pragma warning restore RCS1135 // Declare enum member with zero value (when enum has FlagsAttribute). +{ + // Use flags so we can pass multiple values without using params. + // Don't base on 0 or use inverse for All as that doesn't translate to string values. + DisableHWIntrinsic = 1 << 0, + DisableSSE = 1 << 1, + DisableSSE2 = 1 << 2, + DisableAES = 1 << 3, + DisablePCLMULQDQ = 1 << 4, + DisableSSE3 = 1 << 5, + DisableSSSE3 = 1 << 6, + DisableSSE41 = 1 << 7, + DisableSSE42 = 1 << 8, + DisablePOPCNT = 1 << 9, + DisableAVX = 1 << 10, + DisableFMA = 1 << 11, + DisableAVX2 = 1 << 12, + DisableBMI1 = 1 << 13, + DisableBMI2 = 1 << 14, + DisableLZCNT = 1 << 15, + DisableArm64AdvSimd = 1 << 16, + DisableArm64Crc32 = 1 << 17, + DisableArm64Dp = 1 << 18, + DisableArm64Aes = 1 << 19, + DisableArm64Sha1 = 1 << 20, + DisableArm64Sha256 = 1 << 21, + AllowAll = 1 << 22 +} From d2d51a226b748cc200a2c3360fec1e3b83f9b639 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 8 Sep 2023 11:56:32 +1000 Subject: [PATCH 09/15] Revert previous test reference changes --- .../Drawing/ClipTests/Clip_offset_x-20_y-20.png | 4 ++-- .../ReferenceOutput/Drawing/ClipTests/Clip_offset_x0_y0.png | 4 ++-- .../ReferenceOutput/Drawing/ClipTests/Clip_offset_x20_y20.png | 4 ++-- .../ReferenceOutput/Drawing/ClipTests/Clip_offset_x40_y60.png | 4 ++-- .../Drawing/DrawBezierTests/DrawBeziers_HotPink_A150_T5.png | 4 ++-- .../Drawing/DrawBezierTests/DrawBeziers_HotPink_A255_T5.png | 4 ++-- .../Drawing/DrawBezierTests/DrawBeziers_Red_A255_T3.png | 4 ++-- .../Drawing/DrawBezierTests/DrawBeziers_White_A255_T1.5.png | 4 ++-- .../Drawing/DrawBezierTests/DrawBeziers_White_A255_T15.png | 4 ++-- .../DrawComplexPolygonTests/DrawComplexPolygon__Dashed.png | 4 ++-- .../DrawComplexPolygonTests/DrawComplexPolygon__Overlap.png | 4 ++-- .../DrawLines_EndCapRound_Rgba32_Yellow_A(1)_T(5).png | 4 ++-- .../DrawLines_JointStyleRound_Rgba32_Yellow_A(1)_T(10).png | 4 ++-- .../DrawLines_JointStyleSquare_Rgba32_Yellow_A(1)_T(10).png | 4 ++-- .../DrawLines_Simple_Bgr24_Yellow_A(1)_T(10).png | 4 ++-- .../DrawLines_Simple_Rgba32_White_A(0.6)_T(10).png | 4 ++-- .../DrawLines_Simple_Rgba32_White_A(1)_T(2.5).png | 4 ++-- .../DrawLines_Simple_Rgba32_White_A(1)_T(5)_NoAntialias.png | 4 ++-- .../Drawing/DrawPathTests/DrawPathClippedOnTop.png | 4 ++-- .../Drawing/DrawPathTests/DrawPath_HotPink_A150_T5.png | 4 ++-- .../Drawing/DrawPathTests/DrawPath_HotPink_A255_T5.png | 4 ++-- .../Drawing/DrawPathTests/DrawPath_Red_A255_T3.png | 4 ++-- .../Drawing/DrawPathTests/DrawPath_White_A255_T1.5.png | 4 ++-- .../Drawing/DrawPathTests/DrawPath_White_A255_T15.png | 4 ++-- ...ularPolygon_Transformed_Rgba32_BasicTestPattern100x100.png | 4 ++-- .../LargeGeoJson_Mississippi_Lines_PixelOffset(0).png | 4 ++-- .../LargeGeoJson_Mississippi_Lines_PixelOffset(5500).png | 4 ++-- .../DrawingRobustnessTests/LargeGeoJson_States_Fill.png | 4 ++-- .../DrawCircleOutsideBoundsDrawingArea_(0_-20).png | 4 ++-- .../DrawCircleOutsideBoundsDrawingArea_(0_0).png | 4 ++-- .../DrawCircleOutsideBoundsDrawingArea_(110_-20).png | 4 ++-- .../DrawCircleOutsideBoundsDrawingArea_(110_0).png | 4 ++-- .../DrawCircleOutsideBoundsDrawingArea_(99_0).png | 4 ++-- .../Drawing/FillPathTests/FillPathArcToAlternates.png | 4 ++-- .../Drawing/FillPathTests/FillPathCanvasArcs.png | 4 ++-- .../ReferenceOutput/Drawing/FillPathTests/FillPathSVGArcs.png | 4 ++-- .../Drawing/FillPolygonTests/FillPolygon_StarCircle.png | 4 ++-- .../FillPolygon_StarCircle_AllOperations_Intersection.png | 4 ++-- .../FillPolygon_StarCircle_AllOperations_None.png | 4 ++-- ...llipsePolygon_Reverse(False)_IntersectionRule(EvenOdd).png | 4 ++-- ...llipsePolygon_Reverse(False)_IntersectionRule(Nonzero).png | 4 ++-- ...EllipsePolygon_Reverse(True)_IntersectionRule(EvenOdd).png | 4 ++-- ...EllipsePolygon_Reverse(True)_IntersectionRule(Nonzero).png | 4 ++-- .../Fill_RegularPolygon_V(7)_R(80)_Ang(-180).png | 4 ++-- ...thTransparencyOnExistingBackground_Rgba32_Blank200x200.png | 4 ++-- .../SolidBezierTests/FilledBezier_Rgba32_Blank500x500.png | 4 ++-- .../OverlayByFilledPolygonOpacity_Rgba32_Blank500x500.png | 4 ++-- ...zontal_Solid100x100_(0,0,0,255)_RichText-Path-(spiral).png | 4 ++-- ...ntal_Solid120x120_(0,0,0,255)_RichText-Path-(triangle).png | 4 ++-- ...zontal_Solid350x350_(0,0,0,255)_RichText-Path-(circle).png | 4 ++-- ...extAlongPathHorizontal_Rgba32_Blank100x100_type-spiral.png | 4 ++-- ...tAlongPathHorizontal_Rgba32_Blank120x120_type-triangle.png | 4 ++-- ...extAlongPathHorizontal_Rgba32_Blank350x350_type-circle.png | 4 ++-- ...extAlongPathVertical_Rgba32_Blank250x250_type-triangle.png | 4 ++-- ...wTextAlongPathVertical_Rgba32_Blank350x350_type-circle.png | 4 ++-- .../CanDrawTextVerticalMixed_Rgba32_Blank500x400.png | 4 ++-- .../CanDrawTextVertical_Rgba32_Blank500x400.png | 4 ++-- .../CanFillTextVerticalMixed_Rgba32_Blank500x400.png | 4 ++-- .../CanFillTextVertical_Rgba32_Blank500x400.png | 4 ++-- ...255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-Quic).png | 4 ++-- ...255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-Quic).png | 4 ++-- ...,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-STR(1)-Quic).png | 4 ++-- ...,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-STR(2)-Quic).png | 4 ++-- ...tArabic_Solid500x200_(0,0,0,255)_RichText-Arabic-F(32).png | 4 ++-- ...tArabic_Solid500x300_(0,0,0,255)_RichText-Arabic-F(40).png | 4 ++-- ...ainbow_Solid500x200_(0,0,0,255)_RichText-Rainbow-F(32).png | 4 ++-- ...ainbow_Solid500x300_(0,0,0,255)_RichText-Rainbow-F(40).png | 4 ++-- .../DrawRichText_Solid500x200_(0,0,0,255)_RichText-F(32).png | 4 ++-- .../DrawRichText_Solid500x300_(0,0,0,255)_RichText-F(40).png | 4 ++-- ...olid1276x336_(255,255,255,255)_ColorFontsEnabled-False.png | 4 ++-- ...Solid1276x336_(255,255,255,255)_ColorFontsEnabled-True.png | 4 ++-- ...ackFontRendering_Rgba32_Solid400x200_(255,255,255,255).png | 4 ++-- ...255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png | 4 ++-- ...,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png | 4 ++-- ...55,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png | 4 ++-- ...255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png | 4 ++-- ...,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png | 4 ++-- ...55,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png | 4 ++-- .../FontShapesAreRenderedCorrectly_LargeText.png | 4 ++-- ...255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(150,50).png | 4 ++-- ...0x50_(255,255,255,255)_OpenSans-Regular.ttf-50-i-(0,0).png | 4 ++-- ...5_(255,255,255,255)_OpenSans-Regular.ttf-20-Sphi-(0,0).png | 2 +- ...0_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(0,0).png | 4 ++-- ...WithLineSpacing_linespacing_1.5_linecount_3_wrap_False.png | 4 ++-- ..._WithLineSpacing_linespacing_1.5_linecount_3_wrap_True.png | 4 ++-- ...y_WithLineSpacing_linespacing_1_linecount_5_wrap_False.png | 4 ++-- ...ly_WithLineSpacing_linespacing_1_linecount_5_wrap_True.png | 4 ++-- ...y_WithLineSpacing_linespacing_2_linecount_2_wrap_False.png | 4 ++-- ...ly_WithLineSpacing_linespacing_2_linecount_2_wrap_True.png | 4 ++-- ...55)_F(OpenSans-Regular.ttf)-S(20)-A(45)-Sphi-(200,200).png | 4 ++-- ...255,255)_F(OpenSans-Regular.ttf)-S(50)-A(45)-i-(25,25).png | 4 ++-- ..._F(OpenSans-Regular.ttf)-S(20)-A(0,-10)-Sphi-(200,200).png | 4 ++-- ...singIsAntialiased_Rgba32_Solid400x75_(255,255,255,255).png | 4 ++-- .../SvgPath/RenderSvgPath_Rgba32_Blank110x50_type-wave.png | 4 ++-- .../SvgPath/RenderSvgPath_Rgba32_Blank110x70_type-zag.png | 4 ++-- .../SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-bumpy.png | 4 ++-- .../RenderSvgPath_Rgba32_Blank500x400_type-chopped_oval.png | 4 ++-- .../RenderSvgPath_Rgba32_Blank500x400_type-pie_big.png | 4 ++-- .../RenderSvgPath_Rgba32_Blank500x400_type-pie_small.png | 4 ++-- 99 files changed, 197 insertions(+), 197 deletions(-) diff --git a/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x-20_y-20.png b/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x-20_y-20.png index cf094d08b..1d55c599e 100644 --- a/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x-20_y-20.png +++ b/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x-20_y-20.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d438c75dff3f33b588dd4fccb0d1188b714aa88a6b3140ddef642780f47aec2 -size 4926 +oid sha256:cba43d7b20b634630515c4be65b2e3adbfbfed0d824f649e166856abf385761c +size 4140 diff --git a/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x0_y0.png b/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x0_y0.png index 07cbfc4eb..cc0d01fcf 100644 --- a/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x0_y0.png +++ b/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x0_y0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f41bc89141ae5adc18b2dd8b1625e38844853f81979efc85519b3f1fbba25d8 -size 5335 +oid sha256:e2521a16b8378a6a9da1a1e2af9506c62a5f149c9a04f8f4fa0efcaa3030ed7e +size 4643 diff --git a/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x20_y20.png b/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x20_y20.png index 71e52e064..76c34f9d9 100644 --- a/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x20_y20.png +++ b/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x20_y20.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d9dbe1f33a9dbf7e1fde89848f26fb77a61441b0078431d4d44d25a6d18f9a51 -size 5356 +oid sha256:141c0538433a547e09a34690915b1bd84fb2c35f8f71e39075cbcc2db8a12336 +size 4585 diff --git a/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x40_y60.png b/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x40_y60.png index b519d8555..d4e811f5e 100644 --- a/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x40_y60.png +++ b/tests/Images/ReferenceOutput/Drawing/ClipTests/Clip_offset_x40_y60.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:509059e02a1ac42dc921303aed0086112f91847c336a4d17be3aad672f7cad6a -size 2310 +oid sha256:4a30ca888127436a977aef4672d5cc4af3e6fd636a05844fcc08430ccf7ebdd9 +size 4515 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_HotPink_A150_T5.png b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_HotPink_A150_T5.png index eb6c2b80f..9a7d7ac04 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_HotPink_A150_T5.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_HotPink_A150_T5.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:791743eb1ae2969cd987a55634c55c62ebdceacb608575105246f2308276b05d -size 4437 +oid sha256:1efde4790cdd3aa5ff66434881ad8df5e3025218fdea728da0f0ac810467e037 +size 4524 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_HotPink_A255_T5.png b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_HotPink_A255_T5.png index 8a42eea92..e42f359be 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_HotPink_A255_T5.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_HotPink_A255_T5.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f37cdb86cc194d269d0e9c5bdc8522a09486f3d10a2f773b79dbbff026b51bfc -size 8337 +oid sha256:c7ee0aed826a7509c54542ae642099c3a177118ebcdbc7bb6f284d063d43714e +size 8525 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_Red_A255_T3.png b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_Red_A255_T3.png index c84c6bade..de2c975eb 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_Red_A255_T3.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_Red_A255_T3.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:06c90586c01682dea02eb48b045ff17f38c4713bd99d496a1992878726eba85a -size 4586 +oid sha256:7f87aaba20d7a47a71769f621bdd3e0301e0763e84c75f7fe1769386a7ea0f13 +size 4659 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_White_A255_T1.5.png b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_White_A255_T1.5.png index 88552efef..01dfc2c27 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_White_A255_T1.5.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_White_A255_T1.5.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:230e15d0f608928b2fb58ad49ba54d53212b7ced81371cbe6b03a72d4f4038be -size 4586 +oid sha256:856bd9e4cb88d85284b8cbec4fdca18b93462f8b4617b0e1a94590ed0eb3fd30 +size 4659 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_White_A255_T15.png b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_White_A255_T15.png index 88552efef..01dfc2c27 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_White_A255_T15.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawBezierTests/DrawBeziers_White_A255_T15.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:230e15d0f608928b2fb58ad49ba54d53212b7ced81371cbe6b03a72d4f4038be -size 4586 +oid sha256:856bd9e4cb88d85284b8cbec4fdca18b93462f8b4617b0e1a94590ed0eb3fd30 +size 4659 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawComplexPolygonTests/DrawComplexPolygon__Dashed.png b/tests/Images/ReferenceOutput/Drawing/DrawComplexPolygonTests/DrawComplexPolygon__Dashed.png index f75b4c9e8..844faa763 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawComplexPolygonTests/DrawComplexPolygon__Dashed.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawComplexPolygonTests/DrawComplexPolygon__Dashed.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dbc6e97cd1f0da9557c13963950622e8a0405a1760ca7f5b034db16e7cdfdca1 -size 9448 +oid sha256:7a1f23951b7043a22968401cd9d01062c140a3f9bb24e11a90bf1037b08266ec +size 8328 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawComplexPolygonTests/DrawComplexPolygon__Overlap.png b/tests/Images/ReferenceOutput/Drawing/DrawComplexPolygonTests/DrawComplexPolygon__Overlap.png index c766d1e75..30168925c 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawComplexPolygonTests/DrawComplexPolygon__Overlap.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawComplexPolygonTests/DrawComplexPolygon__Overlap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6616f4ddfb086129d6dca6a31821ec356cc427fcf4c909d6f4ba2d2d78ecb7b5 -size 7295 +oid sha256:ad72067bee572c9dc977a5afaa0ad540792bf7b59dcb1197ae02dc660356a016 +size 6630 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_EndCapRound_Rgba32_Yellow_A(1)_T(5).png b/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_EndCapRound_Rgba32_Yellow_A(1)_T(5).png index 987a43e5d..afa346fd2 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_EndCapRound_Rgba32_Yellow_A(1)_T(5).png +++ b/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_EndCapRound_Rgba32_Yellow_A(1)_T(5).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:193b0e30fa247325bf63f8bc0aef072bd8f82425d3b46f12d144f998442f2d1a -size 4960 +oid sha256:6b5d50f6800d646d4a3049a5a3e49500857bcb7b4debc457c58f69b3cef3e0bf +size 5190 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_JointStyleRound_Rgba32_Yellow_A(1)_T(10).png b/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_JointStyleRound_Rgba32_Yellow_A(1)_T(10).png index de7359eb5..54607e34c 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_JointStyleRound_Rgba32_Yellow_A(1)_T(10).png +++ b/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_JointStyleRound_Rgba32_Yellow_A(1)_T(10).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7980a5b586aebf3538695bd4256fd07e728e56f233c25c9ef751dea5a866fe7d -size 2699 +oid sha256:2bc69286a3fdb525f08f3ef00ef52c62067cc02b9f1c5dc523df714e117ef2e6 +size 2893 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_JointStyleSquare_Rgba32_Yellow_A(1)_T(10).png b/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_JointStyleSquare_Rgba32_Yellow_A(1)_T(10).png index 2b7106a94..6b1c31e14 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_JointStyleSquare_Rgba32_Yellow_A(1)_T(10).png +++ b/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_JointStyleSquare_Rgba32_Yellow_A(1)_T(10).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d59ae42e1ea690f5d67e68187a44d3a1952c4aa88ba2d966b091d86d5243d40 -size 3621 +oid sha256:f32f713d2ef825254c3e2c8fbd5b019ed2f51f8f7512ff8db332fc9ff7e29eec +size 4211 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_Simple_Bgr24_Yellow_A(1)_T(10).png b/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_Simple_Bgr24_Yellow_A(1)_T(10).png index f30e93b70..95d84f2bc 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_Simple_Bgr24_Yellow_A(1)_T(10).png +++ b/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_Simple_Bgr24_Yellow_A(1)_T(10).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f170b571ab5c420efe6d02d9b73b08067ca8cd2d2e05b867cc302a2930ef2fe -size 3369 +oid sha256:516f7f97c363270fc47289d95a9e1defeba97cdd6af1c7d1af07fdc3e37b2b04 +size 3880 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_Simple_Rgba32_White_A(0.6)_T(10).png b/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_Simple_Rgba32_White_A(0.6)_T(10).png index 92fe53a5b..92614bdfd 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_Simple_Rgba32_White_A(0.6)_T(10).png +++ b/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_Simple_Rgba32_White_A(0.6)_T(10).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e6c7df240069d0e59cb396d01b3c6e083bf6227cdf8ce2117631693e11e47557 -size 2908 +oid sha256:f05741f690a2f3eb52326d5f8d4324d7c2ba16b3c10d36c2f9047efdf2e7350f +size 3088 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_Simple_Rgba32_White_A(1)_T(2.5).png b/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_Simple_Rgba32_White_A(1)_T(2.5).png index 675540bfe..d2fbc7b65 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_Simple_Rgba32_White_A(1)_T(2.5).png +++ b/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_Simple_Rgba32_White_A(1)_T(2.5).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:425a7137df3da31c8c010c44b6535ba8086e761c0782a4397b68b28f92ee5444 -size 4456 +oid sha256:bdbce31f53f92a9babc9a44cd85f15e944e2aa39422aab8654c2f53b6bc76f53 +size 4405 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_Simple_Rgba32_White_A(1)_T(5)_NoAntialias.png b/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_Simple_Rgba32_White_A(1)_T(5)_NoAntialias.png index 43045aa2e..3a1187d21 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_Simple_Rgba32_White_A(1)_T(5)_NoAntialias.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_Simple_Rgba32_White_A(1)_T(5)_NoAntialias.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25294cfe0955e26916abebe30cca340d0811d159fc6a025b293319bedbb09446 -size 1065 +oid sha256:7ec0f8f9c001aa41599ce5eca70e3e27dcec627aebc0b3c059a07463f7d0a99f +size 1339 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPathClippedOnTop.png b/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPathClippedOnTop.png index 8ce58e21e..7e4f741f1 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPathClippedOnTop.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPathClippedOnTop.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f3c4594300c12674f0b7bd6e9854a21ac27c56e452fa1b5d273fc307c1ec88f -size 225 +oid sha256:745060dd95dbe2d6f8498c5e0e2ae84e9dc1e252a25d97ed58ebebd07a1ad5fc +size 353 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_HotPink_A150_T5.png b/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_HotPink_A150_T5.png index bf65d81a4..54057f0fd 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_HotPink_A150_T5.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_HotPink_A150_T5.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c9174fb1e4d57df819a4b7d8b451a801062a7bd7196b9dc49a392a1455b008aa -size 8205 +oid sha256:8a5a8f9a0b5733529187c97c3d06702266597d9b6f9148da9db0a5eefd0f3c30 +size 8290 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_HotPink_A255_T5.png b/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_HotPink_A255_T5.png index 675da64cc..da36bd506 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_HotPink_A255_T5.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_HotPink_A255_T5.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25b5c5463ff103e2f3b36acb05d5557333cc6757522eb30eec21158f9c31b2c9 -size 16071 +oid sha256:fc0996b9a33fd74ef317a3f1f8499941c30267d79f1e8e8c0cf54ebc18d42d9e +size 16201 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_Red_A255_T3.png b/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_Red_A255_T3.png index 647efc2af..756107a90 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_Red_A255_T3.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_Red_A255_T3.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30ad3cd4316fd0334989a0ded962543ae2ac148564e85278dacc1755fb94824c -size 15428 +oid sha256:42441cfe220938a81611a18a6a7788a484dd9e6616136b4a1d241f33d63aab03 +size 8483 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_White_A255_T1.5.png b/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_White_A255_T1.5.png index aa664a635..5235b5f2a 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_White_A255_T1.5.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_White_A255_T1.5.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4fc87b59dc865eb8221d377a77787360bf407743709087370611d6291da696fa -size 7810 +oid sha256:11703d7379c3c022ee193b63924e753cabaa8d0ed92efed707ad5dce56a3c511 +size 7830 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_White_A255_T15.png b/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_White_A255_T15.png index 9504da032..ad5f2d365 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_White_A255_T15.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawPathTests/DrawPath_White_A255_T15.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c26235563189657f5cebe4b0de52d0671d98641424bd267a348eaaa5065cf7e -size 8267 +oid sha256:0c5d8aee369176c3685f0b5cf0f19dd91c27df467ecf615fc33ff53f121126a9 +size 8260 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawPolygonTests/DrawRectangularPolygon_Transformed_Rgba32_BasicTestPattern100x100.png b/tests/Images/ReferenceOutput/Drawing/DrawPolygonTests/DrawRectangularPolygon_Transformed_Rgba32_BasicTestPattern100x100.png index ec8451d07..1dbb35ff8 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawPolygonTests/DrawRectangularPolygon_Transformed_Rgba32_BasicTestPattern100x100.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawPolygonTests/DrawRectangularPolygon_Transformed_Rgba32_BasicTestPattern100x100.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fd3b2f9a0192049a4dbd94d55d8e68e58939e423c41a6b1b60f8dd303547b444 -size 1193 +oid sha256:92a027397d64aaf52fe92ae6ad42da490dd8602ea6ea4259a06b82903abcd0b3 +size 1421 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_Mississippi_Lines_PixelOffset(0).png b/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_Mississippi_Lines_PixelOffset(0).png index 5c2a0a546..71a0e7ab1 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_Mississippi_Lines_PixelOffset(0).png +++ b/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_Mississippi_Lines_PixelOffset(0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:69b9a8fc1d8d8621aeb1e38691977a3e17ef26cdc319eca39f115a5e87fa9447 -size 4358 +oid sha256:40bfcd17e14f0e65c9fab7242e4c36cdb57d9ba9392e49efaad3b95b1a913dbd +size 4427 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_Mississippi_Lines_PixelOffset(5500).png b/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_Mississippi_Lines_PixelOffset(5500).png index d9c6bb9d5..eec5b52d9 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_Mississippi_Lines_PixelOffset(5500).png +++ b/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_Mississippi_Lines_PixelOffset(5500).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:901b1508f8c8f030c7de980880d448fd68a73303fa6b376d48a9ee3c85994795 -size 40916 +oid sha256:52b926fd8113abc40641fcb3523891dab877f723e0f60a92d5b4f3dc05b50937 +size 41045 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_States_Fill.png b/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_States_Fill.png index 8263dcdfc..0617cbf34 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_States_Fill.png +++ b/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_States_Fill.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0c84cc117210f6859b995b04b532dff55d34f5091b87ab4f6660424290ffd8ce -size 393369 +oid sha256:e5219b39069d18fad9d964acf32c9e1cd3eeec83d39c9ffd6cd11f927111e739 +size 372252 diff --git a/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(0_-20).png b/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(0_-20).png index f92acad02..6fa17f8a3 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(0_-20).png +++ b/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(0_-20).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e64a412428d5d2d0327e7af38b5ddff1336bdc9d4d01b69730f3f920b93a721d -size 482 +oid sha256:5635388f431026b7a5d4b2f760ffe74a767d5d9d74fa88b400d4912add661bf0 +size 506 diff --git a/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(0_0).png b/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(0_0).png index 78100bc57..f6b0dc61a 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(0_0).png +++ b/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(0_0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1e8704061a178098aa35e4f02dd0b1ebebe667f392ab077b622966e4de991c8 -size 573 +oid sha256:2b5901e7823be8e7b893c94820a618cdd7c3c10b0cbc7577658b9eb7bb1bcc44 +size 612 diff --git a/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(110_-20).png b/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(110_-20).png index d35eaba19..77568a1ae 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(110_-20).png +++ b/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(110_-20).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35c1e892e4f461fdf01c71581eafd5aff3b2408222fef6bbe78e049d7c2621e5 -size 397 +oid sha256:7ad3c6ae6438196ac4bc7552aa09ef16c2580d469416f4434e4c73ddd08ae5e6 +size 467 diff --git a/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(110_0).png b/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(110_0).png index abde32b56..67cd84f7a 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(110_0).png +++ b/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(110_0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a318a465d186427566ad25b0db8eb9bb06eb54635c937f000423cea34dd9ca0f -size 507 +oid sha256:7bfebd42e4bb1c79bb4866a3414bedc54642fdb2a21b33ff14071259a9abc6c3 +size 573 diff --git a/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(99_0).png b/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(99_0).png index ab9b3f10a..2e2028abc 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(99_0).png +++ b/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(99_0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c88e9ea1bfabba2533477f84c96b7b50dfe61c4e414564eed531f149ae27b389 -size 533 +oid sha256:730f6a6a54fe58275f3dc7f97e4e66e05b00ee395ff4f06b8c2609b71f954804 +size 608 diff --git a/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathArcToAlternates.png b/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathArcToAlternates.png index 312cf978f..59cbd3a2f 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathArcToAlternates.png +++ b/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathArcToAlternates.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07b7a9367c49f2f7ad17706dbdc3bccde45b44d81b5638f83df61ba3b76ecc16 -size 1833 +oid sha256:b66233cbe8fed9cc0c9fea624d0e0b64e3fbc0563aa17fd68cdf658c8c06906b +size 4693 diff --git a/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathCanvasArcs.png b/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathCanvasArcs.png index 373b6dff6..4defbf480 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathCanvasArcs.png +++ b/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathCanvasArcs.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e62f136663caf5602d0f57cbcabb3a335f59b39c6119d5265bb5bfe80b0480b3 -size 1740 +oid sha256:c512a34849be87435321ccc0bca8752e2a15703b08acf5ea5f12e2eeda248b91 +size 1923 diff --git a/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathSVGArcs.png b/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathSVGArcs.png index ce908ec03..6b22d53c2 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathSVGArcs.png +++ b/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathSVGArcs.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab59a643511ca3cab15c2f386583352da265d9807362a5a80e456cddd8e92762 -size 4152 +oid sha256:36b7dd7a3a7552826f80263cba1dd504f740ce456b8e6aca11a81dcf40667566 +size 4910 diff --git a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/FillPolygon_StarCircle.png b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/FillPolygon_StarCircle.png index 558b9386b..1175a7358 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/FillPolygon_StarCircle.png +++ b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/FillPolygon_StarCircle.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d623b83f89ca55428289fe62632528ee7abe3e9faf4261cec8dffa876f44a215 -size 1028 +oid sha256:4f8a1ca85aef95cba5fa7c6d1240badccf8b7e68e9460a81cab80bf31b38c8d1 +size 1062 diff --git a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/FillPolygon_StarCircle_AllOperations_Intersection.png b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/FillPolygon_StarCircle_AllOperations_Intersection.png index b1072bb22..d553e3e68 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/FillPolygon_StarCircle_AllOperations_Intersection.png +++ b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/FillPolygon_StarCircle_AllOperations_Intersection.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f1dcbb3fc3efd70621daad416869a9aceda11c0b1e676307b31945f40ebc138 -size 3543 +oid sha256:4781be479b3feb7d0cfbe6ac39efc9f3b4524142f77aa901ea2182a35220de9c +size 2796 diff --git a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/FillPolygon_StarCircle_AllOperations_None.png b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/FillPolygon_StarCircle_AllOperations_None.png index deeafe8c1..8a7568536 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/FillPolygon_StarCircle_AllOperations_None.png +++ b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/FillPolygon_StarCircle_AllOperations_None.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b57d9c33ddb404b5dc8447070dc5e8b6ea1988faee6e85458026990517eb0b3 -size 3134 +oid sha256:31e1a9ddb69387f586bafd7d53a75df46103b3f724649b69ab24259cbe8df148 +size 2094 diff --git a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_EllipsePolygon_Reverse(False)_IntersectionRule(EvenOdd).png b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_EllipsePolygon_Reverse(False)_IntersectionRule(EvenOdd).png index 86589a6e3..91eb354b7 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_EllipsePolygon_Reverse(False)_IntersectionRule(EvenOdd).png +++ b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_EllipsePolygon_Reverse(False)_IntersectionRule(EvenOdd).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a0d22a0737b798ff114c07b10978f2f39f2db7b202a9dfcf0f9e7a32b22d5029 -size 2633 +oid sha256:8a6709fb7890158006517a3b46cf40077f5a96145252b2a5d8c022a467aa1cdb +size 2437 diff --git a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_EllipsePolygon_Reverse(False)_IntersectionRule(Nonzero).png b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_EllipsePolygon_Reverse(False)_IntersectionRule(Nonzero).png index 86589a6e3..91eb354b7 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_EllipsePolygon_Reverse(False)_IntersectionRule(Nonzero).png +++ b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_EllipsePolygon_Reverse(False)_IntersectionRule(Nonzero).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a0d22a0737b798ff114c07b10978f2f39f2db7b202a9dfcf0f9e7a32b22d5029 -size 2633 +oid sha256:8a6709fb7890158006517a3b46cf40077f5a96145252b2a5d8c022a467aa1cdb +size 2437 diff --git a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_EllipsePolygon_Reverse(True)_IntersectionRule(EvenOdd).png b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_EllipsePolygon_Reverse(True)_IntersectionRule(EvenOdd).png index 26ab0d0fa..c279180c1 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_EllipsePolygon_Reverse(True)_IntersectionRule(EvenOdd).png +++ b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_EllipsePolygon_Reverse(True)_IntersectionRule(EvenOdd).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a2501ff0ba92950ab068b39e3197da3a9ad7b15478de357467b8e9c507bff28 -size 2645 +oid sha256:2973cdddb8623bc94097b42c279311df7d7f20f2b1e0a4c6eeb9c891fae0979d +size 2439 diff --git a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_EllipsePolygon_Reverse(True)_IntersectionRule(Nonzero).png b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_EllipsePolygon_Reverse(True)_IntersectionRule(Nonzero).png index 3c4db50d4..c279180c1 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_EllipsePolygon_Reverse(True)_IntersectionRule(Nonzero).png +++ b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_EllipsePolygon_Reverse(True)_IntersectionRule(Nonzero).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d525d705ff3eeb08cc100a4299358f540fbdfbc44146612499c3ef48aa7cb02e -size 2645 +oid sha256:2973cdddb8623bc94097b42c279311df7d7f20f2b1e0a4c6eeb9c891fae0979d +size 2439 diff --git a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_RegularPolygon_V(7)_R(80)_Ang(-180).png b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_RegularPolygon_V(7)_R(80)_Ang(-180).png index 92a187c7f..ebbb4aa53 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_RegularPolygon_V(7)_R(80)_Ang(-180).png +++ b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_RegularPolygon_V(7)_R(80)_Ang(-180).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:84454e5e9262f0f28499289530ad8080153f93ec7163459ca8a597bedc4916ee -size 3317 +oid sha256:52db1c3be6431ea2698325cc96e80a5d10a2e4f863923e29fd41cd9fabc8e43a +size 2847 diff --git a/tests/Images/ReferenceOutput/Drawing/GradientBrushes/FillLinearGradientBrushTests/GradientsWithTransparencyOnExistingBackground_Rgba32_Blank200x200.png b/tests/Images/ReferenceOutput/Drawing/GradientBrushes/FillLinearGradientBrushTests/GradientsWithTransparencyOnExistingBackground_Rgba32_Blank200x200.png index c148e1749..747422fc7 100644 --- a/tests/Images/ReferenceOutput/Drawing/GradientBrushes/FillLinearGradientBrushTests/GradientsWithTransparencyOnExistingBackground_Rgba32_Blank200x200.png +++ b/tests/Images/ReferenceOutput/Drawing/GradientBrushes/FillLinearGradientBrushTests/GradientsWithTransparencyOnExistingBackground_Rgba32_Blank200x200.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ded9796fd7ec977d8efe901624f73ecc51d33a8bd4b26a3a054e53fa31f8979 -size 1126 +oid sha256:f0dd9159f91297b0bbaefef564b21b3b4242dc6d7d21c0f8b81c50fdd4170a72 +size 1523 diff --git a/tests/Images/ReferenceOutput/Drawing/SolidBezierTests/FilledBezier_Rgba32_Blank500x500.png b/tests/Images/ReferenceOutput/Drawing/SolidBezierTests/FilledBezier_Rgba32_Blank500x500.png index 8fd9f9f70..5dd5b156d 100644 --- a/tests/Images/ReferenceOutput/Drawing/SolidBezierTests/FilledBezier_Rgba32_Blank500x500.png +++ b/tests/Images/ReferenceOutput/Drawing/SolidBezierTests/FilledBezier_Rgba32_Blank500x500.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2411f3f777ff83a726780f2f9315b8fcd60b4b45b2116d1d5b1af9b3aa9c1d98 -size 6052 +oid sha256:f44cc6345363402356c67b19eda8f8279d0481975e5f88e0ce86749df907e72d +size 5585 diff --git a/tests/Images/ReferenceOutput/Drawing/SolidBezierTests/OverlayByFilledPolygonOpacity_Rgba32_Blank500x500.png b/tests/Images/ReferenceOutput/Drawing/SolidBezierTests/OverlayByFilledPolygonOpacity_Rgba32_Blank500x500.png index 6ec97c493..571db9715 100644 --- a/tests/Images/ReferenceOutput/Drawing/SolidBezierTests/OverlayByFilledPolygonOpacity_Rgba32_Blank500x500.png +++ b/tests/Images/ReferenceOutput/Drawing/SolidBezierTests/OverlayByFilledPolygonOpacity_Rgba32_Blank500x500.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5dffe7bf6808d416ee2e62211ec92be842f33c55e3e2f08584d2ae7aefdbd657 -size 3073 +oid sha256:2d1013caea84502d7ac4290320bce5a305016b4f2d92428160ab629507cfd4f1 +size 2997 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid100x100_(0,0,0,255)_RichText-Path-(spiral).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid100x100_(0,0,0,255)_RichText-Path-(spiral).png index 988065cfd..6859b5cb8 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid100x100_(0,0,0,255)_RichText-Path-(spiral).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid100x100_(0,0,0,255)_RichText-Path-(spiral).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:111e7e67e162d5ebd8bed565f6a08b7e35a04887433df734c45d2ad49cc4b8d7 -size 4163 +oid sha256:1d31fa3597ccc94043ccba642c555b72b0406ec42cb0579898be516f15b370f3 +size 4212 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid120x120_(0,0,0,255)_RichText-Path-(triangle).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid120x120_(0,0,0,255)_RichText-Path-(triangle).png index 90d671467..6c35f6af2 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid120x120_(0,0,0,255)_RichText-Path-(triangle).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid120x120_(0,0,0,255)_RichText-Path-(triangle).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9fd3f7afd31e31126fe4ec0296e57e9229ca37a46df8f6afc6fce07d6888a2fd -size 4227 +oid sha256:5a1c28a34cf8679e7734471c3c08f9c44894c72560871781a98a2fe528d54639 +size 4272 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid350x350_(0,0,0,255)_RichText-Path-(circle).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid350x350_(0,0,0,255)_RichText-Path-(circle).png index d970c7389..bffbd7da1 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid350x350_(0,0,0,255)_RichText-Path-(circle).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid350x350_(0,0,0,255)_RichText-Path-(circle).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c89f30a2cbe68f41175525ae18c7ec6073f3ef56bdb40cc7764efe3a96531054 -size 5277 +oid sha256:2eb0655a628c0c5d59015bf4509d554a33eb14a4dce7a0920dc969a4e3f9192f +size 5331 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank100x100_type-spiral.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank100x100_type-spiral.png index 57a601d88..f3fc9605c 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank100x100_type-spiral.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank100x100_type-spiral.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:08eb9d4b392590e577e588457f3ae99955ddea56c88139e4eb540a5cdabfd03e -size 5038 +oid sha256:52a24a4a88b0188078dc3368f66f50aa92c429651b401ca79e801db47363c314 +size 5082 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank120x120_type-triangle.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank120x120_type-triangle.png index 2af29d74e..901080a07 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank120x120_type-triangle.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank120x120_type-triangle.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e0f0aeb2e92aeb02da3b440c8e935bc820463ee3da2598619070eb495bb913c6 -size 4223 +oid sha256:7f0ac05a29dbf0235ba4cb7e96ac2164a432e2b6b1ee8b49de26f76c3d6a2e0c +size 4353 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank350x350_type-circle.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank350x350_type-circle.png index 509eae80c..f756fba42 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank350x350_type-circle.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank350x350_type-circle.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85cd584271c4ebb12f84e4c4de5bced9d8a559b05fdf16b2bd94b47078aa6a07 -size 8901 +oid sha256:c5198e6f7d8b8dcf5fb0e301580266669aa1b930f94054773d1eb25ee6d4c890 +size 9001 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathVertical_Rgba32_Blank250x250_type-triangle.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathVertical_Rgba32_Blank250x250_type-triangle.png index ebd613b6e..092fd0b7e 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathVertical_Rgba32_Blank250x250_type-triangle.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathVertical_Rgba32_Blank250x250_type-triangle.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:321dd1559eed6db92d1d963f507944663d936feeb2ae5f0c171aa001779284c5 -size 5303 +oid sha256:1cea2edbeb61434012966d82f2b3907a7ec9182e937aba5279acf1771b01de91 +size 5380 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathVertical_Rgba32_Blank350x350_type-circle.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathVertical_Rgba32_Blank350x350_type-circle.png index 6fbee1774..5e035a9bd 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathVertical_Rgba32_Blank350x350_type-circle.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathVertical_Rgba32_Blank350x350_type-circle.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e5cb928e95253083624926734efa0429cfc054e03d80dec1e76bb689838478a -size 7392 +oid sha256:3052ecfcec07b8067fa56d91227a7354427f4fc8daa5785664d4df5345853e12 +size 7550 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextVerticalMixed_Rgba32_Blank500x400.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextVerticalMixed_Rgba32_Blank500x400.png index dae15c9b5..d9c16030a 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextVerticalMixed_Rgba32_Blank500x400.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextVerticalMixed_Rgba32_Blank500x400.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b9643956dc1d9173b65b3e7adc7231995e479d83bff06b842663a8f6f6f287b -size 10420 +oid sha256:84e47aac0a9fb574e4140ec75e03bb11ca7b3fbdf7cc39989703f4bdef6a27de +size 9504 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextVertical_Rgba32_Blank500x400.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextVertical_Rgba32_Blank500x400.png index b0272c32d..d7ed4103a 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextVertical_Rgba32_Blank500x400.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextVertical_Rgba32_Blank500x400.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:130319e01dddc5744b4a22e37b9967a817cd5cbb953e52fd1c01a3c6adafee94 -size 4542 +oid sha256:e7531c53a3babe5243374f582bc79330aa663e49b1d5158e635b18801d2093d1 +size 4695 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanFillTextVerticalMixed_Rgba32_Blank500x400.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanFillTextVerticalMixed_Rgba32_Blank500x400.png index bccffd3db..a90dae413 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanFillTextVerticalMixed_Rgba32_Blank500x400.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanFillTextVerticalMixed_Rgba32_Blank500x400.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05b8b6dd44989e815a3f57ffd6b775333049fad87c6fe2c58aa22d6957845717 -size 10662 +oid sha256:000526fbe95e5ce84144cb933a36c0272b886bb7cbc79684389e2c6fa9755038 +size 9645 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanFillTextVertical_Rgba32_Blank500x400.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanFillTextVertical_Rgba32_Blank500x400.png index 98bc78283..d5b7018bf 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanFillTextVertical_Rgba32_Blank500x400.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanFillTextVertical_Rgba32_Blank500x400.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d0ba99286a30c6dcfa422bd3e78633bf3f11a3d03a1719b29c1b9f9625c57d9 -size 4611 +oid sha256:68bc96ce74e742708f84391387c879c915acd576d334346b2d32b1990058b505 +size 4743 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateFilledFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-Quic).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateFilledFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-Quic).png index 161cea1c6..8edcee11f 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateFilledFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-Quic).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateFilledFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-Quic).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5df9a8f260766ff306adffec340b28ee2f90ce0e9c9034cff41c4dd63f4a6413 -size 1973 +oid sha256:fb5b0018f8b464e389379b3b50c89e941d49eec211107b5ddbbfad10c49d14ad +size 2011 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateFilledFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-Quic).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateFilledFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-Quic).png index 22857edc9..531056ea5 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateFilledFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-Quic).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateFilledFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-Quic).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c1926b779cacd76247b9804b33ded10c3f594c57a140ffeef63b3cbde32837d -size 1719 +oid sha256:49926d3e7aeb9043d3e64d251409963f4bc0022eb8fe2a5495c46125efa30a7e +size 1769 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateOutlineFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-STR(1)-Quic).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateOutlineFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-STR(1)-Quic).png index 3a9f993f8..0957c3e72 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateOutlineFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-STR(1)-Quic).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateOutlineFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-STR(1)-Quic).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:929c94f2f189f4ee31e44ebc4afe3a2526d6cdf73a1d95a9a763fbdb3d24cf7c -size 2611 +oid sha256:071dcbc4215ad9e67f12cd3cca802c09ca94c536e3214665c215e8732cf3a5c4 +size 2667 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateOutlineFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-STR(2)-Quic).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateOutlineFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-STR(2)-Quic).png index 9764d93e9..f500a3df1 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateOutlineFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-STR(2)-Quic).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateOutlineFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-STR(2)-Quic).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b28fd1903fe9bf3643de39f32a19c66dc87b7f1bfab8bc07c66b22e7d4b3882f -size 2459 +oid sha256:1b144e75360ba2b70a532e323210e519795c91942532e4ac992af1b04b06ad72 +size 2510 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextArabic_Solid500x200_(0,0,0,255)_RichText-Arabic-F(32).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextArabic_Solid500x200_(0,0,0,255)_RichText-Arabic-F(32).png index f2e7e5111..93e9b11c3 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextArabic_Solid500x200_(0,0,0,255)_RichText-Arabic-F(32).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextArabic_Solid500x200_(0,0,0,255)_RichText-Arabic-F(32).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fcf8c0db2ac4aaff6989bc274e2c61c8430c4017a45c0af73fc0f0f08e68149a -size 3061 +oid sha256:f578c497e4dda636fd917eda65203c733f3f52417ba0229a43aecddda462fad8 +size 3103 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextArabic_Solid500x300_(0,0,0,255)_RichText-Arabic-F(40).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextArabic_Solid500x300_(0,0,0,255)_RichText-Arabic-F(40).png index 04bc2c229..f9aac5b66 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextArabic_Solid500x300_(0,0,0,255)_RichText-Arabic-F(40).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextArabic_Solid500x300_(0,0,0,255)_RichText-Arabic-F(40).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9c8d5822133e2857a0f94dc07ab48727d939ebce2f28d00cb221e9b5062dc9c -size 3871 +oid sha256:0e4dfba3f80e315d636582bab3e2f36f2631c1769792f340586b0d230a596412 +size 3931 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextRainbow_Solid500x200_(0,0,0,255)_RichText-Rainbow-F(32).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextRainbow_Solid500x200_(0,0,0,255)_RichText-Rainbow-F(32).png index ef3383271..df6bf1f9c 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextRainbow_Solid500x200_(0,0,0,255)_RichText-Rainbow-F(32).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextRainbow_Solid500x200_(0,0,0,255)_RichText-Rainbow-F(32).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36be770f7fdd6958173dcb63d2fa4e3dbb16b52c3380f905fe6ced1e840f8829 -size 8724 +oid sha256:311a216993a688d110aa3008360ba3315e4ae2ea964061f6cd14ec6f589bfa04 +size 8827 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextRainbow_Solid500x300_(0,0,0,255)_RichText-Rainbow-F(40).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextRainbow_Solid500x300_(0,0,0,255)_RichText-Rainbow-F(40).png index 3146dbb7c..3a85f9a22 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextRainbow_Solid500x300_(0,0,0,255)_RichText-Rainbow-F(40).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextRainbow_Solid500x300_(0,0,0,255)_RichText-Rainbow-F(40).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:319353b59dd0523078a08e5952e515dda6e905eb17677e8b23e43b8a3c0a49c5 -size 11577 +oid sha256:329b6d3564b26b33f133236313f51dfd361fc73625f19234df828a3d3c05f655 +size 11533 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichText_Solid500x200_(0,0,0,255)_RichText-F(32).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichText_Solid500x200_(0,0,0,255)_RichText-F(32).png index 0657edf77..8fe52c7a9 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichText_Solid500x200_(0,0,0,255)_RichText-F(32).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichText_Solid500x200_(0,0,0,255)_RichText-F(32).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:15ff7c174ace497148ca49836ff487c0c595c80574294891f8085a1478e11ccd -size 9208 +oid sha256:fc4639e3835cd6411a563a185eb19a49e7c307e66cda8df9ef7186d25c5b3854 +size 9322 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichText_Solid500x300_(0,0,0,255)_RichText-F(40).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichText_Solid500x300_(0,0,0,255)_RichText-F(40).png index 6fd9acac2..75666501e 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichText_Solid500x300_(0,0,0,255)_RichText-F(40).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichText_Solid500x300_(0,0,0,255)_RichText-F(40).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c0f7abd6c3d436a77c86540f40419c1a6ca456c2ab27aafd0ccc913b16e6a825 -size 11818 +oid sha256:8c63b67d55bdf45724f64ef0518c7962da912bf1bfc9fb38614c39715cf8f1c2 +size 11837 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/EmojiFontRendering_Rgba32_Solid1276x336_(255,255,255,255)_ColorFontsEnabled-False.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/EmojiFontRendering_Rgba32_Solid1276x336_(255,255,255,255)_ColorFontsEnabled-False.png index d9abd57c6..9fdc8cf68 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/EmojiFontRendering_Rgba32_Solid1276x336_(255,255,255,255)_ColorFontsEnabled-False.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/EmojiFontRendering_Rgba32_Solid1276x336_(255,255,255,255)_ColorFontsEnabled-False.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9e294bb2381916430551c07f2c916e950764dfaad6763077d0643c6bae8b41b -size 9992 +oid sha256:18e7d238c5cf9b28f73c083cfdb18e7b4db83bc3dc9d959906e5e1db2e049df6 +size 9986 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/EmojiFontRendering_Rgba32_Solid1276x336_(255,255,255,255)_ColorFontsEnabled-True.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/EmojiFontRendering_Rgba32_Solid1276x336_(255,255,255,255)_ColorFontsEnabled-True.png index de37ec085..3d25eda50 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/EmojiFontRendering_Rgba32_Solid1276x336_(255,255,255,255)_ColorFontsEnabled-True.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/EmojiFontRendering_Rgba32_Solid1276x336_(255,255,255,255)_ColorFontsEnabled-True.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ef76e31fe343677beca2689140ebcdddc5fdb8a6b0cc4ea20fcea6f6c640c15 -size 18201 +oid sha256:ba6dbef390dc02fa2684355bda6cf9a38f52f6a8c3468fc4e4fb449cfc0ed88a +size 18214 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FallbackFontRendering_Rgba32_Solid400x200_(255,255,255,255).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FallbackFontRendering_Rgba32_Solid400x200_(255,255,255,255).png index 105cb5134..4a43cf209 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FallbackFontRendering_Rgba32_Solid400x200_(255,255,255,255).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FallbackFontRendering_Rgba32_Solid400x200_(255,255,255,255).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49947ffc9f41bb1f81ea553e302d6c5790a9298aa081c6ce509bbfa04e413b45 -size 1778 +oid sha256:460ab85bf88b181f95fcfc5f029f826d2781aa56f6e770e676e1c7a0e0f02f11 +size 1819 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid1100x200_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid1100x200_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png index e17af50ae..c378e8e8b 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid1100x200_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid1100x200_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de4d86af24fca7886599d9fed212db071142fe8a63f5babef9ee684a053a6731 -size 18135 +oid sha256:450d4edb2b067c212705387ea6a42763464707c86d0ddd365b81c1795ad31c93 +size 17917 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png index 247d3f075..d2f981c1b 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b377461da27d919e5a7a85d116ad6a7732f712949e27a89aa0c19df8afba356 -size 883 +oid sha256:bb97d53d830d65c290158ce1bbd5eae4033727f8fe8b534b7555c4bde89c9db0 +size 1244 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid900x150_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid900x150_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png index 9c5bc504e..a812816e3 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid900x150_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid900x150_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:39220ac8f35a5a34ff064bb9d323fc4c918b034b9f89b90c592049251b7f52c4 -size 17515 +oid sha256:65702ca76b6301fa1c4c1ecf4b07e654de1a4a59940ed156fc91d8670cf4c56a +size 17366 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid1100x200_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid1100x200_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png index 69a790602..5846aaaad 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid1100x200_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid1100x200_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:76779666a2620f2cb46641777c45dcee16bd9e7dcc81fd546690de281a2ac088 -size 15112 +oid sha256:95d22407bc35b2ceb3c671ea26a2941acb43a5f5b182d70a7712db8f21aa4ae9 +size 15131 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png index aa07656de..3b49924bb 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d76d1419f34486f902a558f209fa2906b226215d405c27f4a983e7d546ae096e -size 715 +oid sha256:a179fba9d30ba0c7cf21f07ab3b0e2c0260eeb2c62cd9bd581e6b09107819af6 +size 1036 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid900x150_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid900x150_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png index 721430678..5521b875f 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid900x150_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid900x150_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d74f5625b00b45cfd84247b3a69d9da296723ec4dbf4f7891e695e7985ee2ce -size 14551 +oid sha256:eb532482912d8f63ff78c193d2e9dcaf1abc66163c973d5ffdad31d86a8ac4d3 +size 14673 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_LargeText.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_LargeText.png index 8e7a5646c..0c1d6b523 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_LargeText.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_LargeText.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f38c83e52e4790b567e3cd3e30b7780e861ed45165352b19512d723a271c4346 -size 112821 +oid sha256:3367a65234258a6a26688eaadded51b97cd1efccba56534078a29cec80c868dd +size 110735 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid1100x200_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(150,50).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid1100x200_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(150,50).png index b61c07492..a55a451ff 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid1100x200_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(150,50).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid1100x200_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(150,50).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:941619533a2b87701134b2d3ef61abb581d4c74e521de1cb0ff2962f1bb16ff3 -size 11175 +oid sha256:b6688a59280db47c5a41e2c0e3e03383066a9e9f6606e55fe129c96159edbe88 +size 11085 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid20x50_(255,255,255,255)_OpenSans-Regular.ttf-50-i-(0,0).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid20x50_(255,255,255,255)_OpenSans-Regular.ttf-50-i-(0,0).png index b2ef32d33..6552efe86 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid20x50_(255,255,255,255)_OpenSans-Regular.ttf-50-i-(0,0).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid20x50_(255,255,255,255)_OpenSans-Regular.ttf-50-i-(0,0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:511722041e95c8bf5a7a9e095d1608fe5aeb744fc852bb1af48e55d55e780944 -size 147 +oid sha256:82a1611e1bfd506bc056a389da40c200eebfd3114297aec8f316baed361bf44b +size 280 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid400x45_(255,255,255,255)_OpenSans-Regular.ttf-20-Sphi-(0,0).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid400x45_(255,255,255,255)_OpenSans-Regular.ttf-20-Sphi-(0,0).png index 39df54e75..09e231042 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid400x45_(255,255,255,255)_OpenSans-Regular.ttf-20-Sphi-(0,0).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid400x45_(255,255,255,255)_OpenSans-Regular.ttf-20-Sphi-(0,0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b0529f8c9792e25dfeed3a6f340e46516c3d81221da2cece7c11ff40b18e596 +oid sha256:16d0df791297d9a491810f05b0994a266164c6a5e0d180b4645107030283aa8a size 3589 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid900x150_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(0,0).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid900x150_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(0,0).png index 4981e0607..fadf35b40 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid900x150_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(0,0).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid900x150_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(0,0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3355c17fcb729fce63ca166e33b97a3d5cc872852f72ed9e8bd6dfeeac444720 -size 10587 +oid sha256:d27be541dfc5a3a0bafca3b8204118ca3c062ad4024f7e6f3debc7160c5679f7 +size 10527 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1.5_linecount_3_wrap_False.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1.5_linecount_3_wrap_False.png index 4ddd3d3bb..f37eeeb5f 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1.5_linecount_3_wrap_False.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1.5_linecount_3_wrap_False.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9032865f8f6ba69ab441214529de25f1dc2feade5c1325f2ac41fae385b4eab7 -size 2794 +oid sha256:1705d215b8424ca998b8d23264b6078f68b8145079f3c479a479a9e48bd11f9d +size 2830 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1.5_linecount_3_wrap_True.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1.5_linecount_3_wrap_True.png index c5a9ae98e..8a11f2eac 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1.5_linecount_3_wrap_True.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1.5_linecount_3_wrap_True.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f0b957c1be2a9447de3502e00042e55ffa06581363883107c809b6618df549ec -size 24916 +oid sha256:b32fd4bd997df568c0c8ed437a6b9a7fcfbb48e35fef18fa28e87c0f5b0947e2 +size 24872 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1_linecount_5_wrap_False.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1_linecount_5_wrap_False.png index 5f25c361d..f61170458 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1_linecount_5_wrap_False.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1_linecount_5_wrap_False.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a630be87d45383b25f884246b389c9f220701c1414b131cef7621e80a3c4e5d -size 2863 +oid sha256:9e40cc5fae7127ee24807a8f4720a57c3ed6f0eea6787d13da213dd7789c6d4f +size 2844 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1_linecount_5_wrap_True.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1_linecount_5_wrap_True.png index 71adb77fb..764a9ae08 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1_linecount_5_wrap_True.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1_linecount_5_wrap_True.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9dd38d152388a86571f6ebab1e5f8c69265dd3f0644bec7b18628b755bd75c11 -size 35476 +oid sha256:3b78d61038876d453c8a6b0a8ac461ab7abc0ab77618c8612d825648d1f1e523 +size 35374 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_2_linecount_2_wrap_False.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_2_linecount_2_wrap_False.png index e242c0aa7..652e6c25a 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_2_linecount_2_wrap_False.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_2_linecount_2_wrap_False.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7187968b2bf4c5cdd90530f53c416a362345a24a03f448711717897a4f9a9826 -size 2777 +oid sha256:85614685419789b5a656fd19bc0542d91009164da8a86c4b01d975dc99a51ef2 +size 2816 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_2_linecount_2_wrap_True.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_2_linecount_2_wrap_True.png index 5627051b9..195d48aa3 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_2_linecount_2_wrap_True.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_2_linecount_2_wrap_True.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0e11b6518596f2235149f62471919ee6c7b991edfd260bdc4b48e61dd0a4a00e -size 17650 +oid sha256:b910f7c863fc76ad147ab48a3f9f0f5f8a43d7a2290fbfd8ee8cdc4f29568602 +size 17629 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithRotationApplied_Solid400x400_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(20)-A(45)-Sphi-(200,200).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithRotationApplied_Solid400x400_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(20)-A(45)-Sphi-(200,200).png index 14d2ab850..881c6f694 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithRotationApplied_Solid400x400_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(20)-A(45)-Sphi-(200,200).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithRotationApplied_Solid400x400_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(20)-A(45)-Sphi-(200,200).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07b789bbdb8e20e9fea5f70e4326f665a8974f4fb8bfa338032de34214a54a30 -size 5503 +oid sha256:8ac46db738f49ff6072fafcbe6dbde47bb39a897c3f2ee85500269095938bd44 +size 5561 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithRotationApplied_Solid50x50_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(50)-A(45)-i-(25,25).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithRotationApplied_Solid50x50_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(50)-A(45)-i-(25,25).png index d01ee4ab4..794497a7f 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithRotationApplied_Solid50x50_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(50)-A(45)-i-(25,25).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithRotationApplied_Solid50x50_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(50)-A(45)-i-(25,25).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d19338ddce54b87fd2784ff6a747abe00bc069983f8b1a30a41f5ce52ca09e22 -size 260 +oid sha256:7c8e916390f476c4be19cf9af52b538c0c6d4c35ec0b37b357fa393ff380c674 +size 417 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithSkewApplied_Solid400x400_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(20)-A(0,-10)-Sphi-(200,200).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithSkewApplied_Solid400x400_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(20)-A(0,-10)-Sphi-(200,200).png index 42cd7862e..2732e246c 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithSkewApplied_Solid400x400_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(20)-A(0,-10)-Sphi-(200,200).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithSkewApplied_Solid400x400_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(20)-A(0,-10)-Sphi-(200,200).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:23e87b0b8e9a8964a5529ef5af7334b8f9504697bb40d448a760f6feec73d68e -size 4991 +oid sha256:e20f601f9193ad75cdc97f978d2adbac023b9592f8daf3f87be0b1330881f2a1 +size 5076 diff --git a/tests/Images/ReferenceOutput/RasterizerExtensionsTests/AntialiasingIsAntialiased_Rgba32_Solid400x75_(255,255,255,255).png b/tests/Images/ReferenceOutput/RasterizerExtensionsTests/AntialiasingIsAntialiased_Rgba32_Solid400x75_(255,255,255,255).png index 2cd41e18c..b18af7e56 100644 --- a/tests/Images/ReferenceOutput/RasterizerExtensionsTests/AntialiasingIsAntialiased_Rgba32_Solid400x75_(255,255,255,255).png +++ b/tests/Images/ReferenceOutput/RasterizerExtensionsTests/AntialiasingIsAntialiased_Rgba32_Solid400x75_(255,255,255,255).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:99764d59709bd221934905db1d6d344884862d30a48c07773fbfaf79234429d2 -size 347 +oid sha256:9950be5c4b9024969a96b8b30be5b30b6252366e492a14dd7f33db692453188d +size 397 diff --git a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank110x50_type-wave.png b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank110x50_type-wave.png index cc452578a..91eae570d 100644 --- a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank110x50_type-wave.png +++ b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank110x50_type-wave.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:94da32b8d3ddf4d14cde06070fccbcacc4b4cecd241d1f97ef3f95cc0edb69af -size 814 +oid sha256:d00fe95e5f1124c104a6bc1343f3c4f2e862f9905425d22d39645114645c2743 +size 870 diff --git a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank110x70_type-zag.png b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank110x70_type-zag.png index 208139a74..e955d615d 100644 --- a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank110x70_type-zag.png +++ b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank110x70_type-zag.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5a411e3e7003e816aca3d00e8d42649b024e099122c75e1a9b9a631500dd4e6 -size 1002 +oid sha256:4f494915daf93b3fa6f8bc6be08cdb410615a9708a89e5542b64f0f73c172466 +size 922 diff --git a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-bumpy.png b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-bumpy.png index 0d6b025eb..e8d4e856c 100644 --- a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-bumpy.png +++ b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-bumpy.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa1a440cb4e8dbf751c99790a99b2d619bd790dc697cf9eed056d5a3a90541e2 -size 5094 +oid sha256:9b93cfe79f4038e87af7c2b3908a73cd9315463000e2a70f235c92ff9c3913e1 +size 10086 diff --git a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-chopped_oval.png b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-chopped_oval.png index 4440a16e4..754e01e9f 100644 --- a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-chopped_oval.png +++ b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-chopped_oval.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:21ae15a8e140b5dc0f4ad203102efad9a23e8e052f312f12c14e917c0f10ba1f -size 2815 +oid sha256:49ae0db9378f7885d8d7aee40f0efa8bd4a03ca1617641fa173f5d145cd880b4 +size 5682 diff --git a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-pie_big.png b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-pie_big.png index 8fb827fc0..b8517f643 100644 --- a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-pie_big.png +++ b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-pie_big.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7355ccda587cbcd8bd9c37df13fcc1db8e32e2bcce1b8a903d221cfa1e09fe4f -size 2593 +oid sha256:258ac071e347abe666c1c1d556e567547b861c7689199ff7fea9def6acf8be23 +size 2644 diff --git a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-pie_small.png b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-pie_small.png index e5dfdffd1..ce8e38a5a 100644 --- a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-pie_small.png +++ b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-pie_small.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48a391f2d2ccbc2c4b8ba2ef07e3a8a881dc6c397e1622e64738c7d46ae35bda -size 4980 +oid sha256:0e23125bf0125159d19fcc7ef8c371486fa5cb24d4445d5fbde892a5b888deba +size 5036 From 36209ff6acfff30992839a81ad9087f619ac2621 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 8 Sep 2023 12:12:16 +1000 Subject: [PATCH 10/15] Replace test output images. --- .../DrawLines_EndCapRound_Rgba32_Yellow_A(1)_T(5).png | 4 ++-- .../LargeGeoJson_Mississippi_Lines_PixelOffset(0).png | 4 ++-- .../LargeGeoJson_Mississippi_Lines_PixelOffset(5500).png | 4 ++-- ...tAlongPathHorizontal_Rgba32_Blank120x120_type-triangle.png | 4 ++-- ...,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png | 4 ++-- .../FontShapesAreRenderedCorrectly_LargeText.png | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_EndCapRound_Rgba32_Yellow_A(1)_T(5).png b/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_EndCapRound_Rgba32_Yellow_A(1)_T(5).png index afa346fd2..a044cc56d 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_EndCapRound_Rgba32_Yellow_A(1)_T(5).png +++ b/tests/Images/ReferenceOutput/Drawing/DrawLinesTests/DrawLines_EndCapRound_Rgba32_Yellow_A(1)_T(5).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6b5d50f6800d646d4a3049a5a3e49500857bcb7b4debc457c58f69b3cef3e0bf -size 5190 +oid sha256:fbf283cef01981b183b7ef8b8c07bdacbf39b9a24de3d86a087dc3a54a0cb958 +size 4868 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_Mississippi_Lines_PixelOffset(0).png b/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_Mississippi_Lines_PixelOffset(0).png index 71a0e7ab1..a6081c36a 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_Mississippi_Lines_PixelOffset(0).png +++ b/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_Mississippi_Lines_PixelOffset(0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:40bfcd17e14f0e65c9fab7242e4c36cdb57d9ba9392e49efaad3b95b1a913dbd -size 4427 +oid sha256:949b0e0af39b177c5214dd2f87355dc3e7a596ac6af05563e9deaa643037e5a1 +size 4377 diff --git a/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_Mississippi_Lines_PixelOffset(5500).png b/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_Mississippi_Lines_PixelOffset(5500).png index eec5b52d9..adea8da1c 100644 --- a/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_Mississippi_Lines_PixelOffset(5500).png +++ b/tests/Images/ReferenceOutput/Drawing/DrawingRobustnessTests/LargeGeoJson_Mississippi_Lines_PixelOffset(5500).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52b926fd8113abc40641fcb3523891dab877f723e0f60a92d5b4f3dc05b50937 -size 41045 +oid sha256:64de5c0902dc90f5122ce55bec6b83e520dc8f602c07e66438545e88b0e999a6 +size 40943 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank120x120_type-triangle.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank120x120_type-triangle.png index 901080a07..426d0065f 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank120x120_type-triangle.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank120x120_type-triangle.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7f0ac05a29dbf0235ba4cb7e96ac2164a432e2b6b1ee8b49de26f76c3d6a2e0c -size 4353 +oid sha256:95c2bb58b46703a0db1b4290e06383c528e1af87323bb3aa582f68710dd6da1b +size 4219 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png index 3b49924bb..2b436caa2 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a179fba9d30ba0c7cf21f07ab3b0e2c0260eeb2c62cd9bd581e6b09107819af6 -size 1036 +oid sha256:cb99b342371e50b3b20e7ae22ee80a13027df94b129a095c8e16120ae71877bd +size 710 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_LargeText.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_LargeText.png index 0c1d6b523..dc054247e 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_LargeText.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_LargeText.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3367a65234258a6a26688eaadded51b97cd1efccba56534078a29cec80c868dd -size 110735 +oid sha256:041fe44d2a6a920e7deb699d9f089c7441a27533af9afb2152fbabfa5037f9d4 +size 110984 From a7481bb4cbe160a02ab8793ef46b87d4a260db2a Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 8 Sep 2023 12:16:22 +1000 Subject: [PATCH 11/15] Revert tolerance changes --- tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs b/tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs index 0c81852e8..70004cff8 100644 --- a/tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs +++ b/tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs @@ -196,7 +196,7 @@ public void FillPolygon_StarCircle_AllOperations(TestImageProvider provi provider.RunValidatingProcessorTest( c => c.Fill(Color.DeepPink, circle).Fill(Color.LightGray, star).Fill(Color.ForestGreen, shape), - comparer: ImageComparer.TolerantPercentage(0.0287F), + comparer: ImageComparer.TolerantPercentage(0.01F), testOutputDetails: operation.ToString(), appendSourceFileOrDescription: false, appendPixelTypeToFileName: false); From 9d4d0ac5b448b0f6774fb201c90632378bd23277 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 8 Sep 2023 17:07:28 +1000 Subject: [PATCH 12/15] Attempt AdvSimd implementation --- .../Rasterization/ScanEdgeCollection.Build.cs | 47 ++++++++++++++++++- .../Shapes/Scan/ScanEdgeCollectionTests.cs | 2 +- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs b/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs index 4f67f40ca..e90da557d 100644 --- a/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs +++ b/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs @@ -6,6 +6,7 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; using System.Runtime.Intrinsics.X86; using SixLabors.ImageSharp.Memory; @@ -160,8 +161,41 @@ static void RoundY(ReadOnlySpan vertices, Span destination, float } } } + else if (AdvSimd.IsSupported) + { + // If the length of the input buffer as a float array is a multiple of 8, we can use AdvSimd instructions: + int verticesLengthInFloats = vertices.Length * 2; + int vector128FloatCount_x2 = Vector128.Count * 2; + int remainder = verticesLengthInFloats % vector128FloatCount_x2; + int verticesLength = verticesLengthInFloats - remainder; + + if (verticesLength > 0) + { + ri = vertices.Length - (remainder / 2); + float maxIterations = verticesLength / (Vector128.Count * 2); + ref Vector128 sourceBase = ref Unsafe.As>(ref MemoryMarshal.GetReference(vertices)); + ref Vector128 destinationBase = ref Unsafe.As>(ref MemoryMarshal.GetReference(destination)); + + Vector128 ssRatio = Vector128.Create(subsamplingRatio); + Vector128 inverseSsRatio = Vector128.Create(1F / subsamplingRatio); + + // For every 1 vector we add to the destination we read 2 from the vertices. + for (nint i = 0, j = 0; i < maxIterations; i++, j += 2) + { + // Load 4 PointF + Vector128 points1 = Unsafe.Add(ref sourceBase, j); + Vector128 points2 = Unsafe.Add(ref sourceBase, j + 1); + + // Shuffle the points to group the Y properties + Vector128 pointsY = AdvSimdShuffle(points1, points2, 0b11_01_11_01); + + // Multiply by the subsampling ratio, round, then multiply by the inverted subsampling ratio and assign. + Vector128 rounded = AdvSimd.RoundAwayFromZero(Sse.Multiply(pointsY, ssRatio)); + Unsafe.Add(ref destinationBase, i) = AdvSimd.Multiply(rounded, inverseSsRatio); + } + } + } - // TODO: Arm64 for (; ri < vertices.Length; ri++) { destination[ri] = MathF.Round(vertices[ri].Y * subsamplingRatio, MidpointRounding.AwayFromZero) / subsamplingRatio; @@ -171,6 +205,17 @@ static void RoundY(ReadOnlySpan vertices, Span destination, float return new ScanEdgeCollection(buffer, walker.EdgeCounter); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static Vector128 AdvSimdShuffle(Vector128 a, Vector128 b, byte control) + { + Vector128 result = Vector128.Create(AdvSimd.Extract(a, (byte)(control & 0x3))); + result = AdvSimd.Insert(result, 1, AdvSimd.Extract(a, (byte)((control >> 2) & 0x3))); + result = AdvSimd.Insert(result, 2, AdvSimd.Extract(b, (byte)((control >> 4) & 0x3))); + result = AdvSimd.Insert(result, 3, AdvSimd.Extract(b, (byte)((control >> 6) & 0x3))); + + return result; + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] private static VertexCategory CreateVertexCategory(EdgeCategory previousCategory, EdgeCategory currentCategory) { diff --git a/tests/ImageSharp.Drawing.Tests/Shapes/Scan/ScanEdgeCollectionTests.cs b/tests/ImageSharp.Drawing.Tests/Shapes/Scan/ScanEdgeCollectionTests.cs index df257ba0e..0a1dbd4d8 100644 --- a/tests/ImageSharp.Drawing.Tests/Shapes/Scan/ScanEdgeCollectionTests.cs +++ b/tests/ImageSharp.Drawing.Tests/Shapes/Scan/ScanEdgeCollectionTests.cs @@ -104,7 +104,7 @@ static void RunTest() VerifyEdge(edges, 2f, 3f, (1f, 1.5f), 1, 1, true); } - FeatureTestRunner.RunWithHwIntrinsicsFeature(RunTest, HwIntrinsics.AllowAll | HwIntrinsics.DisableAVX | HwIntrinsics.DisableSSE41); + FeatureTestRunner.RunWithHwIntrinsicsFeature(RunTest, HwIntrinsics.AllowAll | HwIntrinsics.DisableAVX | HwIntrinsics.DisableSSE41 | HwIntrinsics.DisableArm64AdvSimd); } [Fact] From e15175edad33e22cc628724963a7bc5330e9ed52 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 8 Sep 2023 17:12:52 +1000 Subject: [PATCH 13/15] Update ScanEdgeCollection.Build.cs --- .../Shapes/Rasterization/ScanEdgeCollection.Build.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs b/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs index e90da557d..f1970f078 100644 --- a/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs +++ b/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs @@ -190,7 +190,7 @@ static void RoundY(ReadOnlySpan vertices, Span destination, float Vector128 pointsY = AdvSimdShuffle(points1, points2, 0b11_01_11_01); // Multiply by the subsampling ratio, round, then multiply by the inverted subsampling ratio and assign. - Vector128 rounded = AdvSimd.RoundAwayFromZero(Sse.Multiply(pointsY, ssRatio)); + Vector128 rounded = AdvSimd.RoundAwayFromZero(AdvSimd.Multiply(pointsY, ssRatio)); Unsafe.Add(ref destinationBase, i) = AdvSimd.Multiply(rounded, inverseSsRatio); } } From 1fb4acf35a0a4a8eaaa80caf88a8d8c560d48320 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 8 Sep 2023 17:18:00 +1000 Subject: [PATCH 14/15] Bump Magick --- tests/Directory.Build.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Directory.Build.targets b/tests/Directory.Build.targets index d7f402ba5..b0dc7c7b3 100644 --- a/tests/Directory.Build.targets +++ b/tests/Directory.Build.targets @@ -19,7 +19,7 @@ - + From d15be1cbff361c57a04399468432b412d8c30f71 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 8 Sep 2023 18:04:50 +1000 Subject: [PATCH 15/15] Tweak tolerance for ARM64 --- .../Drawing/DrawingRobustnessTests.cs | 6 ++---- .../Drawing/Text/DrawTextOnImageTests.cs | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/tests/ImageSharp.Drawing.Tests/Drawing/DrawingRobustnessTests.cs b/tests/ImageSharp.Drawing.Tests/Drawing/DrawingRobustnessTests.cs index 78fb6eb1f..fbc04393b 100644 --- a/tests/ImageSharp.Drawing.Tests/Drawing/DrawingRobustnessTests.cs +++ b/tests/ImageSharp.Drawing.Tests/Drawing/DrawingRobustnessTests.cs @@ -160,10 +160,8 @@ public void LargeGeoJson_Mississippi_Lines(TestImageProvider provider, i image.Mutate(c => c.DrawLine(Color.White, 1.0f, loop)); } - // Very strict tolerance, since the image is sparse (relaxed on .NET Framework) - ImageComparer comparer = TestEnvironment.IsFramework - ? ImageComparer.TolerantPercentage(1e-3f) - : ImageComparer.TolerantPercentage(1e-7f); + // Strict comparer, because the image is sparse: + ImageComparer comparer = ImageComparer.TolerantPercentage(0.0001F); string details = $"PixelOffset({pixelOffset})"; image.DebugSave(provider, details, appendPixelTypeToFileName: false, appendSourceFileOrDescription: false); diff --git a/tests/ImageSharp.Drawing.Tests/Drawing/Text/DrawTextOnImageTests.cs b/tests/ImageSharp.Drawing.Tests/Drawing/Text/DrawTextOnImageTests.cs index 96f8dd910..7927565ce 100644 --- a/tests/ImageSharp.Drawing.Tests/Drawing/Text/DrawTextOnImageTests.cs +++ b/tests/ImageSharp.Drawing.Tests/Drawing/Text/DrawTextOnImageTests.cs @@ -23,7 +23,7 @@ public class DrawTextOnImageTests private static readonly ImageComparer TextDrawingComparer = ImageComparer.TolerantPercentage(1e-2f); - private static readonly ImageComparer OutlinedTextDrawingComparer = ImageComparer.TolerantPercentage(1e-3f); + private static readonly ImageComparer OutlinedTextDrawingComparer = ImageComparer.TolerantPercentage(0.0069F); public DrawTextOnImageTests(ITestOutputHelper output) => this.Output = output; @@ -278,7 +278,7 @@ public void FontShapesAreRenderedCorrectly_LargeText( } // Strict comparer, because the image is sparse: - var comparer = ImageComparer.TolerantPercentage(1e-6f); + var comparer = ImageComparer.TolerantPercentage(0.0001F); provider.VerifyOperation( comparer,

0WCnfBlkk=&c5;wKgD8r3i4ChzRWZIP&;T` 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 LZ9KkJm;l=kmoX;y literal 506 zcmZvXTS${}7{-6gt?A0s5T&U}P4GgkHAzBpw())Lo7j>$0~JJbl?sw1)P+VvJfs)d z0fh=>mvti>1R*NS1VvCWQAF^BMY)()(S#`NzplG@4-dT0`#ev7h0`9dGw6VLha$Pe z^h7H*Ms)kt+jqoJwY%&##+EWd0;um=uUjE7cBRPz5)k2I`<58vi+Lf;Q-e zei(ou7=|}60)F@aL70YlSb}Bv1S_x#>#zx1um@k@8;Dfj;U`4k4;;ZUG*4Fx31%IV z)!npxuqYe4gr5de@`rB@W5w$cX?lF(G610`^urF@K!#B zuESty_*J4=|L`nnmufErW&M;fD3^Usza|gNLj^A%I)r>y!o0F`z i?%3q>(vzff|6SsKv0m0Yth}BLi$pkNr!;1(@A?Zl?ust} diff --git a/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(0_0).png b/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(0_0).png index f6fc6b35d00f4fca6b6de49d6b00f7793a74ca88..78100bc577f89bdaee5a2f76270ec756ce76ee5f 100644 GIT binary patch literal 128 zcmWN?$qmCG5CFhGRnS1py@0#nSOQWKtSt5;)yJC0T==CiKfJGX&@RMttjDX-cHhsu zmH8HQU=f#Mb5u?}X$N~#7`(I+R8l_37*aA0ZIilInHA<6fNv)1l%@9>w2lC1E5@iw LU^ITnoj2?ci!UbE literal 612 zcmYk2TS${}7{-6PgL7)Nv`m>KP81;&jTL5%ZEX1oYNp%5h%!5QktBLoU}g!~%K1q} z(18RaF;ELC@+v8E9T1yZMrmY{2Naf|Y*gBRU3KxE;CbKYeV*o$;`|tGq85lLkZh%* z9u0*?A#(oCW5-1at1Hd7(mkl36@&7GrN{ygJyE|8tHc~xBbC>|niru68#vV&TAwQ^ zbl5|iAnqtZ4H2Lba1dP4f=%FIE$Co9BtRnQAqi3-4bou?WWiQ2!Y(j@4GN(MoZy1} za1bis$iKI%pc-mGJahq?;S#vP18r~(uER~Z4ZZLb`rtYA!)q9XA$Siy7=e#4247$t zCSeMuVFrW+bFc)<@CR04RY*A0wNHpu6xb||s)>b>&pWJpv43+qQgyjy?bhPlG~dRQ z`QS>=_YVt;#_3UgmjCOOb(L>Z`l<}?GFt7bM_uM8aZ=GaeMW1PscP!#g5PZ3)^|bwJvtORo0IzWdBJdQPtT<)AL$H3qz< zfcI7W=JI+)QiiFqCGPZHLsQ<6+!Qe+zlojk{>Yp0_HQ4PeyS@Bd4^uu=hWup4Bz2E zYS|t#bIt^!Yvjkn*=D<|<=2h+vki+ApSWt(JiE6v?wVdUsvcn3eR)%M<;#mY!~ae5 Xe0*1+)?IJ32~VNGUTo{ORy6(vFiNyU diff --git a/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(110_-20).png b/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(110_-20).png index 2120ae01d539a7f359f8857493035321ec28e542..d35eaba19ebcb1276ed42fe220c6735aa980a2d9 100644 GIT binary patch literal 128 zcmWN?NfN>!5CFhCuiyg)W>}Nou*?WmDk;Gne7*LiFM7{DUb3xq&O@ntU$+O(?SK2^ zt&FFdClz&p7`@8b5;}hvSAgP#n9AxHOkQQmktq*dsIx^`%6Ne~dtFw7mcD^rEv!FDk+*tPY59Iwe`J;;&u!5CFhCuiyiQVVME)8-_)wQj-$Q!PjeF`l|0aj+g9fopV>}KGyBg=JvmT zc+1CA&9i28X>p7qXHN!cPgaNI2#XHnj7OqW3^EiBl_N7yWprdQN9!8^IAe27)|C=- Mf+ptpR*B%n4}@nX>;M1& literal 573 zcmZXPTS(J!9K}DoIOg1JnuUqRDACA)!w^d{{#zS!ctM9670JSB`rs0Uf+%w_A}iYx zw4hcDio(d~LS;eJq8o%=wA@2Q#lTc#JbK_}zUOe@e81mwdTXlfI!%@a&^gMj zPQmWPs1*Y38=G4M$-10&3&W$?Q$i?rnXAlj-Ji0sGfC*=j`FQtkoq_=vS+(5C)VHA zRMy!Nn;`BeK?Q2z1@TBLUI{ZSfiy^mEXal&SOs~I4~4J}ilGcPK_yf{Jv6{JXapBD zK`XRF2Z#i{a1@S#ANpYc2H^|@;SSt`hwunqz$m#Sxh~9W)D_)LS+ZK`x@In zj}BSAYcHN%W**eJ-$|va8_kCMsv=V$MKMwmC{%=+4Zl^LZHAbtf3NXLAmlx+&7IMx zCsjq;)Ac8G(W^$o$a`nziY-dt1MmJ4rLRCS|8coKuUPiwskGh{m_OWO+ObrBZdxAR zTrb_dqEY(`1QNE-<_JI^vuY^7xE46iN3h{<*$^fw9MGR*y`{5Zk=A~eKj^0 wSDQ-PF4=od-3+#LDxYh8k~}##@IOS)FUoQv3o%*nwny~GVXL+dTU>|!0oInD3jhEB diff --git a/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(99_0).png b/tests/Images/ReferenceOutput/Drawing/FillOutsideBoundsTests/DrawCircleOutsideBoundsDrawingArea_(99_0).png index 7ffec942f5f36c81d4a2dc2ee566769ef1b95c32..ab9b3f10a32343f9459dff4d0c428aac1cb19869 100644 GIT binary patch literal 128 zcmWN|O%B2!5J2HQr{Dq>DZ^iH!@wXUDvg6(czRjAY=m@hJ_&2%gP58WSJXgVMAg=6Z%JG1Wx;|*B;J2T)6k1b8c^aolVLv$Oa^b z-QpDNOGBF>s;#`WO_0Lxv{ey`6nzqn>U3poB|PcRSwEF2`m8SdaX)OCNJBB%`7ph{ zT3^#>O>cs@qXIQ(Kr6;UXz7HSn1@`*gRQU=3ZMuKV1hkR4EvxI4#FWYLj_o%25O-R zn&AYvp#{AEY_~%Pbb&AwgkHD;eb5ir;5rP#Ew}@tFb>Zl3@>3CA}|YYU=CvN78YO; zKEOvvz%s0Wc)=?Cf;C9N25gE5Cr4Z&?WV(0+1MWc9J4hm8@AIB4w%$4NA7tddD}d4 zER^b;d=&lSzj)Q%u@o7x#P>c}PgYm!e2a3M&NnU3OTO1~os^iD&#S8@VA<%|MqcUw?K)`6_iI@NGe_uh@|pygL*KH`U53A+7eE)ofO#grw?dVe+T8 zyfb&mw)CUD#H<|qJsjN?j(&e{=~hj}L%HW%%f&rT(`L@@0a=;#f9YP+Bn{q6ebHwZ P#4B)E>nx$Fmdk$u%m}T+ diff --git a/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathArcToAlternates.png b/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathArcToAlternates.png index 59cbd3a2f..312cf978f 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathArcToAlternates.png +++ b/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathArcToAlternates.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b66233cbe8fed9cc0c9fea624d0e0b64e3fbc0563aa17fd68cdf658c8c06906b -size 4693 +oid sha256:07b7a9367c49f2f7ad17706dbdc3bccde45b44d81b5638f83df61ba3b76ecc16 +size 1833 diff --git a/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathCanvasArcs.png b/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathCanvasArcs.png index 4defbf480..373b6dff6 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathCanvasArcs.png +++ b/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathCanvasArcs.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c512a34849be87435321ccc0bca8752e2a15703b08acf5ea5f12e2eeda248b91 -size 1923 +oid sha256:e62f136663caf5602d0f57cbcabb3a335f59b39c6119d5265bb5bfe80b0480b3 +size 1740 diff --git a/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathSVGArcs.png b/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathSVGArcs.png index 6b22d53c2..ce908ec03 100644 --- a/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathSVGArcs.png +++ b/tests/Images/ReferenceOutput/Drawing/FillPathTests/FillPathSVGArcs.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36b7dd7a3a7552826f80263cba1dd504f740ce456b8e6aca11a81dcf40667566 -size 4910 +oid sha256:ab59a643511ca3cab15c2f386583352da265d9807362a5a80e456cddd8e92762 +size 4152 diff --git a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/FillPolygon_StarCircle.png b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/FillPolygon_StarCircle.png index a549fcb676d99b182b570ce561cba3458341e7ca..558b9386bbd7582dab6841910d4f948491f42d67 100644 GIT binary patch literal 129 zcmWN?OA^8$3;@tQr{Dq>37@9DO@Kt0QRxWn!qe;9yo*1h^|!8b9%DD=(dO+bWBFgt zwB-IWOf?K8#JRsmE93eUgfXpi;cDxCRhiEfrEFy$!6z>Ua MP@{cW+dH880l=3hd;kCd literal 1062 zcmV+>1ljwEP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1G`B?K~xwS&B0Ab zlxYA5@V{fC8M=z4Gk(l&Af2KP5p)ntDHz#Ji4M_aJw!zZF*-!Di*wnHPOTrc8x#Y& zuuEgGva?Z%(7|z6!!}5TPDWz;tptVe zS>(2BkgB^Yw6SuRs=-~zq3kg=BPWxzNS+*_=5ZNpRZdeE!WCLvL5RBPO4z8FVOA}C zl=x7~teFZ}6peG!X%tV=WU?5ixoNxzvH=?01e{AWSaJe4Y0wYJ85%tUa3sd8*bxBF zXmkc9&JQ$NEd+2bLtW+^fWlQ8eW-zvpJs<3+@S6TghMp*!{9h27a%wSR0SLmE>LnD zn}tQN{btzi3 zLet$1O)D)@be!W4Bz`A=fW4@&_pXq!8AM}x)2mmW~~j@VH@>>Ys`v5k)lETc0IOGe>+Zt6cj0%#P2j9 zhlV?GnxvrkL`mXTH*C0nOHdMpVu=>-%3)FdjuuN$Jf|$v4jb(m%AP~u1Uy zK+#LdSRrf`j#1JJ#dkD&vllt+eM7Tvp{PvJD1H<<9gWi{RSDG;jV@vf7ilyF&2<|1 zpeyZ)K^N;Ph0aHV>(G3YX4Z?{P*wH5XQC9U(gff4RzbDhVCghg!e+!QT>Q1pqLf~N``kErs%;2#PLHJx)bIR@bvP3Agl7AOQ@ z)bNqa423AU2H_edq2Ubqu>mHXv=e|3pq=j_@zKVL18_uW!v|T(f3$HJI7}P=mcXKV zo>pBz7p>;2VZ%8~3qRne#cU01RRt+q29_zCs6q}Uzf*SL0A<6)$nDZ9&CZ{v+3F>1 z$vsMwp&^?5<;HeAuV}EaK!aBv4ap>mUqmSEDbo$@U zH0Ax}^r+cg-t4_tZ4u{Xi%<|FP@qJ-ig(^b literal 2437 zcmb7Gc|6qJ9zJ6j%ZxECYDSh3Wf_qzOO~+?l@{_U%SeV$vhQS)8`Z?5_iZ6WWEsP2 zOS1Kv$!JkXTqgSzL#~qD$o+NSd%Jz^{pa34&N<)b`99~I&*!Yqm7|AAk`gi!002pQ zJ8MU%ZU0`x5KzrLQJw=eurNoGB`AL_%ZGsQ84Cvs04mdw0xuB=iwE1C3g;B(q(B~ z4^cE`KgYJJ4xiy8Pz8>sd`7mO-Y!O0wDBTzSLvt*idXL{yX58HaBHZxuVFf2rBUD| zdw|3rOu10M)|hKk3FCz^ zR16VV0+<-=Pwt1{AKcFZmhk`8K@sua^C{y(>$l>}$%FOvb3p^jp8h4qQ&YT!Xx*(;bH08swrd)UD zGMYXPwFCd$i85v#(bFeoly;(sJGBrzYTYJDS2irnG<74lnEMB_10>cKSQ-5&S-h1? z@R!pu8U#K>-Y%R-)AZ#5oIqhsNJPXQ`QQxUC6f1IoMcNyIbK|tc0!QK^i}$FBdMrX z|99PmYAH&+UpcpQqNyl%Xsy()DfPZx3&WWbS6e>QaC6C)YElLIGLElb<4_9tb(io@ zCt}>(oa9MmQUaz-(*=!jQ9Er+p#F~)$5ky$z9c4KJxVS%?I zgr9max*mL3SfRnXv2*-u6*L5#IL0{pM&3J^t!`E)iUL>0TTKXrlH5+Y;sGE2jeHFv z;4QA8<#f=bvJ7MjfYG_Krd8F~pKY4%3hciR?6gSfa8a6QRm0zaDhR#yfRik4OOAU# zh51k63 zt#2-R#+Swzb_lgIk5tUf5j#m*joG3Y?^$xT5j@FE{j3Qbqm(EstACYra4cq?T@~*6 zO_h4*7r$N&!0z9Ym?eT4&uLQEpa?=1UzAu8q7`y?;c;^gdo9A|^{PjKSE9~?EkA_I?Rbj4U6B6I%e&59z z0{bu2O5h)w-1qBt*|NrHqaP{vL6|-Elc7)E(MApVN|o<`V>rWqWSV7Ha?ia;{0zy?2{Qw2^bXB=!7@KH1I@IS&S8W9v2bnFatuOKh&ZI_t6;vh*Z}8@Oyb&=6Jp) zq@Ibr3B_M&ui@-b=Gqpkx~$paA$Te)?t+?Com-#0-1m4&1vPm7qRloS6!7bkXHW-Vfa6Pf{`4PZ-7&xKAOOQZL)XQAjrbsNW zqez3*(z6vWz-hme{a}*O=`?`AScNqdepR@5zwa#}y>XQmBc&?D+i5I_C3K-rL9Nt)Q?I~#A zlcghvA8hGFp8^GaXnEb`$zv6Wqk#9w=ZN<5tUVmY|t$|^{l?I!a9k6ca{HUjZo-AYLZtM~CRM$m;(eZ>t_yeM{7Vofz-RdZJ zmv18gpFpMzunA=JW4T3ep?VLYt586?g;+ z1L7)^lQ=@3U2&~S((*HaUcwfGsAf1hd7zvHJ(lp^(%VkU`GP&a>Bdq~eww%EIem^8 zPKfjKz(tjKpkr4**v)Wr665SQW`+j?3O!w!AmIo&7Qcn@Ks$Y*+VcQ2Pno^Rxu?Zm z6lX-d+!&OgQg7xpwb0HrC2?_v#Ege;hE4aA40i@VplD%5gA;L2)op=sfH{$gn| z*>fVj0a_0bcHL1?4{J<317v8o%UdPZ(395l7EG^BU|-VwnL0lfP?8r2(y$(LQ8RD9 zv>S$P$V=kU{PKo^S#w3{nGDU^VHk}nlr3F~{zh(K9?D^hq{0s>>`sU)oo7rG&ipNa$l+Xj4MaTr@MH!w{Uu7Z`~bs&CtLsk literal 2439 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 diff --git a/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_RegularPolygon_V(7)_R(80)_Ang(-180).png b/tests/Images/ReferenceOutput/Drawing/FillPolygonTests/Fill_RegularPolygon_V(7)_R(80)_Ang(-180).png index 50ab7260565569498a3b2a758811077701ac0890..92a187c7f368c25ff81d56238b441d68821567d8 100644 GIT binary patch literal 129 zcmWN?%MrpL5CG6SRnUOpyTGO!0*f%Cl5sHytJimV7rlARm+WhuyeoAd>-K28{qLV+ zEAy%Nq@pe(=BSc;wh;E@J$M2_8*J0fCXZ+ng44MsowNbh&{2sdI1gBI%7F2pT0ELS MBzSyDI%lHz0eyQWHvj+t literal 2847 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 NJ1(RBNGPS<@(1NeC$azl literal 1523 zcmeIy=~Giz6aer?0K=|R8DtBnj4+fcSVRnx1!R#H5=XQOgs@11z931{I9wwXMv*{$a9!>_CM?(VvuFP>9hEZ}rL;wIhW}B}j7{fMAI~ z09Jpmhd~$Pei8r}{~i_;a4eTPJ(A3J47M)q-RZKUB8gaHg!&Cgu=ozExqPX$8>^}7 zCl`NckJ{V(>Kw+VV-n{q+cxsFKQg;ve5U$~xS@E{^{poRLi9^6&qu|xBJ?*E>2|~7 ziI7^+@-A3%!bWYy{dpbn=H9taY=g0oqNN>(zG`6!b$bv^x2Rn8Nd zdHK$%s}Ok#O<*l+5Xtf8u*UBpBI8ZH+_s#)e10{(L{QGgn;}|CfVCNK@=YCUMX(b{VdNR1K6%bM736#Xt$lk?ML0wp>2F>(mNrLiDGt&mCxX{7N<65d=5l9mob zx?IZ)6&Lp{kPgL$D$l*kxczc5vLMd;NK0DT<{3Ss)}`#YTU}XQVNS;Qo!5zPGv(*^ z4y}L;I-Aa;%jvVp-su)+g+$tf;xFYb{sc#LEv5qPOyPzN`GIn97Tiqt^zF7w#KpM4 zV-`*qM%<+4aYcB6Zsu3RH~t_QWPogtccmBiPw#LIQ!?PucLnphlu|G~CzYU`t}~n* z?m>L09qNFDi}8QfVXR($*(wf??XOSo%=k&PI;YOpE{;@1s6Q))74}dxR09pCzR;Dj zvd*J3yt3PQ+CDjfAW&7P+xdIY6P1sIdWv)4+0cbix+S<9i~!GqEU>Bd-(7vZ!}ZLE znt@1-fub#7mVb&Ka;%HeMU^Mm5OJEJ=#)$p_UOVN`NL7#|NIW$`xz=z(H)=+gAQ0H~87xs0M?F972pv_oO(E@N}^NDq`S5aKGSaxE#zO z%+HueObq7J{=$WKCMaep@#c;#r%jCP|G$2F2P;tJX>GRD7Vy~PNBE-#!h%Ub+`#w? F{{iZcr#}Dy diff --git a/tests/Images/ReferenceOutput/Drawing/SolidBezierTests/FilledBezier_Rgba32_Blank500x500.png b/tests/Images/ReferenceOutput/Drawing/SolidBezierTests/FilledBezier_Rgba32_Blank500x500.png index dfd8b96893070b1e24675109e60d160e3dda68ff..8fd9f9f70c2565a40cd3a351344c3ade8c061009 100644 GIT binary patch literal 129 zcmWN?%MrpL5CG77s-OV_yZqA)3#>4sk`c_o>h)dTRo}CZmuPF9^N{l1*X_Y`|KC2e z=kb*DtXW>Ljb6lT39UQO0I+87J#)~>qw_&Aa@1fca4t@fA!7*vT!CT<5=YW0#SA5e LZT4>!PFdW3uD>TS literal 5585 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 L%j{nWqk>s};QuH9 literal 2997 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 JJq2|s{r|LMN{avh diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid100x100_(0,0,0,255)_RichText-Path-(spiral).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid100x100_(0,0,0,255)_RichText-Path-(spiral).png index 6859b5cb8..988065cfd 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid100x100_(0,0,0,255)_RichText-Path-(spiral).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid100x100_(0,0,0,255)_RichText-Path-(spiral).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d31fa3597ccc94043ccba642c555b72b0406ec42cb0579898be516f15b370f3 -size 4212 +oid sha256:111e7e67e162d5ebd8bed565f6a08b7e35a04887433df734c45d2ad49cc4b8d7 +size 4163 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid120x120_(0,0,0,255)_RichText-Path-(triangle).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid120x120_(0,0,0,255)_RichText-Path-(triangle).png index 6c35f6af2..90d671467 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid120x120_(0,0,0,255)_RichText-Path-(triangle).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid120x120_(0,0,0,255)_RichText-Path-(triangle).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a1c28a34cf8679e7734471c3c08f9c44894c72560871781a98a2fe528d54639 -size 4272 +oid sha256:9fd3f7afd31e31126fe4ec0296e57e9229ca37a46df8f6afc6fce07d6888a2fd +size 4227 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid350x350_(0,0,0,255)_RichText-Path-(circle).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid350x350_(0,0,0,255)_RichText-Path-(circle).png index bffbd7da1..d970c7389 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid350x350_(0,0,0,255)_RichText-Path-(circle).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawRichTextAlongPathHorizontal_Solid350x350_(0,0,0,255)_RichText-Path-(circle).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2eb0655a628c0c5d59015bf4509d554a33eb14a4dce7a0920dc969a4e3f9192f -size 5331 +oid sha256:c89f30a2cbe68f41175525ae18c7ec6073f3ef56bdb40cc7764efe3a96531054 +size 5277 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank100x100_type-spiral.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank100x100_type-spiral.png index f3fc9605c..57a601d88 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank100x100_type-spiral.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank100x100_type-spiral.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52a24a4a88b0188078dc3368f66f50aa92c429651b401ca79e801db47363c314 -size 5082 +oid sha256:08eb9d4b392590e577e588457f3ae99955ddea56c88139e4eb540a5cdabfd03e +size 5038 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank120x120_type-triangle.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank120x120_type-triangle.png index 901080a07..2af29d74e 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank120x120_type-triangle.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank120x120_type-triangle.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7f0ac05a29dbf0235ba4cb7e96ac2164a432e2b6b1ee8b49de26f76c3d6a2e0c -size 4353 +oid sha256:e0f0aeb2e92aeb02da3b440c8e935bc820463ee3da2598619070eb495bb913c6 +size 4223 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank350x350_type-circle.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank350x350_type-circle.png index f756fba42..509eae80c 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank350x350_type-circle.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathHorizontal_Rgba32_Blank350x350_type-circle.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c5198e6f7d8b8dcf5fb0e301580266669aa1b930f94054773d1eb25ee6d4c890 -size 9001 +oid sha256:85cd584271c4ebb12f84e4c4de5bced9d8a559b05fdf16b2bd94b47078aa6a07 +size 8901 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathVertical_Rgba32_Blank250x250_type-triangle.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathVertical_Rgba32_Blank250x250_type-triangle.png index 092fd0b7e..ebd613b6e 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathVertical_Rgba32_Blank250x250_type-triangle.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathVertical_Rgba32_Blank250x250_type-triangle.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1cea2edbeb61434012966d82f2b3907a7ec9182e937aba5279acf1771b01de91 -size 5380 +oid sha256:321dd1559eed6db92d1d963f507944663d936feeb2ae5f0c171aa001779284c5 +size 5303 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathVertical_Rgba32_Blank350x350_type-circle.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathVertical_Rgba32_Blank350x350_type-circle.png index 5e035a9bd..6fbee1774 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathVertical_Rgba32_Blank350x350_type-circle.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextAlongPathVertical_Rgba32_Blank350x350_type-circle.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3052ecfcec07b8067fa56d91227a7354427f4fc8daa5785664d4df5345853e12 -size 7550 +oid sha256:1e5cb928e95253083624926734efa0429cfc054e03d80dec1e76bb689838478a +size 7392 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextVerticalMixed_Rgba32_Blank500x400.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextVerticalMixed_Rgba32_Blank500x400.png index d9c16030a..dae15c9b5 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextVerticalMixed_Rgba32_Blank500x400.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextVerticalMixed_Rgba32_Blank500x400.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:84e47aac0a9fb574e4140ec75e03bb11ca7b3fbdf7cc39989703f4bdef6a27de -size 9504 +oid sha256:7b9643956dc1d9173b65b3e7adc7231995e479d83bff06b842663a8f6f6f287b +size 10420 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextVertical_Rgba32_Blank500x400.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextVertical_Rgba32_Blank500x400.png index d7ed4103a..b0272c32d 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextVertical_Rgba32_Blank500x400.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanDrawTextVertical_Rgba32_Blank500x400.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e7531c53a3babe5243374f582bc79330aa663e49b1d5158e635b18801d2093d1 -size 4695 +oid sha256:130319e01dddc5744b4a22e37b9967a817cd5cbb953e52fd1c01a3c6adafee94 +size 4542 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanFillTextVerticalMixed_Rgba32_Blank500x400.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanFillTextVerticalMixed_Rgba32_Blank500x400.png index a90dae413..bccffd3db 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanFillTextVerticalMixed_Rgba32_Blank500x400.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanFillTextVerticalMixed_Rgba32_Blank500x400.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:000526fbe95e5ce84144cb933a36c0272b886bb7cbc79684389e2c6fa9755038 -size 9645 +oid sha256:05b8b6dd44989e815a3f57ffd6b775333049fad87c6fe2c58aa22d6957845717 +size 10662 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanFillTextVertical_Rgba32_Blank500x400.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanFillTextVertical_Rgba32_Blank500x400.png index d5b7018bf..98bc78283 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanFillTextVertical_Rgba32_Blank500x400.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanFillTextVertical_Rgba32_Blank500x400.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68bc96ce74e742708f84391387c879c915acd576d334346b2d32b1990058b505 -size 4743 +oid sha256:0d0ba99286a30c6dcfa422bd3e78633bf3f11a3d03a1719b29c1b9f9625c57d9 +size 4611 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateFilledFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-Quic).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateFilledFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-Quic).png index 8edcee11f..161cea1c6 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateFilledFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-Quic).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateFilledFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-Quic).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb5b0018f8b464e389379b3b50c89e941d49eec211107b5ddbbfad10c49d14ad -size 2011 +oid sha256:5df9a8f260766ff306adffec340b28ee2f90ce0e9c9034cff41c4dd63f4a6413 +size 1973 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateFilledFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-Quic).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateFilledFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-Quic).png index 531056ea5..22857edc9 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateFilledFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-Quic).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateFilledFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-Quic).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49926d3e7aeb9043d3e64d251409963f4bc0022eb8fe2a5495c46125efa30a7e -size 1769 +oid sha256:1c1926b779cacd76247b9804b33ded10c3f594c57a140ffeef63b3cbde32837d +size 1719 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateOutlineFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-STR(1)-Quic).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateOutlineFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-STR(1)-Quic).png index 0957c3e72..3a9f993f8 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateOutlineFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-STR(1)-Quic).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateOutlineFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(32)-A(75)-STR(1)-Quic).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:071dcbc4215ad9e67f12cd3cca802c09ca94c536e3214665c215e8732cf3a5c4 -size 2667 +oid sha256:929c94f2f189f4ee31e44ebc4afe3a2526d6cdf73a1d95a9a763fbdb3d24cf7c +size 2611 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateOutlineFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-STR(2)-Quic).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateOutlineFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-STR(2)-Quic).png index f500a3df1..9764d93e9 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateOutlineFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-STR(2)-Quic).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/CanRotateOutlineFont_Issue175_Solid300x200_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(40)-A(90)-STR(2)-Quic).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b144e75360ba2b70a532e323210e519795c91942532e4ac992af1b04b06ad72 -size 2510 +oid sha256:b28fd1903fe9bf3643de39f32a19c66dc87b7f1bfab8bc07c66b22e7d4b3882f +size 2459 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextArabic_Solid500x200_(0,0,0,255)_RichText-Arabic-F(32).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextArabic_Solid500x200_(0,0,0,255)_RichText-Arabic-F(32).png index 93e9b11c3..f2e7e5111 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextArabic_Solid500x200_(0,0,0,255)_RichText-Arabic-F(32).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextArabic_Solid500x200_(0,0,0,255)_RichText-Arabic-F(32).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f578c497e4dda636fd917eda65203c733f3f52417ba0229a43aecddda462fad8 -size 3103 +oid sha256:fcf8c0db2ac4aaff6989bc274e2c61c8430c4017a45c0af73fc0f0f08e68149a +size 3061 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextArabic_Solid500x300_(0,0,0,255)_RichText-Arabic-F(40).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextArabic_Solid500x300_(0,0,0,255)_RichText-Arabic-F(40).png index f9aac5b66..04bc2c229 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextArabic_Solid500x300_(0,0,0,255)_RichText-Arabic-F(40).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextArabic_Solid500x300_(0,0,0,255)_RichText-Arabic-F(40).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0e4dfba3f80e315d636582bab3e2f36f2631c1769792f340586b0d230a596412 -size 3931 +oid sha256:e9c8d5822133e2857a0f94dc07ab48727d939ebce2f28d00cb221e9b5062dc9c +size 3871 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextRainbow_Solid500x200_(0,0,0,255)_RichText-Rainbow-F(32).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextRainbow_Solid500x200_(0,0,0,255)_RichText-Rainbow-F(32).png index df6bf1f9c..ef3383271 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextRainbow_Solid500x200_(0,0,0,255)_RichText-Rainbow-F(32).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextRainbow_Solid500x200_(0,0,0,255)_RichText-Rainbow-F(32).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:311a216993a688d110aa3008360ba3315e4ae2ea964061f6cd14ec6f589bfa04 -size 8827 +oid sha256:36be770f7fdd6958173dcb63d2fa4e3dbb16b52c3380f905fe6ced1e840f8829 +size 8724 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextRainbow_Solid500x300_(0,0,0,255)_RichText-Rainbow-F(40).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextRainbow_Solid500x300_(0,0,0,255)_RichText-Rainbow-F(40).png index 3a85f9a22..3146dbb7c 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextRainbow_Solid500x300_(0,0,0,255)_RichText-Rainbow-F(40).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichTextRainbow_Solid500x300_(0,0,0,255)_RichText-Rainbow-F(40).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:329b6d3564b26b33f133236313f51dfd361fc73625f19234df828a3d3c05f655 -size 11533 +oid sha256:319353b59dd0523078a08e5952e515dda6e905eb17677e8b23e43b8a3c0a49c5 +size 11577 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichText_Solid500x200_(0,0,0,255)_RichText-F(32).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichText_Solid500x200_(0,0,0,255)_RichText-F(32).png index 8fe52c7a9..0657edf77 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichText_Solid500x200_(0,0,0,255)_RichText-F(32).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichText_Solid500x200_(0,0,0,255)_RichText-F(32).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc4639e3835cd6411a563a185eb19a49e7c307e66cda8df9ef7186d25c5b3854 -size 9322 +oid sha256:15ff7c174ace497148ca49836ff487c0c595c80574294891f8085a1478e11ccd +size 9208 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichText_Solid500x300_(0,0,0,255)_RichText-F(40).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichText_Solid500x300_(0,0,0,255)_RichText-F(40).png index 75666501e..6fd9acac2 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichText_Solid500x300_(0,0,0,255)_RichText-F(40).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/DrawRichText_Solid500x300_(0,0,0,255)_RichText-F(40).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8c63b67d55bdf45724f64ef0518c7962da912bf1bfc9fb38614c39715cf8f1c2 -size 11837 +oid sha256:c0f7abd6c3d436a77c86540f40419c1a6ca456c2ab27aafd0ccc913b16e6a825 +size 11818 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/EmojiFontRendering_Rgba32_Solid1276x336_(255,255,255,255)_ColorFontsEnabled-False.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/EmojiFontRendering_Rgba32_Solid1276x336_(255,255,255,255)_ColorFontsEnabled-False.png index 9fdc8cf68..d9abd57c6 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/EmojiFontRendering_Rgba32_Solid1276x336_(255,255,255,255)_ColorFontsEnabled-False.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/EmojiFontRendering_Rgba32_Solid1276x336_(255,255,255,255)_ColorFontsEnabled-False.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18e7d238c5cf9b28f73c083cfdb18e7b4db83bc3dc9d959906e5e1db2e049df6 -size 9986 +oid sha256:e9e294bb2381916430551c07f2c916e950764dfaad6763077d0643c6bae8b41b +size 9992 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/EmojiFontRendering_Rgba32_Solid1276x336_(255,255,255,255)_ColorFontsEnabled-True.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/EmojiFontRendering_Rgba32_Solid1276x336_(255,255,255,255)_ColorFontsEnabled-True.png index 3d25eda50..de37ec085 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/EmojiFontRendering_Rgba32_Solid1276x336_(255,255,255,255)_ColorFontsEnabled-True.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/EmojiFontRendering_Rgba32_Solid1276x336_(255,255,255,255)_ColorFontsEnabled-True.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba6dbef390dc02fa2684355bda6cf9a38f52f6a8c3468fc4e4fb449cfc0ed88a -size 18214 +oid sha256:0ef76e31fe343677beca2689140ebcdddc5fdb8a6b0cc4ea20fcea6f6c640c15 +size 18201 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FallbackFontRendering_Rgba32_Solid400x200_(255,255,255,255).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FallbackFontRendering_Rgba32_Solid400x200_(255,255,255,255).png index 4a43cf209..105cb5134 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FallbackFontRendering_Rgba32_Solid400x200_(255,255,255,255).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FallbackFontRendering_Rgba32_Solid400x200_(255,255,255,255).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:460ab85bf88b181f95fcfc5f029f826d2781aa56f6e770e676e1c7a0e0f02f11 -size 1819 +oid sha256:49947ffc9f41bb1f81ea553e302d6c5790a9298aa081c6ce509bbfa04e413b45 +size 1778 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid1100x200_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid1100x200_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png index c378e8e8b..e17af50ae 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid1100x200_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid1100x200_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:450d4edb2b067c212705387ea6a42763464707c86d0ddd365b81c1795ad31c93 -size 17917 +oid sha256:de4d86af24fca7886599d9fed212db071142fe8a63f5babef9ee684a053a6731 +size 18135 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png index d2f981c1b..247d3f075 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bb97d53d830d65c290158ce1bbd5eae4033727f8fe8b534b7555c4bde89c9db0 -size 1244 +oid sha256:0b377461da27d919e5a7a85d116ad6a7732f712949e27a89aa0c19df8afba356 +size 883 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid900x150_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid900x150_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png index a812816e3..9c5bc504e 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid900x150_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPenPatterned_Solid900x150_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:65702ca76b6301fa1c4c1ecf4b07e654de1a4a59940ed156fc91d8670cf4c56a -size 17366 +oid sha256:39220ac8f35a5a34ff064bb9d323fc4c918b034b9f89b90c592049251b7f52c4 +size 17515 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid1100x200_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid1100x200_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png index 5846aaaad..69a790602 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid1100x200_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid1100x200_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(150,50).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:95d22407bc35b2ceb3c671ea26a2941acb43a5f5b182d70a7712db8f21aa4ae9 -size 15131 +oid sha256:76779666a2620f2cb46641777c45dcee16bd9e7dcc81fd546690de281a2ac088 +size 15112 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png index 3b49924bb..aa07656de 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid200x150_(255,255,255,255)_pen_SixLaborsSampleAB.woff-50-ABAB-(0,0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a179fba9d30ba0c7cf21f07ab3b0e2c0260eeb2c62cd9bd581e6b09107819af6 -size 1036 +oid sha256:d76d1419f34486f902a558f209fa2906b226215d405c27f4a983e7d546ae096e +size 715 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid900x150_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid900x150_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png index 5521b875f..721430678 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid900x150_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectlyWithAPen_Solid900x150_(255,255,255,255)_pen_OpenSans-Regular.ttf-50-Sphi-(0,0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb532482912d8f63ff78c193d2e9dcaf1abc66163c973d5ffdad31d86a8ac4d3 -size 14673 +oid sha256:8d74f5625b00b45cfd84247b3a69d9da296723ec4dbf4f7891e695e7985ee2ce +size 14551 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_LargeText.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_LargeText.png index 0c1d6b523..8e7a5646c 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_LargeText.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_LargeText.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3367a65234258a6a26688eaadded51b97cd1efccba56534078a29cec80c868dd -size 110735 +oid sha256:f38c83e52e4790b567e3cd3e30b7780e861ed45165352b19512d723a271c4346 +size 112821 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid1100x200_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(150,50).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid1100x200_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(150,50).png index a55a451ff..b61c07492 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid1100x200_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(150,50).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid1100x200_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(150,50).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6688a59280db47c5a41e2c0e3e03383066a9e9f6606e55fe129c96159edbe88 -size 11085 +oid sha256:941619533a2b87701134b2d3ef61abb581d4c74e521de1cb0ff2962f1bb16ff3 +size 11175 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid20x50_(255,255,255,255)_OpenSans-Regular.ttf-50-i-(0,0).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid20x50_(255,255,255,255)_OpenSans-Regular.ttf-50-i-(0,0).png index 6552efe86..b2ef32d33 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid20x50_(255,255,255,255)_OpenSans-Regular.ttf-50-i-(0,0).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid20x50_(255,255,255,255)_OpenSans-Regular.ttf-50-i-(0,0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82a1611e1bfd506bc056a389da40c200eebfd3114297aec8f316baed361bf44b -size 280 +oid sha256:511722041e95c8bf5a7a9e095d1608fe5aeb744fc852bb1af48e55d55e780944 +size 147 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid400x45_(255,255,255,255)_OpenSans-Regular.ttf-20-Sphi-(0,0).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid400x45_(255,255,255,255)_OpenSans-Regular.ttf-20-Sphi-(0,0).png index 09e231042..39df54e75 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid400x45_(255,255,255,255)_OpenSans-Regular.ttf-20-Sphi-(0,0).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid400x45_(255,255,255,255)_OpenSans-Regular.ttf-20-Sphi-(0,0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:16d0df791297d9a491810f05b0994a266164c6a5e0d180b4645107030283aa8a +oid sha256:0b0529f8c9792e25dfeed3a6f340e46516c3d81221da2cece7c11ff40b18e596 size 3589 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid900x150_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(0,0).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid900x150_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(0,0).png index fadf35b40..4981e0607 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid900x150_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(0,0).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_Solid900x150_(255,255,255,255)_OpenSans-Regular.ttf-50-Sphi-(0,0).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d27be541dfc5a3a0bafca3b8204118ca3c062ad4024f7e6f3debc7160c5679f7 -size 10527 +oid sha256:3355c17fcb729fce63ca166e33b97a3d5cc872852f72ed9e8bd6dfeeac444720 +size 10587 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1.5_linecount_3_wrap_False.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1.5_linecount_3_wrap_False.png index f37eeeb5f..4ddd3d3bb 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1.5_linecount_3_wrap_False.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1.5_linecount_3_wrap_False.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1705d215b8424ca998b8d23264b6078f68b8145079f3c479a479a9e48bd11f9d -size 2830 +oid sha256:9032865f8f6ba69ab441214529de25f1dc2feade5c1325f2ac41fae385b4eab7 +size 2794 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1.5_linecount_3_wrap_True.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1.5_linecount_3_wrap_True.png index 8a11f2eac..c5a9ae98e 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1.5_linecount_3_wrap_True.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1.5_linecount_3_wrap_True.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b32fd4bd997df568c0c8ed437a6b9a7fcfbb48e35fef18fa28e87c0f5b0947e2 -size 24872 +oid sha256:f0b957c1be2a9447de3502e00042e55ffa06581363883107c809b6618df549ec +size 24916 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1_linecount_5_wrap_False.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1_linecount_5_wrap_False.png index f61170458..5f25c361d 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1_linecount_5_wrap_False.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1_linecount_5_wrap_False.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e40cc5fae7127ee24807a8f4720a57c3ed6f0eea6787d13da213dd7789c6d4f -size 2844 +oid sha256:0a630be87d45383b25f884246b389c9f220701c1414b131cef7621e80a3c4e5d +size 2863 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1_linecount_5_wrap_True.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1_linecount_5_wrap_True.png index 764a9ae08..71adb77fb 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1_linecount_5_wrap_True.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_1_linecount_5_wrap_True.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3b78d61038876d453c8a6b0a8ac461ab7abc0ab77618c8612d825648d1f1e523 -size 35374 +oid sha256:9dd38d152388a86571f6ebab1e5f8c69265dd3f0644bec7b18628b755bd75c11 +size 35476 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_2_linecount_2_wrap_False.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_2_linecount_2_wrap_False.png index 652e6c25a..e242c0aa7 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_2_linecount_2_wrap_False.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_2_linecount_2_wrap_False.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85614685419789b5a656fd19bc0542d91009164da8a86c4b01d975dc99a51ef2 -size 2816 +oid sha256:7187968b2bf4c5cdd90530f53c416a362345a24a03f448711717897a4f9a9826 +size 2777 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_2_linecount_2_wrap_True.png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_2_linecount_2_wrap_True.png index 195d48aa3..5627051b9 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_2_linecount_2_wrap_True.png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithLineSpacing_linespacing_2_linecount_2_wrap_True.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b910f7c863fc76ad147ab48a3f9f0f5f8a43d7a2290fbfd8ee8cdc4f29568602 -size 17629 +oid sha256:0e11b6518596f2235149f62471919ee6c7b991edfd260bdc4b48e61dd0a4a00e +size 17650 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithRotationApplied_Solid400x400_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(20)-A(45)-Sphi-(200,200).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithRotationApplied_Solid400x400_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(20)-A(45)-Sphi-(200,200).png index 881c6f694..14d2ab850 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithRotationApplied_Solid400x400_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(20)-A(45)-Sphi-(200,200).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithRotationApplied_Solid400x400_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(20)-A(45)-Sphi-(200,200).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ac46db738f49ff6072fafcbe6dbde47bb39a897c3f2ee85500269095938bd44 -size 5561 +oid sha256:07b789bbdb8e20e9fea5f70e4326f665a8974f4fb8bfa338032de34214a54a30 +size 5503 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithRotationApplied_Solid50x50_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(50)-A(45)-i-(25,25).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithRotationApplied_Solid50x50_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(50)-A(45)-i-(25,25).png index 794497a7f..d01ee4ab4 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithRotationApplied_Solid50x50_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(50)-A(45)-i-(25,25).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithRotationApplied_Solid50x50_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(50)-A(45)-i-(25,25).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c8e916390f476c4be19cf9af52b538c0c6d4c35ec0b37b357fa393ff380c674 -size 417 +oid sha256:d19338ddce54b87fd2784ff6a747abe00bc069983f8b1a30a41f5ce52ca09e22 +size 260 diff --git a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithSkewApplied_Solid400x400_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(20)-A(0,-10)-Sphi-(200,200).png b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithSkewApplied_Solid400x400_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(20)-A(0,-10)-Sphi-(200,200).png index 2732e246c..42cd7862e 100644 --- a/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithSkewApplied_Solid400x400_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(20)-A(0,-10)-Sphi-(200,200).png +++ b/tests/Images/ReferenceOutput/Drawing/Text/DrawTextOnImageTests/FontShapesAreRenderedCorrectly_WithSkewApplied_Solid400x400_(255,255,255,255)_F(OpenSans-Regular.ttf)-S(20)-A(0,-10)-Sphi-(200,200).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e20f601f9193ad75cdc97f978d2adbac023b9592f8daf3f87be0b1330881f2a1 -size 5076 +oid sha256:23e87b0b8e9a8964a5529ef5af7334b8f9504697bb40d448a760f6feec73d68e +size 4991 diff --git a/tests/Images/ReferenceOutput/RasterizerExtensionsTests/AntialiasingIsAntialiased_Rgba32_Solid400x75_(255,255,255,255).png b/tests/Images/ReferenceOutput/RasterizerExtensionsTests/AntialiasingIsAntialiased_Rgba32_Solid400x75_(255,255,255,255).png index b18af7e56..2cd41e18c 100644 --- a/tests/Images/ReferenceOutput/RasterizerExtensionsTests/AntialiasingIsAntialiased_Rgba32_Solid400x75_(255,255,255,255).png +++ b/tests/Images/ReferenceOutput/RasterizerExtensionsTests/AntialiasingIsAntialiased_Rgba32_Solid400x75_(255,255,255,255).png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9950be5c4b9024969a96b8b30be5b30b6252366e492a14dd7f33db692453188d -size 397 +oid sha256:99764d59709bd221934905db1d6d344884862d30a48c07773fbfaf79234429d2 +size 347 diff --git a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank110x50_type-wave.png b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank110x50_type-wave.png index 91eae570d..cc452578a 100644 --- a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank110x50_type-wave.png +++ b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank110x50_type-wave.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d00fe95e5f1124c104a6bc1343f3c4f2e862f9905425d22d39645114645c2743 -size 870 +oid sha256:94da32b8d3ddf4d14cde06070fccbcacc4b4cecd241d1f97ef3f95cc0edb69af +size 814 diff --git a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank110x70_type-zag.png b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank110x70_type-zag.png index e955d615d..208139a74 100644 --- a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank110x70_type-zag.png +++ b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank110x70_type-zag.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f494915daf93b3fa6f8bc6be08cdb410615a9708a89e5542b64f0f73c172466 -size 922 +oid sha256:d5a411e3e7003e816aca3d00e8d42649b024e099122c75e1a9b9a631500dd4e6 +size 1002 diff --git a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-bumpy.png b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-bumpy.png index e8d4e856c..0d6b025eb 100644 --- a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-bumpy.png +++ b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-bumpy.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9b93cfe79f4038e87af7c2b3908a73cd9315463000e2a70f235c92ff9c3913e1 -size 10086 +oid sha256:fa1a440cb4e8dbf751c99790a99b2d619bd790dc697cf9eed056d5a3a90541e2 +size 5094 diff --git a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-chopped_oval.png b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-chopped_oval.png index 754e01e9f..4440a16e4 100644 --- a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-chopped_oval.png +++ b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-chopped_oval.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49ae0db9378f7885d8d7aee40f0efa8bd4a03ca1617641fa173f5d145cd880b4 -size 5682 +oid sha256:21ae15a8e140b5dc0f4ad203102efad9a23e8e052f312f12c14e917c0f10ba1f +size 2815 diff --git a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-pie_big.png b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-pie_big.png index b8517f643..8fb827fc0 100644 --- a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-pie_big.png +++ b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-pie_big.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:258ac071e347abe666c1c1d556e567547b861c7689199ff7fea9def6acf8be23 -size 2644 +oid sha256:7355ccda587cbcd8bd9c37df13fcc1db8e32e2bcce1b8a903d221cfa1e09fe4f +size 2593 diff --git a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-pie_small.png b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-pie_small.png index ce8e38a5a..e5dfdffd1 100644 --- a/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-pie_small.png +++ b/tests/Images/ReferenceOutput/SvgPath/RenderSvgPath_Rgba32_Blank500x400_type-pie_small.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0e23125bf0125159d19fcc7ef8c371486fa5cb24d4445d5fbde892a5b888deba -size 5036 +oid sha256:48a391f2d2ccbc2c4b8ba2ef07e3a8a881dc6c397e1622e64738c7d46ae35bda +size 4980 From c18494bdca6eac8e3ab988f2606f3b3f6921e49e Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Thu, 7 Sep 2023 20:58:36 +1000 Subject: [PATCH 04/15] Tweak tolerance for Win .NET 7 --- tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs b/tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs index cf807995f..e638f1f68 100644 --- a/tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs +++ b/tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs @@ -196,7 +196,7 @@ public void FillPolygon_StarCircle_AllOperations(TestImageProvider provi provider.RunValidatingProcessorTest( c => c.Fill(Color.DeepPink, circle).Fill(Color.LightGray, star).Fill(Color.ForestGreen, shape), - comparer: ImageComparer.TolerantPercentage(0.01f), + comparer: ImageComparer.TolerantPercentage(0.014f), testOutputDetails: operation.ToString(), appendSourceFileOrDescription: false, appendPixelTypeToFileName: false); From ac69b4cf92c79c6476307c52a766705f780233c5 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Thu, 7 Sep 2023 21:11:04 +1000 Subject: [PATCH 05/15] Tweak tolerance for Win .NET 7 --- tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs b/tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs index e638f1f68..41bd37ed3 100644 --- a/tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs +++ b/tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs @@ -196,7 +196,7 @@ public void FillPolygon_StarCircle_AllOperations(TestImageProvider provi provider.RunValidatingProcessorTest( c => c.Fill(Color.DeepPink, circle).Fill(Color.LightGray, star).Fill(Color.ForestGreen, shape), - comparer: ImageComparer.TolerantPercentage(0.014f), + comparer: ImageComparer.TolerantPercentage(0.0203F), testOutputDetails: operation.ToString(), appendSourceFileOrDescription: false, appendPixelTypeToFileName: false); From ce4d2ac2a60be81f98b06e294781a0ba73cb42de Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Thu, 7 Sep 2023 21:40:02 +1000 Subject: [PATCH 06/15] Windows boxes must be shonky --- tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs b/tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs index 41bd37ed3..0c81852e8 100644 --- a/tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs +++ b/tests/ImageSharp.Drawing.Tests/Drawing/FillPolygonTests.cs @@ -196,7 +196,7 @@ public void FillPolygon_StarCircle_AllOperations(TestImageProvider provi provider.RunValidatingProcessorTest( c => c.Fill(Color.DeepPink, circle).Fill(Color.LightGray, star).Fill(Color.ForestGreen, shape), - comparer: ImageComparer.TolerantPercentage(0.0203F), + comparer: ImageComparer.TolerantPercentage(0.0287F), testOutputDetails: operation.ToString(), appendSourceFileOrDescription: false, appendPixelTypeToFileName: false); From 775c95e8f249fa927a8083991f4d67305c07b9f0 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Thu, 7 Sep 2023 21:40:17 +1000 Subject: [PATCH 07/15] Add Sse41 rounding --- .../Rasterization/ScanEdgeCollection.Build.cs | 53 ++++++++++++++++--- .../Drawing/Rounding.cs | 52 ++++++++++++++++++ 2 files changed, 97 insertions(+), 8 deletions(-) diff --git a/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs b/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs index 8b313c127..f74093eb6 100644 --- a/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs +++ b/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs @@ -45,17 +45,17 @@ private enum VertexCategory RightRight, } - internal static ScanEdgeCollection Create(TessellatedMultipolygon multipolygon, MemoryAllocator allocator, int subsampling) + internal static ScanEdgeCollection Create(TessellatedMultipolygon multiPolygon, MemoryAllocator allocator, int subsampling) { // We allocate more than we need, since we don't know how many horizontal edges do we have: - IMemoryOwner buffer = allocator.Allocate(multipolygon.TotalVertexCount); + IMemoryOwner buffer = allocator.Allocate(multiPolygon.TotalVertexCount); - RingWalker walker = new RingWalker(buffer.Memory.Span); + RingWalker walker = new(buffer.Memory.Span); - using IMemoryOwner roundedYBuffer = allocator.Allocate(multipolygon.Max(r => r.Vertices.Length)); + using IMemoryOwner roundedYBuffer = allocator.Allocate(multiPolygon.Max(r => r.Vertices.Length)); Span roundedY = roundedYBuffer.Memory.Span; - foreach (TessellatedMultipolygon.Ring ring in multipolygon) + foreach (TessellatedMultipolygon.Ring ring in multiPolygon) { if (ring.VertexCount < 3) { @@ -123,6 +123,43 @@ static void RoundY(ReadOnlySpan vertices, Span destination, float } } } + else if (Sse41.IsSupported) + { + // If the length of the input buffer as a float array is a multiple of 8, we can use Sse instructions: + int verticesLengthInFloats = vertices.Length * 2; + int vector128FloatCount_x2 = Vector128.Count * 2; + int remainder = verticesLengthInFloats % vector128FloatCount_x2; + int verticesLength = verticesLengthInFloats - remainder; + + if (verticesLength > 0) + { + ri = vertices.Length - (remainder / 2); + float maxIterations = verticesLength / (Vector128.Count * 2); + ref Vector128 sourceBase = ref Unsafe.As>(ref MemoryMarshal.GetReference(vertices)); + ref Vector128 destinationBase = ref Unsafe.As>(ref MemoryMarshal.GetReference(destination)); + + Vector128 ssRatio = Vector128.Create(subsamplingRatio); + Vector128 inverseSsRatio = Vector128.Create(1F / subsamplingRatio); + + // For every 1 vector we add to the destination we read 2 from the vertices. + for (nint i = 0, j = 0; i < maxIterations; i++, j += 2) + { + // Load 4 PointF + Vector128 points1 = Unsafe.Add(ref sourceBase, j); + Vector128 points2 = Unsafe.Add(ref sourceBase, j + 1); + + // Shuffle the points to group the Y properties + Vector128 points1Y = Sse.Shuffle(points1, points1, 0b11_01_11_01); + Vector128 points2Y = Sse.Shuffle(points2, points2, 0b11_01_11_01); + Vector128 pointsY = Vector128.Create(points1Y.GetLower(), points2Y.GetLower()); + + // Multiply by the subsampling ratio, round, then multiply by the inverted subsampling ratio and assign. + // https://www.ocf.berkeley.edu/~horie/rounding.html + Vector128 rounded = Sse41.RoundToPositiveInfinity(Sse.Multiply(pointsY, ssRatio)); + Unsafe.Add(ref destinationBase, i) = Sse.Multiply(rounded, inverseSsRatio); + } + } + } for (; ri < vertices.Length; ri++) { @@ -136,7 +173,7 @@ static void RoundY(ReadOnlySpan vertices, Span destination, float [MethodImpl(MethodImplOptions.AggressiveInlining)] private static VertexCategory CreateVertexCategory(EdgeCategory previousCategory, EdgeCategory currentCategory) { - var value = (VertexCategory)(((int)previousCategory << 2) | (int)currentCategory); + VertexCategory value = (VertexCategory)(((int)previousCategory << 2) | (int)currentCategory); VerifyVertexCategory(value); return value; } @@ -145,7 +182,7 @@ private static VertexCategory CreateVertexCategory(EdgeCategory previousCategory private static void VerifyVertexCategory(VertexCategory vertexCategory) { int value = (int)vertexCategory; - if (value < 0 || value >= 16) + if (value is < 0 or >= 16) { throw new ArgumentOutOfRangeException(nameof(vertexCategory), "EdgeCategoryPair value shall be: 0 <= value < 16"); } @@ -190,7 +227,7 @@ public EdgeData(float startX, float endX, float startYRounded, float endYRounded public void EmitScanEdge(Span edges, ref int edgeCounter) { - if (this.EdgeCategory == EdgeCategory.Left || this.EdgeCategory == EdgeCategory.Right) + if (this.EdgeCategory is EdgeCategory.Left or EdgeCategory.Right) { return; } diff --git a/tests/ImageSharp.Drawing.Benchmarks/Drawing/Rounding.cs b/tests/ImageSharp.Drawing.Benchmarks/Drawing/Rounding.cs index 4d4f4fdfa..6d6bc327c 100644 --- a/tests/ImageSharp.Drawing.Benchmarks/Drawing/Rounding.cs +++ b/tests/ImageSharp.Drawing.Benchmarks/Drawing/Rounding.cs @@ -12,6 +12,7 @@ public class Rounding { private PointF[] vertices; private float[] destination; + private float[] destinationSse41; private float[] destinationAvx; [GlobalSetup] @@ -19,6 +20,7 @@ public void Setup() { this.vertices = new PointF[1000]; this.destination = new float[this.vertices.Length]; + this.destinationSse41 = new float[this.vertices.Length]; this.destinationAvx = new float[this.vertices.Length]; Random r = new(42); for (int i = 0; i < this.vertices.Length; i++) @@ -30,6 +32,9 @@ public void Setup() [Benchmark] public void RoundYAvx() => RoundYAvx(this.vertices, this.destinationAvx, 16); + [Benchmark] + public void RoundYSse41() => RoundYSse41(this.vertices, this.destinationSse41, 16); + [Benchmark(Baseline = true)] public void RoundY() => RoundY(this.vertices, this.destination, 16); @@ -80,6 +85,53 @@ private static void RoundYAvx(ReadOnlySpan vertices, Span destina } } + private static void RoundYSse41(ReadOnlySpan vertices, Span destination, float subsamplingRatio) + { + int ri = 0; + if (Sse41.IsSupported) + { + // If the length of the input buffer as a float array is a multiple of 8, we can use Sse instructions: + int verticesLengthInFloats = vertices.Length * 2; + int vector128FloatCount_x2 = Vector128.Count * 2; + int remainder = verticesLengthInFloats % vector128FloatCount_x2; + int verticesLength = verticesLengthInFloats - remainder; + + if (verticesLength > 0) + { + ri = vertices.Length - (remainder / 2); + float maxIterations = verticesLength / (Vector128.Count * 2); + ref Vector128 sourceBase = ref Unsafe.As>(ref MemoryMarshal.GetReference(vertices)); + ref Vector128 destinationBase = ref Unsafe.As>(ref MemoryMarshal.GetReference(destination)); + + Vector128 ssRatio = Vector128.Create(subsamplingRatio); + Vector128 inverseSsRatio = Vector128.Create(1F / subsamplingRatio); + + // For every 1 vector we add to the destination we read 2 from the vertices. + for (nint i = 0, j = 0; i < maxIterations; i++, j += 2) + { + // Load 4 PointF + Vector128 points1 = Unsafe.Add(ref sourceBase, j); + Vector128 points2 = Unsafe.Add(ref sourceBase, j + 1); + + // Shuffle the points to group the Y properties + Vector128 points1Y = Sse.Shuffle(points1, points1, 0b11_01_11_01); + Vector128 points2Y = Sse.Shuffle(points2, points2, 0b11_01_11_01); + Vector128 pointsY = Vector128.Create(points1Y.GetLower(), points2Y.GetLower()); + + // Multiply by the subsampling ratio, round, then multiply by the inverted subsampling ratio and assign. + // https://www.ocf.berkeley.edu/~horie/rounding.html + Vector128 rounded = Sse41.RoundToPositiveInfinity(Sse.Multiply(pointsY, ssRatio)); + Unsafe.Add(ref destinationBase, i) = Sse.Multiply(rounded, inverseSsRatio); + } + } + } + + for (; ri < vertices.Length; ri++) + { + destination[ri] = MathF.Round(vertices[ri].Y * subsamplingRatio, MidpointRounding.AwayFromZero) / subsamplingRatio; + } + } + private static void RoundY(ReadOnlySpan vertices, Span destination, float subsamplingRatio) { int ri = 0; From 20fb01978205682b4736a93724aaa762c4850291 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 8 Sep 2023 11:11:39 +1000 Subject: [PATCH 08/15] Use midpoint rounding for SIMD. And add feature tests --- .../Rasterization/ScanEdgeCollection.Build.cs | 11 +- tests/Directory.Build.targets | 2 + .../ImageSharp.Drawing.Tests.csproj | 4 +- .../Shapes/Scan/ScanEdgeCollectionTests.cs | 157 +++--- .../TestUtilities/BasicSerializer.cs | 92 ++++ .../FeatureTesting/FeatureTestRunner.cs | 465 ++++++++++++++++++ 6 files changed, 649 insertions(+), 82 deletions(-) create mode 100644 tests/ImageSharp.Drawing.Tests/TestUtilities/BasicSerializer.cs create mode 100644 tests/ImageSharp.Drawing.Tests/TestUtilities/FeatureTesting/FeatureTestRunner.cs diff --git a/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs b/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs index f74093eb6..4f67f40ca 100644 --- a/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs +++ b/src/ImageSharp.Drawing/Shapes/Rasterization/ScanEdgeCollection.Build.cs @@ -103,6 +103,7 @@ static void RoundY(ReadOnlySpan vertices, Span destination, float Vector256 ssRatio = Vector256.Create(subsamplingRatio); Vector256 inverseSsRatio = Vector256.Create(1F / subsamplingRatio); + Vector256 half = Vector256.Create(.5F); // For every 1 vector we add to the destination we read 2 from the vertices. for (nint i = 0, j = 0; i < maxIterations; i++, j += 2) @@ -118,7 +119,7 @@ static void RoundY(ReadOnlySpan vertices, Span destination, float // Multiply by the subsampling ratio, round, then multiply by the inverted subsampling ratio and assign. // https://www.ocf.berkeley.edu/~horie/rounding.html - Vector256 rounded = Avx.RoundToPositiveInfinity(Avx.Multiply(pointsY, ssRatio)); + Vector256 rounded = Avx.RoundToPositiveInfinity(Avx.Subtract(Avx.Multiply(pointsY, ssRatio), half)); Unsafe.Add(ref destinationBase, i) = Avx.Multiply(rounded, inverseSsRatio); } } @@ -140,6 +141,7 @@ static void RoundY(ReadOnlySpan vertices, Span destination, float Vector128 ssRatio = Vector128.Create(subsamplingRatio); Vector128 inverseSsRatio = Vector128.Create(1F / subsamplingRatio); + Vector128 half = Vector128.Create(.5F); // For every 1 vector we add to the destination we read 2 from the vertices. for (nint i = 0, j = 0; i < maxIterations; i++, j += 2) @@ -149,18 +151,17 @@ static void RoundY(ReadOnlySpan vertices, Span destination, float Vector128 points2 = Unsafe.Add(ref sourceBase, j + 1); // Shuffle the points to group the Y properties - Vector128 points1Y = Sse.Shuffle(points1, points1, 0b11_01_11_01); - Vector128 points2Y = Sse.Shuffle(points2, points2, 0b11_01_11_01); - Vector128 pointsY = Vector128.Create(points1Y.GetLower(), points2Y.GetLower()); + Vector128 pointsY = Sse.Shuffle(points1, points2, 0b11_01_11_01); // Multiply by the subsampling ratio, round, then multiply by the inverted subsampling ratio and assign. // https://www.ocf.berkeley.edu/~horie/rounding.html - Vector128 rounded = Sse41.RoundToPositiveInfinity(Sse.Multiply(pointsY, ssRatio)); + Vector128 rounded = Sse41.RoundToPositiveInfinity(Sse.Subtract(Sse.Multiply(pointsY, ssRatio), half)); Unsafe.Add(ref destinationBase, i) = Sse.Multiply(rounded, inverseSsRatio); } } } + // TODO: Arm64 for (; ri < vertices.Length; ri++) { destination[ri] = MathF.Round(vertices[ri].Y * subsamplingRatio, MidpointRounding.AwayFromZero) / subsamplingRatio; diff --git a/tests/Directory.Build.targets b/tests/Directory.Build.targets index 1f68dd1ed..d7f402ba5 100644 --- a/tests/Directory.Build.targets +++ b/tests/Directory.Build.targets @@ -20,6 +20,8 @@ + + diff --git a/tests/ImageSharp.Drawing.Tests/ImageSharp.Drawing.Tests.csproj b/tests/ImageSharp.Drawing.Tests/ImageSharp.Drawing.Tests.csproj index e28c765d1..5767ff844 100644 --- a/tests/ImageSharp.Drawing.Tests/ImageSharp.Drawing.Tests.csproj +++ b/tests/ImageSharp.Drawing.Tests/ImageSharp.Drawing.Tests.csproj @@ -6,7 +6,7 @@ latest True SixLabors.ImageSharp.Tests - AnyCPU;x64;x86 + AnyCPU;x64;x86;ARM64 SixLabors.ImageSharp.Drawing.Tests @@ -25,6 +25,8 @@ + + diff --git a/tests/ImageSharp.Drawing.Tests/Shapes/Scan/ScanEdgeCollectionTests.cs b/tests/ImageSharp.Drawing.Tests/Shapes/Scan/ScanEdgeCollectionTests.cs index 3c118fe23..df257ba0e 100644 --- a/tests/ImageSharp.Drawing.Tests/Shapes/Scan/ScanEdgeCollectionTests.cs +++ b/tests/ImageSharp.Drawing.Tests/Shapes/Scan/ScanEdgeCollectionTests.cs @@ -11,9 +11,9 @@ public class ScanEdgeCollectionTests { private static MemoryAllocator MemoryAllocator => Configuration.Default.MemoryAllocator; - private static readonly DebugDraw DebugDraw = new DebugDraw(nameof(ScanEdgeCollectionTests)); + private static readonly DebugDraw DebugDraw = new(nameof(ScanEdgeCollectionTests)); - private void VerifyEdge( + private static void VerifyEdge( ScanEdgeCollection edges, float y0, float y1, @@ -46,60 +46,65 @@ private void VerifyEdge( [ValidateDisposedMemoryAllocations] public void SimplePolygon_AllEmitCases() { - // see: SimplePolygon_AllEmitCases.png - Polygon polygon = PolygonFactory.CreatePolygon( - (1, 2), - (2, 2), - (3, 1), - (4, 3), - (6, 1), - (7, 2), - (8, 2), - (9, 3), - (9, 4), - (10, 5), - (9, 6), - (8, 6), - (8, 7), - (9, 7), - (9, 8), - (7, 8), - (6, 7), - (5, 8), - (4, 7), - (3, 8), - (2, 8), - (2, 6), - (3, 5), - (2, 5), - (2, 4), - (1, 3)); - - DebugDraw.Polygon(polygon, 1, 100); + static void RunTest() + { + // see: SimplePolygon_AllEmitCases.png + Polygon polygon = PolygonFactory.CreatePolygon( + (1, 2), + (2, 2), + (3, 1), + (4, 3), + (6, 1), + (7, 2), + (8, 2), + (9, 3), + (9, 4), + (10, 5), + (9, 6), + (8, 6), + (8, 7), + (9, 7), + (9, 8), + (7, 8), + (6, 7), + (5, 8), + (4, 7), + (3, 8), + (2, 8), + (2, 6), + (3, 5), + (2, 5), + (2, 4), + (1, 3)); + + DebugDraw.Polygon(polygon, 1, 100); + + using ScanEdgeCollection edges = ScanEdgeCollection.Create(polygon, MemoryAllocator, 16); + + Assert.Equal(19, edges.Edges.Length); + + VerifyEdge(edges, 1f, 2f, (2.5f, 1.5f), 1, 2, true); + VerifyEdge(edges, 1f, 3f, (3.5f, 2f), 1, 1, false); + VerifyEdge(edges, 1f, 3f, (5f, 2f), 1, 1, true); + VerifyEdge(edges, 1f, 2f, (6.5f, 1.5f), 1, 2, false); + VerifyEdge(edges, 2f, 3f, (8.5f, 2.5f), 1, 0, false); + VerifyEdge(edges, 3f, 4f, (9f, 3.5f), 1, 0, false); + VerifyEdge(edges, 4f, 5f, (9.5f, 4.5f), 1, 0, false); + VerifyEdge(edges, 5f, 6f, (9.5f, 5.5f), 1, 1, false); + VerifyEdge(edges, 6f, 7f, (8f, 6.5f), 2, 2, false); + VerifyEdge(edges, 7f, 8f, (9f, 7.5f), 1, 1, false); + VerifyEdge(edges, 7f, 8f, (6.5f, 7.5f), 1, 1, true); + VerifyEdge(edges, 7f, 8f, (5.5f, 7.5f), 1, 1, false); + VerifyEdge(edges, 7f, 8f, (4.5f, 7.5f), 1, 1, true); + VerifyEdge(edges, 7f, 8f, (3.5f, 7.5f), 1, 1, false); + VerifyEdge(edges, 6f, 8f, (2f, 7f), 0, 1, true); + VerifyEdge(edges, 5f, 6f, (2.5f, 5.5f), 2, 1, true); + VerifyEdge(edges, 4f, 5f, (2f, 4.5f), 0, 1, true); + VerifyEdge(edges, 3f, 4f, (1.5f, 3.5f), 0, 1, true); + VerifyEdge(edges, 2f, 3f, (1f, 1.5f), 1, 1, true); + } - using var edges = ScanEdgeCollection.Create(polygon, MemoryAllocator, 16); - - Assert.Equal(19, edges.Edges.Length); - - this.VerifyEdge(edges, 1f, 2f, (2.5f, 1.5f), 1, 2, true); - this.VerifyEdge(edges, 1f, 3f, (3.5f, 2f), 1, 1, false); - this.VerifyEdge(edges, 1f, 3f, (5f, 2f), 1, 1, true); - this.VerifyEdge(edges, 1f, 2f, (6.5f, 1.5f), 1, 2, false); - this.VerifyEdge(edges, 2f, 3f, (8.5f, 2.5f), 1, 0, false); - this.VerifyEdge(edges, 3f, 4f, (9f, 3.5f), 1, 0, false); - this.VerifyEdge(edges, 4f, 5f, (9.5f, 4.5f), 1, 0, false); - this.VerifyEdge(edges, 5f, 6f, (9.5f, 5.5f), 1, 1, false); - this.VerifyEdge(edges, 6f, 7f, (8f, 6.5f), 2, 2, false); - this.VerifyEdge(edges, 7f, 8f, (9f, 7.5f), 1, 1, false); - this.VerifyEdge(edges, 7f, 8f, (6.5f, 7.5f), 1, 1, true); - this.VerifyEdge(edges, 7f, 8f, (5.5f, 7.5f), 1, 1, false); - this.VerifyEdge(edges, 7f, 8f, (4.5f, 7.5f), 1, 1, true); - this.VerifyEdge(edges, 7f, 8f, (3.5f, 7.5f), 1, 1, false); - this.VerifyEdge(edges, 6f, 8f, (2f, 7f), 0, 1, true); - this.VerifyEdge(edges, 5f, 6f, (2.5f, 5.5f), 2, 1, true); - this.VerifyEdge(edges, 4f, 5f, (2f, 4.5f), 0, 1, true); - this.VerifyEdge(edges, 3f, 4f, (1.5f, 3.5f), 0, 1, true); - this.VerifyEdge(edges, 2f, 3f, (1f, 1.5f), 1, 1, true); + FeatureTestRunner.RunWithHwIntrinsicsFeature(RunTest, HwIntrinsics.AllowAll | HwIntrinsics.DisableAVX | HwIntrinsics.DisableSSE41); } [Fact] @@ -113,39 +118,39 @@ public void ComplexPolygon() IPath polygon = contour.Clip(hole); DebugDraw.Polygon(polygon, 1, 100); - using var edges = ScanEdgeCollection.Create(polygon, MemoryAllocator, 16); + using ScanEdgeCollection edges = ScanEdgeCollection.Create(polygon, MemoryAllocator, 16); Assert.Equal(8, edges.Count); - this.VerifyEdge(edges, 1, 4, (1, 2), 1, 1, true); - this.VerifyEdge(edges, 1, 2, (4, 1.5f), 1, 2, false); - this.VerifyEdge(edges, 4, 5, (2, 4.5f), 2, 1, true); - this.VerifyEdge(edges, 2, 5, (5, 3f), 1, 1, false); + VerifyEdge(edges, 1, 4, (1, 2), 1, 1, true); + VerifyEdge(edges, 1, 2, (4, 1.5f), 1, 2, false); + VerifyEdge(edges, 4, 5, (2, 4.5f), 2, 1, true); + VerifyEdge(edges, 2, 5, (5, 3f), 1, 1, false); - this.VerifyEdge(edges, 2, 3, (2, 2.5f), 2, 2, false); - this.VerifyEdge(edges, 2, 3, (3.5f, 2.5f), 2, 1, true); - this.VerifyEdge(edges, 3, 4, (3, 3.5f), 1, 2, false); - this.VerifyEdge(edges, 3, 4, (4, 3.5f), 0, 2, true); + VerifyEdge(edges, 2, 3, (2, 2.5f), 2, 2, false); + VerifyEdge(edges, 2, 3, (3.5f, 2.5f), 2, 1, true); + VerifyEdge(edges, 3, 4, (3, 3.5f), 1, 2, false); + VerifyEdge(edges, 3, 4, (4, 3.5f), 0, 2, true); } [Fact] public void NumericCornerCase_C() { - using var edges = ScanEdgeCollection.Create(NumericCornerCasePolygons.C, MemoryAllocator, 4); + using ScanEdgeCollection edges = ScanEdgeCollection.Create(NumericCornerCasePolygons.C, MemoryAllocator, 4); Assert.Equal(2, edges.Count); - this.VerifyEdge(edges, 3.5f, 4f, (2f, 3.75f), 1, 1, true); - this.VerifyEdge(edges, 3.5f, 4f, (8f, 3.75f), 1, 1, false); + VerifyEdge(edges, 3.5f, 4f, (2f, 3.75f), 1, 1, true); + VerifyEdge(edges, 3.5f, 4f, (8f, 3.75f), 1, 1, false); } [Fact] public void NumericCornerCase_D() { - using var edges = ScanEdgeCollection.Create(NumericCornerCasePolygons.D, MemoryAllocator, 4); + using ScanEdgeCollection edges = ScanEdgeCollection.Create(NumericCornerCasePolygons.D, MemoryAllocator, 4); Assert.Equal(5, edges.Count); - this.VerifyEdge(edges, 3.25f, 4f, (12f, 3.75f), 1, 1, true); - this.VerifyEdge(edges, 3.25f, 3.5f, (15f, 3.375f), 1, 0, false); - this.VerifyEdge(edges, 3.5f, 4f, (18f, 3.75f), 1, 1, false); + VerifyEdge(edges, 3.25f, 4f, (12f, 3.75f), 1, 1, true); + VerifyEdge(edges, 3.25f, 3.5f, (15f, 3.375f), 1, 0, false); + VerifyEdge(edges, 3.5f, 4f, (18f, 3.75f), 1, 1, false); // TODO: verify 2 more edges } @@ -153,15 +158,15 @@ public void NumericCornerCase_D() [Fact] public void NumericCornerCase_H_ShouldCollapseNearZeroEdge() { - using var edges = ScanEdgeCollection.Create(NumericCornerCasePolygons.H, MemoryAllocator, 4); + using ScanEdgeCollection edges = ScanEdgeCollection.Create(NumericCornerCasePolygons.H, MemoryAllocator, 4); Assert.Equal(3, edges.Count); - this.VerifyEdge(edges, 1.75f, 2f, (15f, 1.875f), 1, 1, true); - this.VerifyEdge(edges, 1.75f, 2.25f, (16f, 2f), 1, 1, false); + VerifyEdge(edges, 1.75f, 2f, (15f, 1.875f), 1, 1, true); + VerifyEdge(edges, 1.75f, 2.25f, (16f, 2f), 1, 1, false); // this places two dummy points: - this.VerifyEdge(edges, 2f, 2.25f, (15f, 2.125f), 2, 1, true); + VerifyEdge(edges, 2f, 2.25f, (15f, 2.125f), 2, 1, true); } - private static FuzzyFloat F(float value, float eps) => new FuzzyFloat(value, eps); + private static FuzzyFloat F(float value, float eps) => new(value, eps); } diff --git a/tests/ImageSharp.Drawing.Tests/TestUtilities/BasicSerializer.cs b/tests/ImageSharp.Drawing.Tests/TestUtilities/BasicSerializer.cs new file mode 100644 index 000000000..2b61791f0 --- /dev/null +++ b/tests/ImageSharp.Drawing.Tests/TestUtilities/BasicSerializer.cs @@ -0,0 +1,92 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +using System.ComponentModel; +using Xunit.Abstractions; + +namespace SixLabors.ImageSharp.Drawing.Tests.TestUtilities; + +///