]> granicus.if.org Git - imagemagick/blobdiff - MagickCore/option.c
(no commit message)
[imagemagick] / MagickCore / option.c
index fef29344a6f3f0233fbf7550ba3140d611733242..75719d2eb10557143da1ee014a7c8c9763716533 100644 (file)
 %                         MagickCore Option Methods                           %
 %                                                                             %
 %                              Software Design                                %
-%                                John Cristy                                  %
+%                                   Cristy                                    %
 %                                 March 2000                                  %
 %                                                                             %
 %                                                                             %
-%  Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization      %
+%  Copyright 1999-2014 ImageMagick Studio LLC, a non-profit organization      %
 %  dedicated to making software imaging solutions freely available.           %
 %                                                                             %
 %  You may not use this file except in compliance with the License.  You may  %
@@ -51,6 +51,7 @@
 #include "MagickCore/effect.h"
 #include "MagickCore/exception.h"
 #include "MagickCore/exception-private.h"
+#include "MagickCore/fourier.h"
 #include "MagickCore/fx.h"
 #include "MagickCore/gem.h"
 #include "MagickCore/geometry.h"
@@ -258,6 +259,8 @@ static const OptionInfo
     { "-brightness-contrast", 1L, SimpleOperatorFlag, MagickFalse },
     { "+cache", 0L, GlobalOptionFlag, MagickFalse },
     { "-cache", 1L, GlobalOptionFlag, MagickFalse },
+    { "+canny", 1L, DeprecateOptionFlag, MagickTrue },
+    { "-canny", 1L, SimpleOperatorFlag, MagickTrue },
     { "+caption", 0L, ImageInfoOptionFlag | NeverInterpretArgsFlag, MagickFalse },
     { "-caption", 1L, ImageInfoOptionFlag | NeverInterpretArgsFlag, MagickFalse },
     { "+cdl", 1L, DeprecateOptionFlag, MagickTrue },
@@ -293,10 +296,14 @@ static const OptionInfo
     { "-colors", 1L, SimpleOperatorFlag, MagickFalse },
     { "+colorspace", 0L, ImageInfoOptionFlag | SimpleOperatorFlag, MagickFalse },
     { "-colorspace", 1L, ImageInfoOptionFlag | SimpleOperatorFlag, MagickFalse },
-    { "+combine", 1L, DeprecateOptionFlag | FireOptionFlag, MagickTrue },
-    { "-combine", 1L, ListOperatorFlag | FireOptionFlag, MagickFalse },
+    { "+combine", 1L, ListOperatorFlag | FireOptionFlag, MagickFalse },
+    { "-combine", 0L, ListOperatorFlag | FireOptionFlag, MagickFalse },
     { "+comment", 0L, ImageInfoOptionFlag | NeverInterpretArgsFlag, MagickFalse },
     { "-comment", 1L, ImageInfoOptionFlag | NeverInterpretArgsFlag, MagickFalse },
+    { "+compare", 0L, DeprecateOptionFlag | FireOptionFlag, MagickTrue },
+    { "-compare", 0L, ListOperatorFlag | FireOptionFlag, MagickFalse },
+    { "+complex", 1L, DeprecateOptionFlag | FireOptionFlag, MagickTrue },
+    { "-complex", 1L, ListOperatorFlag | FireOptionFlag, MagickFalse },
     { "+compose", 0L, ImageInfoOptionFlag, MagickFalse },
     { "-compose", 1L, ImageInfoOptionFlag, MagickFalse },
     { "+composite", 0L, DeprecateOptionFlag | FireOptionFlag, MagickTrue },
@@ -321,8 +328,8 @@ static const OptionInfo
     { "-decipher", 1L, SimpleOperatorFlag | NeverInterpretArgsFlag, MagickFalse },
     { "+deconstruct", 0L, DeprecateOptionFlag, MagickTrue },
     { "-deconstruct", 0L, ReplacedOptionFlag | ListOperatorFlag | FireOptionFlag, MagickTrue },
