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()
{