Extraction of Export
options
To extract the options for specific image export formats automatically, I really don't know an easy way. What you can do is to use Trace
in combination with ExportString
to investigate what Mathematica is doing. To make the next thing work you have to call e.g. ExportString["test", "GIF"];
for every format at least once:
ExportString["test", #]; & /@ {"PNG", "GIF", "BMP", "JPEG"}
System`ConvertersDump`exportOptions /@ {"PNG", "GIF", "BMP", "JPEG"}
(*
{{"BitDepth", "ColorSpace",
"DataType"}, {"AnimationRepetitions", "Background", "FrameRate",
"TransitionEffect", "TransparentColor",
"UserInputFlag"}, {"BitDepth", "ColorSpace", "DataType",
"HorizontalResolution", "RLECompression",
"VerticalResolution"}, {"BitDepth", "ColorSpace"}}
*)
which is unfortunately very distinct from the documentation. For some exporters you find for instance such stuff
Options[System`ConvertersDump`exportGraphicsToGIFConverter]
(*
{Background -> None, ImageResolution -> Automatic,
ImageSize -> Automatic, "ImageTopOrientation" -> Top,
"ColorReductionPalette" -> 256, "ColorReductionDither" -> True,
"GlobalColorMap" -> True}
*)
But how to find this automatically? I have no idea. Checkout this too
Options[System`ConvertersDump`exportToBitmapConverter]
Options[System`ConvertersDump`exportToColormappedBitmapConverter]
Setting up options for own functions
Say you want to setup a function which can take its own options, options of Plot
and options of NMinimize
. Furthermore, you want to specify some of the default option-values for Plot
and NMinimize
. You can set the function up and use it like follows:
Options[f] = {
fopt1 -> Automatic,
fopt2 -> True,
PlotStyle -> Green,
AccuracyGoal -> 1
};
f[x_, opts : OptionsPattern[{f, Plot, NMinimize}]] := Module[{},
Print["Given Options usable by f only:",
FilterRules[{opts}, Options[f]]];
Print["Given Options usable by Plot only:",
FilterRules[{opts}, Options[Plot]]];
Print["Given Options usable by NMinimize only:",
FilterRules[{opts}, Options[NMinimize]]];
Print["Defaultvalue for not specified options:" ];
Print[OptionValue[StepMonitor]];
Print[OptionValue[PlotRange]];
Print[OptionValue[fopt2]];
]
Test case
f[x, fopt1 -> Full, PlotStyle -> Yellow, AccuracyGoal -> 42]
(*
Given Options usable by f only:{fopt1->Full,PlotStyle->RGBColor[1,1,0],AccuracyGoal->42}
Given Options usable by Plot only:{PlotStyle->RGBColor[1,1,0]}
Given Options usable by NMinimize only:{AccuracyGoal->42}
Defaultvalue for not specified options:
None
{Full,Automatic}
True
*)
And now you can pass any other option of Plot
or NMinimize
without a warning. But be carful, something like Method
is an option for many functions and would be passed to each approapriate.