-    { "+define", 1L, ImageInfoOptionFlag | FireOptionFlag, MagickFalse },
-    { "-define", 1L, ImageInfoOptionFlag | FireOptionFlag, MagickFalse },
+    { "+define", 1L, ImageInfoOptionFlag | NeverInterpretArgsFlag | FireOptionFlag, MagickFalse },
+    { "-define", 1L, ImageInfoOptionFlag | NeverInterpretArgsFlag | FireOptionFlag, MagickFalse },
     { "+delay", 0L, ImageInfoOptionFlag, MagickFalse },
     { "-delay", 1L, ImageInfoOptionFlag, MagickFalse },
     { "+delete", 0L, ListOperatorFlag | FireOptionFlag, MagickFalse },
@@ -405,7 +412,7 @@ static const OptionInfo
     { "+foreground", 0L, NonMagickOptionFlag, MagickFalse },
     { "-foreground", 1L, NonMagickOptionFlag, MagickFalse },
     { "+format", 0L, ImageInfoOptionFlag, MagickFalse },
-    { "-format", 1L, ImageInfoOptionFlag, MagickFalse },
+    { "-format", 1L, ImageInfoOptionFlag | NeverInterpretArgsFlag, MagickFalse },
     { "+frame", 1L, DeprecateOptionFlag, MagickTrue },
     { "-frame", 1L, SimpleOperatorFlag, MagickFalse },
     { "+function", 2L, DeprecateOptionFlag, MagickTrue },
@@ -432,10 +439,12 @@ static const OptionInfo
     { "-hald-clut", 0L, ListOperatorFlag | FireOptionFlag, MagickFalse },
     { "+highlight-color", 0L, NonMagickOptionFlag | ImageInfoOptionFlag, MagickFalse },
     { "-highlight-color", 1L, NonMagickOptionFlag | ImageInfoOptionFlag, MagickFalse },
+    { "+hough-lines", 1L, DeprecateOptionFlag, MagickTrue },
+    { "-hough-lines", 1L, SimpleOperatorFlag, MagickTrue },
     { "+iconGeometry", 0L, NonMagickOptionFlag, MagickFalse },
     { "-iconGeometry", 1L, NonMagickOptionFlag, MagickFalse },
     { "+iconic", 0L, NonMagickOptionFlag, MagickFalse },
-    { "-iconic", 1L, NonMagickOptionFlag, MagickFalse },
+    { "-iconic", 0L, NonMagickOptionFlag, MagickFalse },
     { "+identify", 0L, DeprecateOptionFlag | FireOptionFlag, MagickTrue },
     { "-identify", 0L, SimpleOperatorFlag | FireOptionFlag, MagickFalse },
     { "+ift", 0L, ListOperatorFlag | FireOptionFlag, MagickFalse },
@@ -486,8 +495,8 @@ static const OptionInfo
     { "-loop", 1L, ImageInfoOptionFlag, MagickFalse },
     { "+lowlight-color", 0L, NonMagickOptionFlag | ImageInfoOptionFlag, MagickFalse },
     { "-lowlight-color", 1L, NonMagickOptionFlag | ImageInfoOptionFlag, MagickFalse },
-    { "+magnify", 0L, NonMagickOptionFlag, MagickFalse },
-    { "-magnify", 1L, NonMagickOptionFlag, MagickFalse },
+    { "+magnify", 0L, DeprecateOptionFlag, MagickTrue },
+    { "-magnify", 0L, SimpleOperatorFlag, MagickFalse },
     { "+map", 0L, ReplacedOptionFlag | ListOperatorFlag | FireOptionFlag, MagickTrue },
     { "-map", 1L, ReplacedOptionFlag | SimpleOperatorFlag, MagickTrue },
     { "+mask", 0L, SimpleOperatorFlag | NeverInterpretArgsFlag, MagickFalse },
@@ -498,12 +507,16 @@ static const OptionInfo
     { "-mattecolor", 1L, ImageInfoOptionFlag, MagickFalse },
     { "+maximum", 0L, DeprecateOptionFlag | FireOptionFlag, MagickTrue },
     { "-maximum", 0L, DeprecateOptionFlag | FireOptionFlag, MagickTrue },
