using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.Processing; using SixLabors.ImageSharp.Processing.Drawing; using SixLabors.ImageSharp.Processing.Drawing.Brushes.GradientBrushes; using Xunit; namespace SixLabors.ImageSharp.Tests.Drawing { public class FillRadialGradientBrushTests : FileTestBase { [Theory] [WithBlankImages(200, 200, PixelTypes.Rgba32)] public void RadialGradientBrushWithEqualColorsReturnsUnicolorImage( TestImageProvider provider) where TPixel : struct, IPixel { using (var image = provider.GetImage()) { TPixel red = NamedColors.Red; RadialGradientBrush unicolorRadialGradientBrush = new RadialGradientBrush( new SixLabors.Primitives.Point(0, 0), 100, GradientRepetitionMode.None, new ColorStop(0, red), new ColorStop(1, red)); image.Mutate(x => x.Fill(unicolorRadialGradientBrush)); image.DebugSave(provider); image.CompareToReferenceOutput(provider); } } [Theory] [WithBlankImages(500, 500, PixelTypes.Rgba32, 250, 250)] [WithBlankImages(500, 500, PixelTypes.Rgba32, 0, 0)] [WithBlankImages(500, 500, PixelTypes.Rgba32, 250, 0)] [WithBlankImages(500, 500, PixelTypes.Rgba32, 0, 250)] [WithBlankImages(500, 500, PixelTypes.Rgba32, -100, 250)] public void RadialGradientBrushWithDifferentCentersReturnsImage( TestImageProvider provider, int centerX, int centerY) where TPixel : struct, IPixel { using (var image = provider.GetImage()) { RadialGradientBrush brush = new RadialGradientBrush( new SixLabors.Primitives.Point(centerX, centerY), image.Width / 2f, GradientRepetitionMode.None, new ColorStop(0, NamedColors.Red), new ColorStop(1, NamedColors.Yellow)); image.Mutate(x => x.Fill(brush)); image.DebugSave(provider); image.CompareToReferenceOutput(provider); } } } }