]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Wed, 21 Dec 2011 02:18:45 +0000 (02:18 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Wed, 21 Dec 2011 02:18:45 +0000 (02:18 +0000)
MagickCore/composite.c
MagickCore/nt-base.c

index 18e62d79c55a8ef00e9a55d2878c7015ef4fff92..4500683c8f81d2c517f1c81b3808adc29c90d30b 100644 (file)
@@ -2222,6 +2222,7 @@ MagickBooleanType composite_channels;
       {
         case AtopCompositeOp:
         case ClearCompositeOp:
+        case ColorDodgeCompositeOp:
         case CopyCompositeOp:
         case DarkenCompositeOp:
         case DarkenIntensityCompositeOp:
@@ -2237,6 +2238,7 @@ MagickBooleanType composite_channels;
         case InCompositeOp:
         case LightenCompositeOp:
         case LightenIntensityCompositeOp:
+        case MathematicsCompositeOp:
         case MinusDstCompositeOp:
         case MinusSrcCompositeOp:
         case ModulusAddCompositeOp:
@@ -2354,10 +2356,12 @@ MagickBooleanType composite_channels;
             alpha=Sa*Da;
             break;
           }
+          case ColorDodgeCompositeOp:
           case DifferenceCompositeOp:
           case DivideDstCompositeOp:
           case DivideSrcCompositeOp:
           case ExclusionCompositeOp:
+          case MathematicsCompositeOp:
           case MinusDstCompositeOp:
           case MinusSrcCompositeOp:
           case ModulusAddCompositeOp:
@@ -2507,6 +2511,23 @@ MagickBooleanType composite_channels;
               pixel=Sc*Sa+Dc*(1.0-Sa);
               break;
             }
+            case ColorDodgeCompositeOp:
+            {
+              if ((fabs((Sa*Sc)-Sa) < MagickEpsilon) &&
+                  (fabs((Da*Dc)) < MagickEpsilon))
+                {
+                  pixel=gamma*((Sa*Sc)*(1.0-Da)+(Da*Dc)*(1.0-Sa));
+                  break;
+                }
+              if (fabs((Sa*Sc)-Sa) < MagickEpsilon)
+                {
+                  pixel=gamma*(Sa*Da+(Sa*Sc)*(1.0-Da)+(Da*Dc)*(1.0-Sa));
+                  break;
+                }
+              pixel=gamma*((Da*Dc)*Sa*Sa/(Sa-(Sa*Sc))+(Sa*Sc)*(1.0-Da)+(Da*Dc)*
+                (1.0-Sa));
+              break;
+            }
             case CopyCompositeOp:
             case ReplaceCompositeOp:
             case SrcCompositeOp:
@@ -2618,6 +2639,13 @@ MagickBooleanType composite_channels;
                 Da*GetPixelIntensity(image,q) ? Sc : Dc;
               break;
             }
+            case MathematicsCompositeOp:
+            {
+              pixel=gamma*geometry_info.rho*Sa*Sc*Da*Dc+geometry_info.sigma*
+                Sa*Sc*Da+geometry_info.xi*Da*Dc*Sa+geometry_info.psi*Sa*Da+
+                Sa*Sc*(1.0-Da)+Da*Dc*(1.0-Sa);
+              break;
+            }
             case MinusDstCompositeOp:
             {
               pixel=gamma*(Sa*Sc+Da*Dc-2.0*Da*Dc*Sa);
index c5a0292579622cc0d4070fc9a18368b4917171cb..6299beec31d432fb9d968bbcc7027f351e8d3dae 100644 (file)
@@ -1153,7 +1153,7 @@ MagickPrivate MagickBooleanType NTGetModulePath(const char *module,char *path)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-+   N T G e t T y pe L i s t                                                  %
++   N T G e t T y p e L i s t                                                 %
 %                                                                             %
 %                                                                             %
 %                                                                             %
@@ -2236,7 +2236,8 @@ MagickPrivate struct dirent *NTReadDirectory(DIR *entry)
 %  may coexist.
 %
 %  Values are stored in the registry under a base path path similar to
-%  "HKEY_LOCAL_MACHINE/SOFTWARE\ImageMagick\5.5.7\Q:16". The provided subkey
+%  "HKEY_LOCAL_MACHINE/SOFTWARE\ImageMagick\7.0.0\Q:16" or
+%  "HKEY_CURRENT_USER/SOFTWARE\ImageMagick\7.0.0\Q:16". The provided subkey
 %  is appended to this base path to form the full key.
 %
 %  The format of the NTRegistryKeyLookup method is:
@@ -2276,6 +2277,9 @@ MagickPrivate unsigned char *NTRegistryKeyLookup(const char *subkey)
   (void) LogMagickEvent(ConfigureEvent,GetMagickModule(),"%s",package_key);
   registry_key=(HKEY) INVALID_HANDLE_VALUE;
   status=RegOpenKeyExA(HKEY_LOCAL_MACHINE,package_key,0,KEY_READ,&registry_key);
+  if (status != ERROR_SUCCESS)
+    status=RegOpenKeyExA(HKEY_CURRENT_USER,package_key,0,KEY_READ,
+      &registry_key);
   if (status != ERROR_SUCCESS)
     {
       registry_key=(HKEY) INVALID_HANDLE_VALUE;