From 0b9e0a51e0f474abc60b2fcaf2fc179e477e916a Mon Sep 17 00:00:00 2001 From: Anton Firszov Date: Thu, 21 Dec 2017 02:45:39 +0100 Subject: [PATCH] Transform_RotateScale_ManuallyCentered --- .../Processing/Transforms/TransformTests.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tests/ImageSharp.Tests/Processing/Transforms/TransformTests.cs b/tests/ImageSharp.Tests/Processing/Transforms/TransformTests.cs index 59a16eb78..cfc59870e 100644 --- a/tests/ImageSharp.Tests/Processing/Transforms/TransformTests.cs +++ b/tests/ImageSharp.Tests/Processing/Transforms/TransformTests.cs @@ -26,6 +26,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Transforms { 0, 1, 1, -20, -10 }, { 50, 1, 1, -20, -10 }, { 50, 1.5f, 1.5f, 0, 0 }, + { 50, 1.1F, 1.2F, 20, 10 }, { 0, 2f, 1f, 0, 0 }, { 0, 1f, 2f, 0, 0 }, }; @@ -126,6 +127,28 @@ namespace SixLabors.ImageSharp.Tests.Processing.Transforms } } + [Theory] + [WithTestPatternImages(96, 96, PixelTypes.Rgba32, 50, 0.8f)] + public void Transform_RotateScale_ManuallyCentered(TestImageProvider provider, float angleDeg, float s) + where TPixel : struct, IPixel + { + using (Image image = provider.GetImage()) + { + Matrix3x2 rotate = Matrix3x2Extensions.CreateRotationDegrees(angleDeg); + Vector2 toCenter = 0.5f * new Vector2(image.Width, image.Height); + var translate = Matrix3x2.CreateTranslation(-toCenter); + var translateBack = Matrix3x2.CreateTranslation(toCenter); + var scale = Matrix3x2.CreateScale(s); + + Matrix3x2 m = translate * rotate * scale * translateBack; + + this.PrintMatrix(m); + + Rectangle destBounds = image.Bounds(); + image.Mutate(i => i.Transform(m, KnownResamplers.Bicubic, destBounds)); + image.DebugSave(provider, $"R({angleDeg})_S({s})"); + } + } [Theory] [WithTestPatternImages(nameof(ResamplerNames), 100, 200, PixelTypes.Rgba32)]