Skip to content

Commit 764f6f1

Browse files
Merge pull request #223 from SixLabors/js/fix-221
Use correct dimension for sourceY
2 parents 08061ea + 19ca03a commit 764f6f1

4 files changed

Lines changed: 52 additions & 11 deletions

File tree

src/ImageSharp.Drawing/Processing/ImageBrush.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ public override void Apply(Span<float> scanline, int x, int y)
161161
Span<TPixel> overlaySpan = overlay.Memory.Span;
162162

163163
int offsetX = x - this.offsetX;
164-
int sourceY = ((y - this.offsetY) % this.sourceRegion.Width) + this.sourceRegion.Y;
164+
int sourceY = ((y - this.offsetY) % this.sourceRegion.Height) + this.sourceRegion.Y;
165165
Span<TPixel> sourceRow = this.sourceFrame.PixelBuffer.DangerousGetRowSpan(sourceY);
166166

167167
for (int i = 0; i < scanline.Length; i++)

tests/ImageSharp.Drawing.Tests/Drawing/FillImageBrushTests.cs

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,52 @@ public void UseBrushOfDifferentPixelType<TPixel>(TestImageProvider<TPixel> provi
3333
where TPixel : unmanaged, IPixel<TPixel>
3434
{
3535
byte[] data = TestFile.Create(TestImages.Png.Ducky).Bytes;
36-
using (Image<TPixel> background = provider.GetImage())
37-
using (Image overlay = provider.PixelType == PixelTypes.Rgba32
38-
? (Image)Image.Load<Bgra32>(data)
39-
: Image.Load<Rgba32>(data))
40-
{
41-
var brush = new ImageBrush(overlay);
42-
background.Mutate(c => c.Fill(brush));
36+
using Image<TPixel> background = provider.GetImage();
37+
using Image overlay = provider.PixelType == PixelTypes.Rgba32
38+
? Image.Load<Bgra32>(data)
39+
: Image.Load<Rgba32>(data);
4340

44-
background.DebugSave(provider, appendSourceFileOrDescription: false);
45-
background.CompareToReferenceOutput(provider, appendSourceFileOrDescription: false);
46-
}
41+
var brush = new ImageBrush(overlay);
42+
background.Mutate(c => c.Fill(brush));
43+
44+
background.DebugSave(provider, appendSourceFileOrDescription: false);
45+
background.CompareToReferenceOutput(provider, appendSourceFileOrDescription: false);
46+
}
47+
48+
[Theory]
49+
[WithTestPatternImage(200, 200, PixelTypes.Rgba32)]
50+
public void CanDrawLandscapeImage<TPixel>(TestImageProvider<TPixel> provider)
51+
where TPixel : unmanaged, IPixel<TPixel>
52+
{
53+
byte[] data = TestFile.Create(TestImages.Png.Ducky).Bytes;
54+
using Image<TPixel> background = provider.GetImage();
55+
using Image overlay = Image.Load<Rgba32>(data);
56+
57+
overlay.Mutate(c => c.Crop(new Rectangle(0, 0, 125, 90)));
58+
59+
var brush = new ImageBrush(overlay);
60+
background.Mutate(c => c.Fill(brush));
61+
62+
background.DebugSave(provider, appendSourceFileOrDescription: false);
63+
background.CompareToReferenceOutput(provider, appendSourceFileOrDescription: false);
64+
}
65+
66+
[Theory]
67+
[WithTestPatternImage(200, 200, PixelTypes.Rgba32)]
68+
public void CanDrawPortraitImage<TPixel>(TestImageProvider<TPixel> provider)
69+
where TPixel : unmanaged, IPixel<TPixel>
70+
{
71+
byte[] data = TestFile.Create(TestImages.Png.Ducky).Bytes;
72+
using Image<TPixel> background = provider.GetImage();
73+
using Image overlay = Image.Load<Rgba32>(data);
74+
75+
overlay.Mutate(c => c.Crop(new Rectangle(0, 0, 90, 125)));
76+
77+
var brush = new ImageBrush(overlay);
78+
background.Mutate(c => c.Fill(brush));
79+
80+
background.DebugSave(provider, appendSourceFileOrDescription: false);
81+
background.CompareToReferenceOutput(provider, appendSourceFileOrDescription: false);
4782
}
4883
}
4984
}
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)