Browse Source

update shapes package to fix broken tests

pull/326/head
Scott Williams 9 years ago
parent
commit
650986fea9
  1. 4
      src/ImageSharp.Drawing/ImageSharp.Drawing.csproj
  2. 4
      src/ImageSharp.Drawing/Paths/ShapeRegion.cs
  3. 7
      src/ImageSharp.Drawing/Processors/FillRegionProcessor.cs
  4. 4
      tests/ImageSharp.Tests/Drawing/Paths/ShapeRegionTests.cs

4
src/ImageSharp.Drawing/ImageSharp.Drawing.csproj

@ -37,8 +37,8 @@
<ProjectReference Include="..\ImageSharp\ImageSharp.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="SixLabors.Shapes.Text" Version="0.1.0-alpha0020" />
<PackageReference Include="SixLabors.Shapes" Version="0.1.0-alpha0020" />
<PackageReference Include="SixLabors.Shapes.Text" Version="0.1.0-alpha0021" />
<PackageReference Include="SixLabors.Shapes" Version="0.1.0-alpha0021" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.0-beta004">
<PrivateAssets>All</PrivateAssets>
</PackageReference>

4
src/ImageSharp.Drawing/Paths/ShapeRegion.cs

@ -49,11 +49,11 @@ namespace SixLabors.ImageSharp.Drawing
using (var innerBuffer = new Buffer<PointF>(buffer.Length))
{
PointF[] array = innerBuffer.Array;
int count = this.Shape.FindIntersections(start, end, array, offset);
int count = this.Shape.FindIntersections(start, end, array, 0);
for (int i = 0; i < count; i++)
{
buffer[i] = array[i].X;
buffer[i + offset] = array[i].X;
}
return count;

7
src/ImageSharp.Drawing/Processors/FillRegionProcessor.cs

@ -3,6 +3,7 @@
using System;
using System.Buffers;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using SixLabors.ImageSharp.Drawing;
using SixLabors.ImageSharp.Drawing.Brushes;
@ -116,6 +117,10 @@ namespace SixLabors.ImageSharp.Drawing.Processors
float subpixelFractionPoint = subpixelFraction / subpixelCount;
for (float subPixel = (float)y; subPixel < y + 1; subPixel += subpixelFraction)
{
if(y == 102)
{
Debugger.Break();
}
int pointsFound = region.Scan(subPixel, buffer, 0);
if (pointsFound == 0)
{
@ -123,7 +128,7 @@ namespace SixLabors.ImageSharp.Drawing.Processors
continue;
}
QuickSort(buffer.AsSpan().Slice(0, pointsFound));
QuickSort(new Span<float>(buffer, 0, pointsFound));
for (int point = 0; point < pointsFound; point += 2)
{

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

@ -77,7 +77,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
ShapeRegion region = new ShapeRegion(pathMock.Object);
pathMock.Setup(x => x.FindIntersections(It.IsAny<PointF>(), It.IsAny<PointF>(), It.IsAny<PointF[]>(), It.IsAny<int>()))
.Callback<PointF, PointF, Span<PointF>>((s, e, b) => {
.Callback<PointF, PointF, PointF[], int>((s, e, b, o) => {
Assert.Equal(yToScan, s.Y);
Assert.Equal(yToScan, e.Y);
Assert.True(s.X < bounds.Left);
@ -96,7 +96,7 @@ namespace SixLabors.ImageSharp.Tests.Drawing.Paths
ShapeRegion region = new ShapeRegion(pathMock.Object);
pathMock.Setup(x => x.FindIntersections(It.IsAny<PointF>(), It.IsAny<PointF>(), It.IsAny<PointF[]>(), It.IsAny<int>()))
.Callback<PointF, PointF, Span<PointF>>((s, e, b) => {
.Callback<PointF, PointF, PointF[], int>((s, e, b, o) => {
Assert.Equal(yToScan, s.Y);
Assert.Equal(yToScan, e.Y);
Assert.True(s.X < bounds.Left);

Loading…
Cancel
Save