diff --git a/src/Magick.NET.Core/IMagickImage.cs b/src/Magick.NET.Core/IMagickImage.cs index dd82b74491..8ae44e44b0 100644 --- a/src/Magick.NET.Core/IMagickImage.cs +++ b/src/Magick.NET.Core/IMagickImage.cs @@ -2163,7 +2163,7 @@ Interlace Interlace /// The morphology method. /// Built-in kernel. /// The channels to apply the kernel to. - /// The number of iterations. + /// The number of iterations. A value of -1 means loop until no change found. /// Thrown when an error is raised by ImageMagick. void Morphology(MorphologyMethod method, Kernel kernel, Channels channels, int iterations); @@ -2172,7 +2172,7 @@ Interlace Interlace /// /// The morphology method. /// Built-in kernel. - /// The number of iterations. + /// The number of iterations. A value of -1 means loop until no change found. /// Thrown when an error is raised by ImageMagick. void Morphology(MorphologyMethod method, Kernel kernel, int iterations); @@ -2202,7 +2202,7 @@ Interlace Interlace /// Built-in kernel. /// Kernel arguments. /// The channels to apply the kernel to. - /// The number of iterations. + /// The number of iterations. A value of -1 means loop until no change found. /// Thrown when an error is raised by ImageMagick. void Morphology(MorphologyMethod method, Kernel kernel, string? arguments, Channels channels, int iterations); @@ -2212,7 +2212,7 @@ Interlace Interlace /// The morphology method. /// Built-in kernel. /// Kernel arguments. - /// The number of iterations. + /// The number of iterations. A value of -1 means loop until no change found. /// Thrown when an error is raised by ImageMagick. void Morphology(MorphologyMethod method, Kernel kernel, string? arguments, int iterations); @@ -2239,7 +2239,7 @@ Interlace Interlace /// The morphology method. /// User suplied kernel. /// The channels to apply the kernel to. - /// The number of iterations. + /// The number of iterations. A value of -1 means loop until no change found. /// Thrown when an error is raised by ImageMagick. void Morphology(MorphologyMethod method, string userKernel, Channels channels, int iterations); @@ -2248,7 +2248,7 @@ Interlace Interlace /// /// The morphology method. /// User suplied kernel. - /// The number of iterations. + /// The number of iterations. A value of -1 means loop until no change found. /// Thrown when an error is raised by ImageMagick. void Morphology(MorphologyMethod method, string userKernel, int iterations); diff --git a/src/Magick.NET/MagickImage.cs b/src/Magick.NET/MagickImage.cs index e262688f60..29c99e2a34 100644 --- a/src/Magick.NET/MagickImage.cs +++ b/src/Magick.NET/MagickImage.cs @@ -4140,7 +4140,7 @@ public void Morphology(MorphologyMethod method, Kernel kernel, Channels channels /// The morphology method. /// Built-in kernel. /// The channels to apply the kernel to. - /// The number of iterations. + /// The number of iterations. A value of -1 means loop until no change found. /// Thrown when an error is raised by ImageMagick. public void Morphology(MorphologyMethod method, Kernel kernel, Channels channels, int iterations) => Morphology(method, kernel, string.Empty, channels, iterations); @@ -4150,7 +4150,7 @@ public void Morphology(MorphologyMethod method, Kernel kernel, Channels channels /// /// The morphology method. /// Built-in kernel. - /// The number of iterations. + /// The number of iterations. A value of -1 means loop until no change found. /// Thrown when an error is raised by ImageMagick. public void Morphology(MorphologyMethod method, Kernel kernel, int iterations) => Morphology(method, kernel, string.Empty, ImageMagick.Channels.Undefined, iterations); @@ -4183,7 +4183,7 @@ public void Morphology(MorphologyMethod method, Kernel kernel, string? arguments /// Built-in kernel. /// Kernel arguments. /// The channels to apply the kernel to. - /// The number of iterations. + /// The number of iterations. A value of -1 means loop until no change found. /// Thrown when an error is raised by ImageMagick. public void Morphology(MorphologyMethod method, Kernel kernel, string? arguments, Channels channels, int iterations) { @@ -4198,7 +4198,7 @@ public void Morphology(MorphologyMethod method, Kernel kernel, string? arguments /// The morphology method. /// Built-in kernel. /// Kernel arguments. - /// The number of iterations. + /// The number of iterations. A value of -1 means loop until no change found. /// Thrown when an error is raised by ImageMagick. public void Morphology(MorphologyMethod method, Kernel kernel, string? arguments, int iterations) => Morphology(method, kernel, arguments, ImageMagick.Channels.Undefined, iterations); @@ -4228,17 +4228,21 @@ public void Morphology(MorphologyMethod method, string userKernel, Channels chan /// The morphology method. /// User suplied kernel. /// The channels to apply the kernel to. - /// The number of iterations. + /// The number of iterations. A value of -1 means loop until no change found. /// Thrown when an error is raised by ImageMagick. public void Morphology(MorphologyMethod method, string userKernel, Channels channels, int iterations) - => _nativeInstance.Morphology(method, userKernel, channels, iterations); + { + Throw.IfTrue(nameof(iterations), iterations < -1, "The number of iterations must be unlimited (-1) or positive"); + + _nativeInstance.Morphology(method, userKernel, channels, iterations); + } /// /// Applies a kernel to the image according to the given mophology method. /// /// The morphology method. /// User suplied kernel. - /// The number of iterations. + /// The number of iterations. A value of -1 means loop until no change found. /// Thrown when an error is raised by ImageMagick. public void Morphology(MorphologyMethod method, string userKernel, int iterations) => Morphology(method, userKernel, ImageMagick.Channels.Undefined, iterations); diff --git a/tests/Magick.NET.Tests/MagickImageTests/TheMorphologyMethod.cs b/tests/Magick.NET.Tests/MagickImageTests/TheMorphologyMethod.cs index b0e123c647..e86ede17d3 100644 --- a/tests/Magick.NET.Tests/MagickImageTests/TheMorphologyMethod.cs +++ b/tests/Magick.NET.Tests/MagickImageTests/TheMorphologyMethod.cs @@ -38,6 +38,16 @@ public void ShouldThrowExceptionWhenSettingsIsNull() Assert.Throws("settings", () => image.Morphology(null)); } + [Fact] + public void ShouldThrowExceptionWhenIterationsIsLowerThanMinusOne() + { + using var image = new MagickImage(); + var settings = new MorphologySettings(); + settings.Iterations = -2; + + Assert.Throws("iterations", () => image.Morphology(settings)); + } + [Fact] public void ShouldUseTheSpecifiedSettings() {