+    { "+mean-shift", 1L, DeprecateOptionFlag, MagickTrue },
+    { "-mean-shift", 1L, SimpleOperatorFlag, MagickTrue },
     { "+median", 1L, DeprecateOptionFlag, MagickTrue },
     { "-median", 1L, ReplacedOptionFlag | SimpleOperatorFlag | FireOptionFlag, MagickTrue },
-    { "+metric", 0L, ImageInfoOptionFlag, MagickFalse },
-    { "-metric", 1L, ImageInfoOptionFlag, MagickFalse },
+    { "+metric", 0L, DeprecateOptionFlag | FireOptionFlag, MagickFalse },
+    { "-metric", 1L, ListOperatorFlag | FireOptionFlag, MagickFalse },
     { "+minimum", 0L, DeprecateOptionFlag | FireOptionFlag, MagickTrue },
     { "-minimum", 0L, DeprecateOptionFlag | FireOptionFlag, MagickTrue },
+    { "+moments", 0L, SimpleOperatorFlag | FireOptionFlag, MagickFalse },
+    { "-moments", 0L, SimpleOperatorFlag | FireOptionFlag, MagickFalse },
     { "+mode", 1L, NonMagickOptionFlag, MagickFalse },
     { "-mode", 1L, ReplacedOptionFlag | SimpleOperatorFlag, MagickTrue },
     { "+modulate", 1L, DeprecateOptionFlag, MagickTrue },
@@ -558,7 +571,7 @@ static const OptionInfo
     { "+preview", 0L, DeprecateOptionFlag, MagickTrue },
     { "-preview", 1L, GlobalOptionFlag, MagickFalse },
     { "+print", 1L, DeprecateOptionFlag | FireOptionFlag, MagickTrue },
-    { "-print", 1L, ListOperatorFlag | AlwaysInterpretArgsFlag | FireOptionFlag, MagickFalse },
+    { "-print", 1L, NoImageOperatorFlag | AlwaysInterpretArgsFlag | FireOptionFlag, MagickFalse },
     { "+process", 1L, DeprecateOptionFlag | FireOptionFlag, MagickTrue },
     { "-process", 1L, ListOperatorFlag | FireOptionFlag, MagickFalse },
     { "+profile", 1L, SimpleOperatorFlag, MagickFalse },
@@ -569,8 +582,7 @@ static const OptionInfo
     { "-quantize", 1L, QuantizeInfoOptionFlag, MagickFalse },
     { "+quiet", 0L, GlobalOptionFlag | FireOptionFlag, MagickFalse },
     { "-quiet", 0L, GlobalOptionFlag | FireOptionFlag, MagickFalse },
-    { "+radial-blur", 1L, DeprecateOptionFlag, MagickTrue },
-    { "-radial-blur", 1L, SimpleOperatorFlag, MagickFalse },
+    { "-rotational-blur", 1L, SimpleOperatorFlag, MagickFalse },
     { "+raise", 1L, SimpleOperatorFlag, MagickFalse },
     { "-raise", 1L, SimpleOperatorFlag, MagickFalse },
     { "+random-threshold", 1L, DeprecateOptionFlag, MagickTrue },
@@ -635,7 +647,7 @@ static const OptionInfo
     { "-separate", 0L, SimpleOperatorFlag | FireOptionFlag, MagickFalse },
     { "+sepia-tone", 1L, DeprecateOptionFlag, MagickTrue },
     { "-sepia-tone", 1L, SimpleOperatorFlag, MagickFalse },
-    { "+set", 1L, NoImageOperatorFlag | NeverInterpretArgsFlag, MagickFalse },
+    { "+set", 1L, NoImageOperatorFlag, MagickFalse },
     { "-set", 2L, NoImageOperatorFlag | NeverInterpretArgsFlag, MagickFalse },
     { "+shade", 0L, DeprecateOptionFlag, MagickTrue },
     { "-shade", 1L, SimpleOperatorFlag, MagickFalse },
@@ -886,8 +898,11 @@ static const OptionInfo
     { "CMYK", CMYKColorspace, UndefinedOptionFlag, MagickFalse },
     { "Gray", GRAYColorspace, UndefinedOptionFlag, MagickFalse },
     { "HCL", HCLColorspace, UndefinedOptionFlag, MagickFalse },
