% 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 %
#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"
{ "-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 },
{ "-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 },
{ "-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 },
{ "+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 },
{ "-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 },
{ "-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 },
{ "-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 },
{ "+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 },
{ "-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 },
{ "-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 },
{ "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 },
{ "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 },
{ "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 },
{ "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 },
},
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[] =
{
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[] =
{
{ "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 },
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);
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
/*
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.
*/