]> granicus.if.org Git - imagemagick/commitdiff
Fixed hardmix calculation.
authordirk <dirk@git.imagemagick.org>
Sat, 23 May 2015 15:25:51 +0000 (15:25 +0000)
committerdirk <dirk@git.imagemagick.org>
Sat, 23 May 2015 15:25:51 +0000 (15:25 +0000)
MagickCore/composite.c

index d4dd47e5a65ea88412b9b46566cc4c69fce5d5b0..ef4957b04e319955f73bbede854c9609911f5d07 100644 (file)
@@ -1464,6 +1464,8 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
           break;
         }
         case DstOverCompositeOp:
+        case OverCompositeOp:
+        case SrcOverCompositeOp:
         {
           alpha=Sa+Da-Sa*Da;
           break;
@@ -1479,12 +1481,6 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
           alpha=Sa*(1.0-Da);
           break;
         }
-        case OverCompositeOp:
-        case SrcOverCompositeOp:
-        {
-          alpha=Sa+Da-Sa*Da;
-          break;
-        }
         case BlendCompositeOp:
         case PlusCompositeOp:
         {
@@ -1692,7 +1688,7 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
             break;
           }
           default:
-          {          
+          {
             gamma=PerceptibleReciprocal(alpha);
             break;
           }
@@ -1949,14 +1945,7 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
           }
           case HardMixCompositeOp:
           {
-            double
-              gamma;
-
-            if ((Sa+Da) < 1.0)
-              gamma=0.0;
-            else
-              gamma=1.0;
-            pixel=(gamma*(1.0-Sca)*(1.0-Dca))+Sa*(1.0-Sca)*Dca+Da*(1.0-Dca)*Sca;
+            pixel=gamma*(((Sca+Dca) < 1.0) ? 0.0 : QuantumRange);
             break;
           }
           case HueCompositeOp: