Skip to content

Commit 97a246c

Browse files
committed
Moved Morphology to IMagickImageCreateOperations.
1 parent fb84acd commit 97a246c

File tree

5 files changed

+33
-28
lines changed

5 files changed

+33
-28
lines changed

src/Magick.NET.Core/IMagickImage.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1355,13 +1355,6 @@ public partial interface IMagickImage : IMagickImageCreateOperations, IDisposabl
13551355
/// <exception cref="MagickException">Thrown when an error is raised by ImageMagick.</exception>
13561356
void Modulate(Percentage brightness, Percentage saturation, Percentage hue);
13571357

1358-
/// <summary>
1359-
/// Applies a kernel to the image according to the given mophology settings.
1360-
/// </summary>
1361-
/// <param name="settings">The morphology settings.</param>
1362-
/// <exception cref="MagickException">Thrown when an error is raised by ImageMagick.</exception>
1363-
void Morphology(IMorphologySettings settings);
1364-
13651358
/// <summary>
13661359
/// Returns the normalized moments of one or more image channels.
13671360
/// </summary>

src/Magick.NET.Core/IMagickImageCreateOperations.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -730,6 +730,13 @@ public interface IMagickImageCreateOperations
730730
/// <exception cref="MagickException">Thrown when an error is raised by ImageMagick.</exception>
731731
void Minify();
732732

733+
/// <summary>
734+
/// Applies a kernel to the image according to the given mophology settings.
735+
/// </summary>
736+
/// <param name="settings">The morphology settings.</param>
737+
/// <exception cref="MagickException">Thrown when an error is raised by ImageMagick.</exception>
738+
void Morphology(IMorphologySettings settings);
739+
733740
/// <summary>
734741
/// Resize image to specified size.
735742
/// <para />

src/Magick.NET/MagickImage.CloneMutator.cs

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,13 @@ public void LiquidRescale(Percentage percentage)
383383
public void LiquidRescale(Percentage percentageWidth, Percentage percentageHeight)
384384
=> LiquidRescale(new MagickGeometry(percentageWidth, percentageHeight));
385385

386+
public void LiquidRescale(Percentage percentageWidth, Percentage percentageHeight, double deltaX, double rigidity)
387+
{
388+
var geometry = new MagickGeometry(percentageWidth, percentageHeight);
389+
390+
SetResult(NativeMagickImage.LiquidRescale(geometry.ToString(), deltaX, rigidity));
391+
}
392+
386393
public void Magnify()
387394
=> SetResult(NativeMagickImage.Magnify());
388395

@@ -401,11 +408,24 @@ public void MeanShift(uint width, uint height, Percentage colorDistance)
401408
public void Minify()
402409
=> SetResult(NativeMagickImage.Minify());
403410

404-
public void LiquidRescale(Percentage percentageWidth, Percentage percentageHeight, double deltaX, double rigidity)
411+
public void Morphology(IMorphologySettings settings)
405412
{
406-
var geometry = new MagickGeometry(percentageWidth, percentageHeight);
413+
Throw.IfNull(nameof(settings), settings);
414+
Throw.IfTrue(nameof(settings), settings.Iterations < -1, "The number of iterations must be unlimited (-1) or positive");
407415

408-
SetResult(NativeMagickImage.LiquidRescale(geometry.ToString(), deltaX, rigidity));
416+
using var temporaryDefines = new TemporaryDefines(NativeMagickImage);
417+
temporaryDefines.SetArtifact("convolve:bias", settings.ConvolveBias);
418+
temporaryDefines.SetArtifact("convolve:scale", settings.ConvolveScale);
419+
420+
if (settings.UserKernel is not null && settings.UserKernel.Length > 0)
421+
{
422+
SetResult(NativeMagickImage.Morphology(settings.Method, settings.UserKernel, settings.Channels, settings.Iterations));
423+
}
424+
else
425+
{
426+
var kernel = EnumHelper.GetName(settings.Kernel).ToLowerInvariant() + ":" + settings.KernelArguments;
427+
SetResult(NativeMagickImage.Morphology(settings.Method, kernel, settings.Channels, settings.Iterations));
428+
}
409429
}
410430

411431
public void Resize(uint width, uint height)

src/Magick.NET/MagickImage.cs

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4193,22 +4193,8 @@ public void Modulate(Percentage brightness, Percentage saturation, Percentage hu
41934193
/// <exception cref="MagickException">Thrown when an error is raised by ImageMagick.</exception>
41944194
public void Morphology(IMorphologySettings settings)
41954195
{
4196-
Throw.IfNull(nameof(settings), settings);
4197-
Throw.IfTrue(nameof(settings), settings.Iterations < -1, "The number of iterations must be unlimited (-1) or positive");
4198-
4199-
using var temporaryDefines = new TemporaryDefines(this);
4200-
temporaryDefines.SetArtifact("convolve:bias", settings.ConvolveBias);
4201-
temporaryDefines.SetArtifact("convolve:scale", settings.ConvolveScale);
4202-
4203-
if (settings.UserKernel is not null && settings.UserKernel.Length > 0)
4204-
{
4205-
_nativeInstance.Morphology(settings.Method, settings.UserKernel, settings.Channels, settings.Iterations);
4206-
}
4207-
else
4208-
{
4209-
var kernel = EnumHelper.GetName(settings.Kernel).ToLowerInvariant() + ":" + settings.KernelArguments;
4210-
_nativeInstance.Morphology(settings.Method, kernel, settings.Channels, settings.Iterations);
4211-
}
4196+
using var mutator = new Mutator(_nativeInstance);
4197+
mutator.Morphology(settings);
42124198
}
42134199

42144200
/// <summary>

src/Magick.NET/Native/MagickImage.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -537,8 +537,7 @@ private unsafe sealed partial class NativeMagickImage : NativeInstance, INativeM
537537
public partial IntPtr MinimumBoundingBox(out nuint length);
538538

539539
[Throws]
540-
[SetInstance]
541-
public partial void Morphology(MorphologyMethod method, string kernel, Channels channels, nint iterations);
540+
public partial IntPtr Morphology(MorphologyMethod method, string kernel, Channels channels, nint iterations);
542541

543542
[Throws]
544543
[SetInstance]

0 commit comments

Comments
 (0)