+    { "HCLp", HCLpColorspace, UndefinedOptionFlag, MagickFalse },
     { "HSB", HSBColorspace, UndefinedOptionFlag, MagickFalse },
+    { "HSI", HSIColorspace, UndefinedOptionFlag, MagickFalse },
     { "HSL", HSLColorspace, UndefinedOptionFlag, MagickFalse },
+    { "HSV", HSVColorspace, UndefinedOptionFlag, MagickFalse },
     { "HWB", HWBColorspace, UndefinedOptionFlag, MagickFalse },
     { "Lab", LabColorspace, UndefinedOptionFlag, MagickFalse },
     { "LCH", LCHColorspace, UndefinedOptionFlag, MagickFalse },
@@ -900,16 +915,30 @@ static const OptionInfo
     { "Rec601YCbCr", Rec601YCbCrColorspace, UndefinedOptionFlag, MagickFalse },
     { "Rec709YCbCr", Rec709YCbCrColorspace, UndefinedOptionFlag, MagickFalse },
     { "RGB", RGBColorspace, UndefinedOptionFlag, MagickFalse },
+    { "scRGB", scRGBColorspace, UndefinedOptionFlag, MagickFalse },
     { "sRGB", sRGBColorspace, UndefinedOptionFlag, MagickFalse },
     { "Transparent", TransparentColorspace, UndefinedOptionFlag, MagickFalse },
     { "XYZ", XYZColorspace, UndefinedOptionFlag, MagickFalse },
     { "YCbCr", YCbCrColorspace, UndefinedOptionFlag, MagickFalse },
+    { "YDbDr", YDbDrColorspace, UndefinedOptionFlag, MagickFalse },
     { "YCC", YCCColorspace, UndefinedOptionFlag, MagickFalse },
     { "YIQ", YIQColorspace, UndefinedOptionFlag, MagickFalse },
     { "YPbPr", YPbPrColorspace, UndefinedOptionFlag, MagickFalse },
     { "YUV", YUVColorspace, UndefinedOptionFlag, MagickFalse },
     { (char *) NULL, UndefinedColorspace, UndefinedOptionFlag, MagickFalse }
   },
