@@ -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 )
0 commit comments