]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Thu, 3 Nov 2011 11:29:17 +0000 (11:29 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Thu, 3 Nov 2011 11:29:17 +0000 (11:29 +0000)
MagickCore/fx.c

index 240305935e457a7efe343e0aada1303797c60c7a..12311a818420a39750d3892202994ce7a380dc7a 100644 (file)
@@ -194,6 +194,60 @@ MagickPrivate FxInfo *AcquireFxInfo(const Image *image,const char *expression)
     Force right-to-left associativity for unary negation.
   */
   (void) SubstituteString(&fx_info->expression,"-","-1.0*");
+  if ((strstr(fx_info->expression,"e+") != (char *) NULL) ||
+      (strstr(fx_info->expression,"e-") != (char *) NULL))
+    {
+      /*
+        Convert scientific notation.
+      */
+      (void) SubstituteString(&fx_info->expression,"0e+","0**10^");
+      (void) SubstituteString(&fx_info->expression,"1e+","1**10^");
+      (void) SubstituteString(&fx_info->expression,"2e+","2**10^");
+      (void) SubstituteString(&fx_info->expression,"3e+","3**10^");
+      (void) SubstituteString(&fx_info->expression,"4e+","4**10^");
+      (void) SubstituteString(&fx_info->expression,"5e+","5**10^");
+      (void) SubstituteString(&fx_info->expression,"6e+","6**10^");
+      (void) SubstituteString(&fx_info->expression,"7e+","7**10^");
+      (void) SubstituteString(&fx_info->expression,"8e+","8**10^");
+      (void) SubstituteString(&fx_info->expression,"9e+","9**10^");
+      (void) SubstituteString(&fx_info->expression,"0e-1.0*","0**10^-");
+      (void) SubstituteString(&fx_info->expression,"1e-1.0*","1**10^-");
+      (void) SubstituteString(&fx_info->expression,"2e-1.0*","2**10^-");
+      (void) SubstituteString(&fx_info->expression,"3e-1.0*","3**10^-");
+      (void) SubstituteString(&fx_info->expression,"4e-1.0*","4**10^-");
+      (void) SubstituteString(&fx_info->expression,"5e-1.0*","5**10^-");
+      (void) SubstituteString(&fx_info->expression,"6e-1.0*","6**10^-");
+      (void) SubstituteString(&fx_info->expression,"7e-1.0*","7**10^-");
+      (void) SubstituteString(&fx_info->expression,"8e-1.0*","8**10^-");
+      (void) SubstituteString(&fx_info->expression,"9e-1.0*","9**10^-");
+    }
+  if ((strstr(fx_info->expression,"E+") != (char *) NULL) ||
+      (strstr(fx_info->expression,"E-") != (char *) NULL))
+    {
+      /*
+        Convert scientific notation.
+      */
+      (void) SubstituteString(&fx_info->expression,"0E+","0**10^");
+      (void) SubstituteString(&fx_info->expression,"1E+","1**10^");
+      (void) SubstituteString(&fx_info->expression,"2E+","2**10^");
+      (void) SubstituteString(&fx_info->expression,"3E+","3**10^");
+      (void) SubstituteString(&fx_info->expression,"4E+","4**10^");
+      (void) SubstituteString(&fx_info->expression,"5E+","5**10^");
+      (void) SubstituteString(&fx_info->expression,"6E+","6**10^");
+      (void) SubstituteString(&fx_info->expression,"7E+","7**10^");
+      (void) SubstituteString(&fx_info->expression,"8E+","8**10^");
+      (void) SubstituteString(&fx_info->expression,"9E+","9**10^");
+      (void) SubstituteString(&fx_info->expression,"0E-1.0*","0**10^-");
+      (void) SubstituteString(&fx_info->expression,"1E-1.0*","1**10^-");
+      (void) SubstituteString(&fx_info->expression,"2E-1.0*","2**10^-");
+      (void) SubstituteString(&fx_info->expression,"3E-1.0*","3**10^-");
+      (void) SubstituteString(&fx_info->expression,"4E-1.0*","4**10^-");
+      (void) SubstituteString(&fx_info->expression,"5E-1.0*","5**10^-");
+      (void) SubstituteString(&fx_info->expression,"6E-1.0*","6**10^-");
+      (void) SubstituteString(&fx_info->expression,"7E-1.0*","7**10^-");
+      (void) SubstituteString(&fx_info->expression,"8E-1.0*","8**10^-");
+      (void) SubstituteString(&fx_info->expression,"9E-1.0*","9**10^-");
+    }
   /*
     Convert complex to simple operators.
   */