+  ComplexOptions[] =
+  {
+    { "Undefined", UndefinedComplexOperator, UndefinedOptionFlag, MagickTrue },
+    { "Add", AddComplexOperator, UndefinedOptionFlag, MagickFalse },
+    { "Conjugate", ConjugateComplexOperator, UndefinedOptionFlag, MagickFalse },
+    { "Divide", DivideComplexOperator, UndefinedOptionFlag, MagickFalse },
+    { "MagnitudePhase", MagnitudePhaseComplexOperator, UndefinedOptionFlag, MagickFalse },
+    { "Multiply", MultiplyComplexOperator, UndefinedOptionFlag, MagickFalse },
+    { "RealImaginary", RealImaginaryComplexOperator, UndefinedOptionFlag, MagickFalse },
+    { "Subtract", SubtractComplexOperator, UndefinedOptionFlag, MagickFalse },
+    { (char *) NULL, UndefinedComplexOperator, UndefinedOptionFlag, MagickFalse }
+  },
   DataTypeOptions[] =
   {
     { "Undefined", UndefinedData, UndefinedOptionFlag, MagickTrue },
@@ -1226,6 +1255,7 @@ static const OptionInfo
     { "Color", MagickColorOptions, UndefinedOptionFlag, MagickFalse },
     { "Colorspace", MagickColorspaceOptions, UndefinedOptionFlag, MagickFalse },
     { "Command", MagickCommandOptions, UndefinedOptionFlag, MagickFalse },
+    { "Complex", MagickComplexOptions, UndefinedOptionFlag, MagickFalse },
     { "Compose", MagickComposeOptions, UndefinedOptionFlag, MagickFalse },
     { "Compress", MagickCompressOptions, UndefinedOptionFlag, MagickFalse },
     { "Configure", MagickConfigureOptions, UndefinedOptionFlag, MagickFalse },
@@ -1299,6 +1329,7 @@ static const OptionInfo
     { "Blob", BlobEvent, UndefinedOptionFlag, MagickFalse },
     { "Cache", CacheEvent, UndefinedOptionFlag, MagickFalse },
     { "Coder", CoderEvent, UndefinedOptionFlag, MagickFalse },
+    { "Command", CommandEvent, UndefinedOptionFlag, MagickFalse },
     { "Configure", ConfigureEvent, UndefinedOptionFlag, MagickFalse },
     { "Deprecate", DeprecateEvent, UndefinedOptionFlag, MagickFalse },
     { "Draw", DrawEvent, UndefinedOptionFlag, MagickFalse },
@@ -1318,17 +1349,18 @@ static const OptionInfo
   },
   MetricOptions[] =
   {
-    { "Undefined", UndefinedMetric, UndefinedOptionFlag, MagickTrue },
+    { "Undefined", UndefinedErrorMetric, UndefinedOptionFlag, MagickTrue },
     { "AE", AbsoluteErrorMetric, UndefinedOptionFlag, MagickFalse },
     { "Fuzz", FuzzErrorMetric, UndefinedOptionFlag, MagickFalse },
     { "MAE", MeanAbsoluteErrorMetric, UndefinedOptionFlag, MagickFalse },
-    { "MEPP", MeanErrorPerPixelMetric, UndefinedOptionFlag, MagickFalse },
+    { "MEPP", MeanErrorPerPixelErrorMetric, UndefinedOptionFlag, MagickFalse },
     { "MSE", MeanSquaredErrorMetric, UndefinedOptionFlag, MagickFalse },
     { "NCC", NormalizedCrossCorrelationErrorMetric, UndefinedOptionFlag, MagickFalse },
     { "PAE", PeakAbsoluteErrorMetric, UndefinedOptionFlag, MagickFalse },
-    { "PSNR", PeakSignalToNoiseRatioMetric, UndefinedOptionFlag, MagickFalse },
+    { "PHASh", PerceptualHashErrorMetric, UndefinedOptionFlag, MagickFalse },
+    { "PSNR", PeakSignalToNoiseRatioErrorMetric, UndefinedOptionFlag, MagickFalse },
     { "RMSE", RootMeanSquaredErrorMetric, UndefinedOptionFlag, MagickFalse },
-    { (char *) NULL, UndefinedMetric, UndefinedOptionFlag, MagickFalse }
+    { (char *) NULL, UndefinedErrorMetric, UndefinedOptionFlag, MagickFalse }
   },
   MethodOptions[] =
   {
@@ -1440,14 +1472,15 @@ static const OptionInfo
   PixelIntensityOptions[] =
   {
     { "Undefined", UndefinedPixelIntensityMethod, UndefinedOptionFlag, MagickTrue },
-    { "Average", AveragePixelIntensityMethod, UndefinedOptionFlag, MagickTrue },
-    { "Brightness", BrightnessPixelIntensityMethod, UndefinedOptionFlag, MagickTrue },
-    { "Lightness", LightnessPixelIntensityMethod, UndefinedOptionFlag, MagickTrue },
-    { "Rec601Luma", Rec601LumaPixelIntensityMethod, UndefinedOptionFlag, MagickTrue },
-    { "Rec601Luminance", Rec601LuminancePixelIntensityMethod, UndefinedOptionFlag, MagickTrue },
-    { "Rec709Luma", Rec709LumaPixelIntensityMethod, UndefinedOptionFlag, MagickTrue },
-    { "Rec709Luminance", Rec709LuminancePixelIntensityMethod, UndefinedOptionFlag, MagickTrue },
-    { "RMS", RMSPixelIntensityMethod, UndefinedOptionFlag, MagickTrue },
+    { "Average", AveragePixelIntensityMethod, UndefinedOptionFlag, MagickFalse },
+    { "Brightness", BrightnessPixelIntensityMethod, UndefinedOptionFlag, MagickFalse },
+    { "Lightness", LightnessPixelIntensityMethod, UndefinedOptionFlag, MagickFalse },
+    { "MS", MSPixelIntensityMethod, UndefinedOptionFlag, MagickFalse },
+    { "Rec601Luma", Rec601LumaPixelIntensityMethod, UndefinedOptionFlag, MagickFalse },
+    { "Rec601Luminance", Rec601LuminancePixelIntensityMethod, UndefinedOptionFlag, MagickFalse },
+    { "Rec709Luma", Rec709LumaPixelIntensityMethod, UndefinedOptionFlag, MagickFalse },
+    { "Rec709Luminance", Rec709LuminancePixelIntensityMethod, UndefinedOptionFlag, MagickFalse },
+    { "RMS", RMSPixelIntensityMethod, UndefinedOptionFlag, MagickFalse },
     { (char *) NULL, UndefinedPixelIntensityMethod, UndefinedOptionFlag, MagickFalse }
   },
   PixelMaskOptions[] =
@@ -1652,11 +1685,13 @@ static const OptionInfo
   {
     { "Undefined", UndefinedValidate, UndefinedOptionFlag, MagickTrue },
     { "All", AllValidate, UndefinedOptionFlag, MagickFalse },
+    { "Colorspace", ColorspaceValidate, UndefinedOptionFlag, MagickFalse },
     { "Compare", CompareValidate, UndefinedOptionFlag, MagickFalse },
     { "Composite", CompositeValidate, UndefinedOptionFlag, MagickFalse },
     { "Convert", ConvertValidate, UndefinedOptionFlag, MagickFalse },
-    { "FormatsInMemory", FormatsInMemoryValidate, UndefinedOptionFlag, MagickFalse },
-    { "FormatsOnDisk", FormatsOnDiskValidate, UndefinedOptionFlag, MagickFalse },
+    { "FormatsDisk", FormatsDiskValidate, UndefinedOptionFlag, MagickFalse },
+    { "FormatsMap", FormatsMapValidate, UndefinedOptionFlag, MagickFalse },
+    { "FormatsMemory", FormatsMemoryValidate, UndefinedOptionFlag, MagickFalse },
     { "Identify", IdentifyValidate, UndefinedOptionFlag, MagickFalse },
     { "ImportExport", ImportExportValidate, UndefinedOptionFlag, MagickFalse },
     { "Montage", MontageValidate, UndefinedOptionFlag, MagickFalse },
@@ -1700,6 +1735,7 @@ static const OptionInfo *GetOptionInfo(const CommandOption option)
     case MagickClipPathOptions: return(ClipPathOptions);
     case MagickColorspaceOptions: return(ColorspaceOptions);
     case MagickCommandOptions: return(CommandOptions);
+    case MagickComplexOptions: return(ComplexOptions);
     case MagickComposeOptions: return(ComposeOptions);
     case MagickCompressOptions: return(CompressOptions);
     case MagickDataTypeOptions: return(DataTypeOptions);
@@ -1791,8 +1827,12 @@ MagickExport MagickBooleanType CloneImageOptions(ImageInfo *image_info,
   assert(clone_info != (const ImageInfo *) NULL);
   assert(clone_info->signature == MagickSignature);
   if (clone_info->options != (void *) NULL)
-    image_info->options=CloneSplayTree((SplayTreeInfo *) clone_info->options,
-      (void *(*)(void *)) ConstantString,(void *(*)(void *)) ConstantString);
+    {
+      if (image_info->options != (void *) NULL)
+        DestroyImageOptions(image_info);
+      image_info->options=CloneSplayTree((SplayTreeInfo *) clone_info->options,
+        (void *(*)(void *)) ConstantString,(void *(*)(void *)) ConstantString);
+    }
   return(MagickTrue);
 }
 \f
@@ -2797,8 +2837,10 @@ MagickExport MagickBooleanType SetImageOption(ImageInfo *image_info,
   /*
     Specific global option settings.
   */
-  if (LocaleCompare(option,"size") == 0)
+  if (LocaleCompare(option,"size") == 0) {
     (void) CloneString(&image_info->size,value);
+    return(MagickTrue);
+  }
   /*
     Create tree if needed - specify how key,values are to be freed.
   */