Commit b3268b9ca for imagemagick.org
commit b3268b9ca64665e4205ff1e362b2f65df007dcbc
Author: Cristy <urban-warrior@imagemagick.org>
Date: Thu Jul 23 19:54:48 2026 -0400
divide is reserved by SVG specification; use divide-fx for mathematical divide
diff --git a/MagickCore/compare.c b/MagickCore/compare.c
index 437937947..95749dc42 100644
--- a/MagickCore/compare.c
+++ b/MagickCore/compare.c
@@ -3495,8 +3495,8 @@ static Image *SIMPhaseCorrelationImage(const Image *alpha_image,
/*
Divide the results.
*/
- CompositeLayers(complex_multiplication,DivideSrcCompositeOp,(Image *)
- magnitude_image,0,0,exception);
+ CompositeLayers((Image *) magnitude_image,DivideFxCompositeOp,
+ complex_multiplication,0,0,exception);
/*
Do the IFT and return the cross-correlation result.
*/
diff --git a/MagickCore/composite.c b/MagickCore/composite.c
index baa5dadd2..1fb67e7e9 100644
--- a/MagickCore/composite.c
+++ b/MagickCore/composite.c
@@ -2385,6 +2385,7 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
case DarkenCompositeOp:
case DifferenceCompositeOp:
case DivideDstCompositeOp:
+ case DivideFxCompositeOp:
case DivideSrcCompositeOp:
case ExclusionCompositeOp:
case FreezeCompositeOp:
@@ -2932,7 +2933,6 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
}
case DivideDstCompositeOp:
{
- S=(Sa > 0.0) ? (Sca/Sa) : 0.0;
D=(Da > 0.0) ? (Dca/Da) : 0.0;
if (fabs(S) < MagickEpsilon)
blend=1.0;
@@ -2942,6 +2942,14 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
Sa*Da*blend);
break;
}
+ case DivideFxCompositeOp:
+ {
+ if (fabs(Dca) < MagickEpsilon)
+ pixel=0.0;
+ else
+ pixel=(double) QuantumRange*(Sca/Dca);
+ break;
+ }
case DivideSrcCompositeOp:
{
S=(Sa > 0.0) ? (Sca/Sa) : 0.0;
diff --git a/MagickCore/composite.h b/MagickCore/composite.h
index c02d563f8..8c5e1abc2 100644
--- a/MagickCore/composite.h
+++ b/MagickCore/composite.h
@@ -105,7 +105,8 @@ typedef enum
StampCompositeOp,
RMSECompositeOp,
SaliencyBlendCompositeOp,
- SeamlessBlendCompositeOp
+ SeamlessBlendCompositeOp,
+ DivideFxCompositeOp
} CompositeOperator;
extern MagickExport MagickBooleanType
diff --git a/MagickCore/option.c b/MagickCore/option.c
index 430066424..33e264f64 100644
--- a/MagickCore/option.c
+++ b/MagickCore/option.c
@@ -1299,6 +1299,7 @@ static const OptionInfo
{ "Distort", DistortCompositeOp, UndefinedOptionFlag, MagickFalse },
{ "Divide", DivideDstCompositeOp, DeprecateOptionFlag, MagickTrue },
{ "DivideDst", DivideDstCompositeOp, UndefinedOptionFlag, MagickFalse },
+ { "DivideFx", DivideFxCompositeOp, UndefinedOptionFlag, MagickFalse },
{ "DivideSrc", DivideSrcCompositeOp, UndefinedOptionFlag, MagickFalse },
{ "DstAtop", DstAtopCompositeOp, UndefinedOptionFlag, MagickFalse },
{ "Dst", DstCompositeOp, UndefinedOptionFlag, MagickFalse },