Skip to content

Commit da1ad3d

Browse files
Merge pull request SixLabors#1035 from SixLabors/af/expose-buffer-internals
Expose Buffer2D and ParallelHelper internals
2 parents 675810a + fc3a30c commit da1ad3d

3 files changed

Lines changed: 27 additions & 10 deletions

File tree

src/ImageSharp.Drawing/Processing/Processors/Drawing/DrawImageProcessor{TPixelBg,TPixelFg}.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System;
55

66
using SixLabors.ImageSharp.Advanced;
7-
using SixLabors.ImageSharp.ParallelUtils;
7+
using SixLabors.ImageSharp.Advanced.ParallelUtils;
88
using SixLabors.ImageSharp.PixelFormats;
99
using SixLabors.Primitives;
1010

src/ImageSharp.Drawing/Processing/Processors/Drawing/FillProcessor{TPixel}.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
using System.Buffers;
66

77
using SixLabors.ImageSharp.Advanced;
8+
using SixLabors.ImageSharp.Advanced.ParallelUtils;
89
using SixLabors.ImageSharp.Memory;
9-
using SixLabors.ImageSharp.ParallelUtils;
1010
using SixLabors.ImageSharp.PixelFormats;
1111
using SixLabors.Primitives;
1212

@@ -45,17 +45,18 @@ protected override void OnFrameApply(ImageFrame<TPixel> source)
4545

4646
int width = maxX - minX;
4747

48-
var workingRect = Rectangle.FromLTRB(minX, minY, maxX, maxY);
48+
Rectangle workingRect = Rectangle.FromLTRB(minX, minY, maxX, maxY);
4949

5050
IBrush brush = this.definition.Brush;
5151
GraphicsOptions options = this.definition.Options;
5252

5353
// If there's no reason for blending, then avoid it.
5454
if (this.IsSolidBrushWithoutBlending(out SolidBrush solidBrush))
5555
{
56-
ParallelExecutionSettings parallelSettings = configuration.GetParallelSettings().MultiplyMinimumPixelsPerTask(4);
56+
ParallelExecutionSettings parallelSettings = ParallelExecutionSettings.FromConfiguration(configuration)
57+
.MultiplyMinimumPixelsPerTask(4);
5758

58-
TPixel colorPixel = solidBrush.Color.ToPixel<TPixel>();
59+
var colorPixel = solidBrush.Color.ToPixel<TPixel>();
5960

6061
ParallelHelper.IterateRows(
6162
workingRect,

tests/ImageSharp.Tests/ConfigurationTests.cs

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,28 @@ public void TestDefaultConfigurationMaxDegreeOfParallelism()
6161
}
6262

6363
[Theory]
64-
[InlineData(0)]
65-
[InlineData(-42)]
66-
public void Set_MaxDegreeOfParallelism_ToNonPositiveValue_Throws(int value)
64+
[InlineData(-3, true)]
65+
[InlineData(-2, true)]
66+
[InlineData(-1, false)]
67+
[InlineData(0, true)]
68+
[InlineData(1, false)]
69+
[InlineData(5, false)]
70+
public void MaxDegreeOfParallelism_CompatibleWith_ParallelOptions(int maxDegreeOfParallelism, bool throws)
6771
{
6872
var cfg = new Configuration();
69-
Assert.Throws<ArgumentOutOfRangeException>(() => cfg.MaxDegreeOfParallelism = value);
73+
if (throws)
74+
{
75+
Assert.Throws<ArgumentOutOfRangeException>(
76+
() =>
77+
{
78+
cfg.MaxDegreeOfParallelism = maxDegreeOfParallelism;
79+
});
80+
}
81+
else
82+
{
83+
cfg.MaxDegreeOfParallelism = maxDegreeOfParallelism;
84+
Assert.Equal(maxDegreeOfParallelism, cfg.MaxDegreeOfParallelism);
85+
}
7086
}
7187

7288

@@ -117,4 +133,4 @@ public void WorkingBufferSizeHint_DefaultIsCorrect()
117133
Assert.True(config.WorkingBufferSizeHintInBytes > 1024);
118134
}
119135
}
120-
}
136+
}

0 commit comments

Comments
 (0)