INITBOOLOPTION(Help,Eob(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_HELP,_T("--help"),false,SO_NONE," --help Show this screen and exit.\n"));
INITBOOLOPTION(Version,Eob(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_VERSION,_T("--version"),false,SO_NONE," --version Show version and exit.\n"));
INITBOOLOPTION(OpenCLInfo,Eob(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_DUMP_OPENCL_INFO,_T("--openclinfo"),false,SO_NONE," --openclinfo Display platforms and devices for OpenCL and exit.\n"));
INITBOOLOPTION(AllVars,Eob(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_ALL_VARS,_T("--allvars"),false,SO_NONE," --allvars Display the names of all supported variations and exit.\n"));
INITBOOLOPTION(RegVars,Eob(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_REG_VARS,_T("--regvars"),false,SO_NONE," --regvars Display the names of all supported regular variations and exit.\n"));
INITBOOLOPTION(PreVars,Eob(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_PRE_VARS,_T("--prevars"),false,SO_NONE," --prevars Display the names of all supported pre variations and exit.\n"));
INITBOOLOPTION(PostVars,Eob(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_POST_VARS,_T("--postvars"),false,SO_NONE," --postvars Display the names of all supported post variations and exit.\n"));
INITBOOLOPTION(SumVars,Eob(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_SUM_VARS,_T("--sumvars"),false,SO_NONE," --sumvars Display the names of all regular variations which have the standard behavior of summing their output, and exit.\n"));
INITBOOLOPTION(AssignVars,Eob(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_ASSIGN_VARS,_T("--assignvars"),false,SO_NONE," --assignvars Display the names of all regular variations which have the non-standard behavior of assigning their output, and exit.\n"));
INITBOOLOPTION(PpSumVars,Eob(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_PPSUM_VARS,_T("--ppsumvars"),false,SO_NONE," --ppsumvars Display the names of all pre/post variations which have the non-standard behavior of summing their output, and exit.\n"));
INITBOOLOPTION(PpAssignVars,Eob(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_PPASSIGN_VARS,_T("--ppassignvars"),false,SO_NONE," --ppassignvars Display the names of all pre/post variations which have the standard behavior of assigning their output, and exit.\n"));
INITBOOLOPTION(DcVars,Eob(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_DC_VARS,_T("--dcvars"),false,SO_NONE," --dcvars Display the names of all variations which alter the color index and exit.\n"));
INITBOOLOPTION(StateVars,Eob(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_STATE_VARS,_T("--statevars"),false,SO_NONE," --statevars Display the names of all variations which alter their state on each iteration and exit.\n"));
INITBOOLOPTION(ParVars,Eob(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_PAR_VARS,_T("--parvars"),false,SO_NONE," --parvars Display the names of all variations which have parameters and exit.\n"));
INITBOOLOPTION(NonParVars,Eob(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_NON_PAR_VARS,_T("--nonparvars"),false,SO_NONE," --nonparvars Display the names of all variations which do not have parameters (weight only) and exit.\n"));
INITBOOLOPTION(DumpArgs,Eob(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_DUMP_ARGS,_T("--dumpargs"),false,SO_NONE," --dumpargs Print all arguments entered from either the command line or environment variables [default: false].\n"));
INITBOOLOPTION(DoProgress,Eob(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_PROGRESS,_T("--progress"),false,SO_NONE," --progress Display progress. This will slow down processing by about 10% [default: false].\n"));
//Execution bools.
INITBOOLOPTION(EmberCL,Eob(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_OPENCL,_T("--opencl"),false,SO_NONE," --opencl Use OpenCL renderer (EmberCL) for rendering [default: false].\n"));
INITBOOLOPTION(Sp,Eob(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_SP,_T("--sp"),false,SO_NONE," --sp Use single precision for rendering instead of double precision [default: false].\n"));
INITBOOLOPTION(EarlyClip,Eob(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_EARLYCLIP,_T("--earlyclip"),false,SO_NONE," --earlyclip Perform clipping of RGB values before spatial filtering for better antialiasing and resizing [default: false].\n"));
INITBOOLOPTION(YAxisUp,Eob(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_POS_Y_UP,_T("--yaxisup"),false,SO_NONE," --yaxisup Orient the image with the positive y axis pointing up [default: false].\n"));
INITBOOLOPTION(Transparency,Eob(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_TRANSPARENCY,_T("--transparency"),false,SO_NONE," --transparency Include alpha channel in final output [default: false except for PNG].\n"));
INITBOOLOPTION(NameEnable,Eob(eOptionUse::OPT_USE_RENDER,eOptionIDs::OPT_NAME_ENABLE,_T("--name_enable"),false,SO_NONE," --name_enable Use the name attribute contained in the Xml as the output filename [default: false].\n"));
INITBOOLOPTION(HexPalette,Eob(eOptionUse::OPT_ANIM_GENOME,eOptionIDs::OPT_HEX_PALETTE,_T("--hex_palette"),true,SO_OPT," --hex_palette Force palette RGB values to be hex when saving to Xml [default: true].\n"));
INITBOOLOPTION(InsertPalette,Eob(eOptionUse::OPT_USE_RENDER,eOptionIDs::OPT_INSERT_PALETTE,_T("--insert_palette"),false,SO_NONE," --insert_palette Insert the palette into the image for debugging purposes. Disabled when running with OpenCL [default: false].\n"));
INITBOOLOPTION(EnableComments,Eob(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_ENABLE_COMMENTS,_T("--enable_comments"),false,SO_NONE," --enable_comments Enables embedding the flame parameters and user identifying information in the header of a jpg, png or exr [default: false].\n"));
INITBOOLOPTION(WriteGenome,Eob(eOptionUse::OPT_USE_ANIMATE,eOptionIDs::OPT_WRITE_GENOME,_T("--write_genome"),false,SO_NONE," --write_genome Write out flame associated with center of motion blur window [default: false].\n"));
INITBOOLOPTION(ThreadedWrite,Eob(eOptionUse::OPT_USE_ANIMATE,eOptionIDs::OPT_THREADED_WRITE,_T("--threaded_write"),true,SO_OPT," --threaded_write Use a separate thread to write images to disk. This gives better performance, but doubles the memory required for the final output buffer. [default: true].\n"));
INITBOOLOPTION(Enclosed,Eob(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_ENCLOSED,_T("--enclosed"),true,SO_OPT," --enclosed Use enclosing Xml tags [default: true].\n"));
INITBOOLOPTION(NoEdits,Eob(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_NO_EDITS,_T("--noedits"),false,SO_NONE," --noedits Exclude edit tags when writing Xml [default: false].\n"));
INITBOOLOPTION(UnsmoothEdge,Eob(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_UNSMOOTH_EDGE,_T("--unsmoother"),false,SO_NONE," --unsmoother Do not use smooth blending for sheep edges [default: false].\n"));
INITBOOLOPTION(CwInterpLoops,Eob(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_CW_INTERP_LOOPS,_T("--cwinterploops"),false,SO_NONE," --cwinterploops Rotate clockwise during interpolation, ignored if --interploops is 0 [default: false].\n"));
INITBOOLOPTION(LockAccum,Eob(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_LOCK_ACCUM,_T("--lock_accum"),false,SO_NONE," --lock_accum Lock threads when accumulating to the histogram using the CPU. This will drop performance to that of single threading [default: false].\n"));
INITBOOLOPTION(DumpKernel,Eob(eOptionUse::OPT_USE_RENDER,eOptionIDs::OPT_DUMP_KERNEL,_T("--dump_kernel"),false,SO_NONE," --dump_kernel Print the iteration kernel string when using OpenCL (ignored for CPU) [default: false].\n"));
INITBOOLOPTION(Flam3Compat,Eob(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_FLAM3_COMPAT,_T("--flam3_compat"),false,SO_NONE," --flam3_compat The behavior of the cos, cosh, cot, coth, csc, csch, sec, sech, sin, sinh, tan and tanh variations are different in flam3/Apophysis versus Chaotica. True for flam3/Apophysis behavior, false for Chaotica behavior [default: true].\n"));
INITBOOLOPTION(IgnoreExisting,Eob(eOptionUse::OPT_USE_ANIMATE,eOptionIDs::OPT_IGNORE_EXISTING,_T("--ignore-existing"),false,SO_NONE," --ignore-existing Skip animating a frame if the output images for all of the specified file output types already exist in the output folder [default: false].\n"));
//Int.
INITINTOPTION(Symmetry,Eoi(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_SYMMETRY,_T("--symmetry"),0,SO_REQ_SEP," --symmetry=<val> Set symmetry of result [default: 0].\n"));
INITINTOPTION(SheepGen,Eoi(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_SHEEP_GEN,_T("--sheep_gen"),-1,SO_REQ_SEP," --sheep_gen=<val> Sheep generation of this flame [default: -1].\n"));
INITINTOPTION(SheepId,Eoi(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_SHEEP_ID,_T("--sheep_id"),-1,SO_REQ_SEP," --sheep_id=<val> Sheep ID of this flame [default: -1].\n"));
#ifdef _WIN32
INITINTOPTION(Priority,Eoi(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_PRIORITY,_T("--priority"),int(eThreadPriority::NORMAL),SO_REQ_SEP," --priority=<val> The priority of the CPU rendering threads from -2 - 2. This does not apply to OpenCL rendering.\n"));
#else
INITINTOPTION(Priority,Eoi(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_PRIORITY,_T("--priority"),int(eThreadPriority::NORMAL),SO_REQ_SEP," --priority=<val> The priority of the CPU rendering threads, 1, 25, 50, 75, 99. This does not apply to OpenCL rendering.\n"));
#endif
//Uint.
INITUINTOPTION(ThreadCount,Eou(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_NTHREADS,_T("--nthreads"),0,SO_REQ_SEP," --nthreads=<val> The number of threads to use [default: use all available cores].\n"));
INITUINTOPTION(Strips,Eou(eOptionUse::OPT_USE_RENDER,eOptionIDs::OPT_STRIPS,_T("--nstrips"),1,SO_REQ_SEP," --nstrips=<val> The number of fractions to split a single render frame into. Useful for print size renders or low memory systems [default: 1].\n"));
INITUINTOPTION(Supersample,Eou(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_SUPERSAMPLE,_T("--supersample"),0,SO_REQ_SEP," --supersample=<val> The supersample value used to override the one specified in the file [default: 0 (use value from file), Range: 0 - 4].\n"));
INITUINTOPTION(TemporalSamples,Eou(eOptionUse::OPT_USE_ANIMATE,eOptionIDs::OPT_TEMPSAMPLES,_T("--ts"),0,SO_REQ_SEP," --ts=<val> The temporal samples value used to override all of the temporal sample values specified in the file when animating [default: 0 (use value from file)].\n"));
INITUINTOPTION(PrintEditDepth,Eou(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_PRINT_EDIT_DEPTH,_T("--print_edit_depth"),0,SO_REQ_SEP," --print_edit_depth=<val> Depth to truncate <edit> tag structure when converting a flame to Xml. 0 prints all <edit> tags [default: 0].\n"));
INITUINTOPTION(JpegQuality,Eou(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_JPEG,_T("--jpeg"),95,SO_REQ_SEP," --jpeg=<val> Jpeg quality 0-100 for compression [default: 95].\n"));
INITUINTOPTION(FirstFrame,Eou(eOptionUse::OPT_USE_ANIMATE,eOptionIDs::OPT_BEGIN,_T("--begin"),UINT_MAX,SO_REQ_SEP," --begin=<val> Time of first frame to render [default: first time specified in file].\n"));
INITUINTOPTION(LastFrame,Eou(eOptionUse::OPT_USE_ANIMATE,eOptionIDs::OPT_END,_T("--end"),UINT_MAX,SO_REQ_SEP," --end=<val> Time of last frame to render [default: last time specified in the input file].\n"));
INITUINTOPTION(Frame,Eou(eOptionUse::OPT_ANIM_GENOME,eOptionIDs::OPT_FRAME,_T("--frame"),UINT_MAX,SO_REQ_SEP," --frame=<val> Time of first and last frame (ie do one frame).\n"));
INITUINTOPTION(Dtime,Eou(eOptionUse::OPT_USE_ANIMATE,eOptionIDs::OPT_DTIME,_T("--dtime"),1,SO_REQ_SEP," --dtime=<val> Time between frames [default: 1].\n"));
INITUINTOPTION(LoopFrames,Eou(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_LOOP_FRAMES,_T("--loopframes"),20,SO_REQ_SEP," --loopframes=<val> Number of frames per loop in the animation [default: 20].\n"));
INITUINTOPTION(InterpFrames,Eou(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_INTERP_FRAMES,_T("--interpframes"),20,SO_REQ_SEP," --interpframes=<val> Number of frames per interpolation in the animation [default: 20].\n"));
INITUINTOPTION(InterpLoops,Eou(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_INTERP_LOOPS,_T("--interploops"),1,SO_REQ_SEP," --interploops=<val> The number of 360 degree loops to rotate when interpolating between keyframes [default: 1].\n"));
INITUINTOPTION(Repeat,Eou(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_REPEAT,_T("--repeat"),1,SO_REQ_SEP," --repeat=<val> Number of new flames to create. Ignored if sequence, inter or rotate were specified [default: 1].\n"));
INITUINTOPTION(Tries,Eou(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_TRIES,_T("--tries"),10,SO_REQ_SEP," --tries=<val> Number times to try creating a flame that meets the specified constraints. Ignored if sequence, inter or rotate were specified [default: 10].\n"));
INITUINTOPTION(MaxXforms,Eou(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_MAX_XFORMS,_T("--maxxforms"),UINT_MAX,SO_REQ_SEP," --maxxforms=<val> The maximum number of xforms allowed in the final output.\n"));
INITUINTOPTION(StartCount,Eou(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_START_COUNT,_T("--startcount"),0,SO_REQ_SEP," --startcount=<val> The number to add to each flame name when generating a sequence. Useful for programs like ffmpeg which require numerically increasing filenames [default: 0].\n"));
INITUINTOPTION(Padding,Eou(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_PADDING,_T("--padding"),0,SO_REQ_SEP," --padding=<val> Override the amount of zero padding added to each flame name when generating a sequence. Useful for programs like ffmpeg which require fixed width filenames [default: 0 (auto calculate padding)].\n"));
INITUINTOPTION(Width,Eou(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_W,_T("--width"),0,SO_REQ_SEP," --width=<val> Override the width the flame is rendered at. Ideally used in conjunction with --scaletype [default: 0 (no override)].\n"));
INITUINTOPTION(Height,Eou(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_H,_T("--height"),0,SO_REQ_SEP," --height=<val> Override the height the flame is rendered at. Ideally used in conjunction with --scaletype [default: 0 (no override)].\n"));
//Double.
INITDOUBLEOPTION(SizeScale,Eod(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_SS,_T("--ss"),1.0,SO_REQ_SEP," --ss=<val> Size scale. All dimensions are scaled by this amount. Ideally used in conjunction with --scaletype [default: 1.0 (no scaling)].\n"));
INITDOUBLEOPTION(WidthScale,Eod(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_WS,_T("--ws"),1.0,SO_REQ_SEP," --ws=<val> Width scale. The width is scaled by this amount. Ideally used in conjunction with --scaletype [default: 1.0 (no scaling)].\n"));
INITDOUBLEOPTION(HeightScale,Eod(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_HS,_T("--hs"),1.0,SO_REQ_SEP," --hs=<val> Height scale. The height is scaled by this amount. Ideally used in conjunction with --scaletype [default: 1.0 (no scaling)].\n"));
INITDOUBLEOPTION(QualityScale,Eod(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_QS,_T("--qs"),1.0,SO_REQ_SEP," --qs=<val> Quality scale. All quality values are scaled by this amount [default: 1.0 (no scaling)].\n"));
INITDOUBLEOPTION(Quality,Eod(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_QUALITY,_T("--quality"),0.0,SO_REQ_SEP," --quality=<val> Override the quality of the flame if not 0 [default: 0].\n"));
INITDOUBLEOPTION(SBPctPerTh,Eod(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_SBPCTTH,_T("--sbpctth"),0.025,SO_REQ_SEP," --sbpctth=<val> The percentage of a sub batch from 0.01 to 1.0 to complete per thread per kernel launch done in OpenCL rendering. This is for performance tuning with OpenCL and does not apply to CPU rendering [default: 0.025 (256 iters with the default sub batch size of 10k)].\n"));
INITDOUBLEOPTION(DeMin,Eod(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_DE_MIN,_T("--demin"),-1.0,SO_REQ_SEP," --demin=<val> Override the minimum size of the density estimator filter radius if not -1 [default: -1].\n"));
INITDOUBLEOPTION(DeMax,Eod(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_DE_MAX,_T("--demax"),-1.0,SO_REQ_SEP," --demax=<val> Override the maximum size of the density estimator filter radius if not -1 [default: -1].\n"));
INITDOUBLEOPTION(AspectRatio,Eod(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_PIXEL_ASPECT,_T("--pixel_aspect"),1.0,SO_REQ_SEP," --pixel_aspect=<val> Aspect ratio of pixels (width over height), eg. 0.90909 for NTSC [default: 1.0].\n"));
INITDOUBLEOPTION(Stagger,Eod(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_STAGGER,_T("--stagger"),0.0,SO_REQ_SEP," --stagger=<val> Affects simultaneity of xform interpolation during flame interpolation.\n"
"\t Represents how 'separate' the xforms are interpolated. Set to 1 for each\n"
"\t xform to be interpolated individually, fractions control interpolation overlap [default: 0].\n"));
INITDOUBLEOPTION(AvgThresh,Eod(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_AVG_THRESH,_T("--avg"),20.0,SO_REQ_SEP," --avg=<val> Minimum average pixel channel sum (r + g + b) threshold from 0 - 765. Ignored if sequence, inter or rotate were specified [default: 20].\n"));
INITDOUBLEOPTION(BlackThresh,Eod(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_BLACK_THRESH,_T("--black"),0.01,SO_REQ_SEP," --black=<val> Minimum number of allowed black pixels as a percentage from 0 - 1. Ignored if sequence, inter or rotate were specified [default: 0.01].\n"));
INITDOUBLEOPTION(WhiteLimit,Eod(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_WHITE_LIMIT,_T("--white"),0.05,SO_REQ_SEP," --white=<val> Maximum number of allowed white pixels as a percentage from 0 - 1. Ignored if sequence, inter or rotate were specified [default: 0.05].\n"));
INITDOUBLEOPTION(Speed,Eod(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_SPEED,_T("--speed"),0.1,SO_REQ_SEP," --speed=<val> Speed as a percentage from 0 - 1 that the affine transform of an existing flame mutates with the new flame. Ignored if sequence, inter or rotate were specified [default: 0.1].\n"));
INITDOUBLEOPTION(OffsetX,Eod(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_OFFSETX,_T("--offsetx"),0.0,SO_REQ_SEP," --offsetx=<val> Amount to move each flame horizontally when applying genome tools [default: 0].\n"));
INITDOUBLEOPTION(OffsetY,Eod(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_OFFSETY,_T("--offsety"),0.0,SO_REQ_SEP," --offsety=<val> Amount to move each flame vertically when applying genome tools [default: 0].\n"));
INITDOUBLEOPTION(UseMem,Eod(eOptionUse::OPT_USE_RENDER,eOptionIDs::OPT_USEMEM,_T("--use_mem"),0.0,SO_REQ_SEP," --use_mem=<val> Number of bytes of memory to use [default: max system memory].\n"));
INITDOUBLEOPTION(Loops,Eod(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_LOOPS,_T("--loops"),1.0,SO_REQ_SEP," --loops=<val> Number of times to rotate each control point in sequence [default: 1].\n"));
//String.
INITSTRINGOPTION(ScaleType,Eos(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_SCALE_TYPE,_T("--scaletype"),"none",SO_REQ_SEP," --scaletype The type of scaling to use with the --ws or --hs options. Valid values are --width --height [default: width].\n"));
INITSTRINGOPTION(Device,Eos(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_OPENCL_DEVICE,_T("--device"),"0",SO_REQ_SEP," --device The comma-separated OpenCL device indices to use. Single device: 0 Multi device: 0,1,3,4 [default: 0].\n"));
INITSTRINGOPTION(IsaacSeed,Eos(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_ISAAC_SEED,_T("--isaac_seed"),"",SO_REQ_SEP," --isaac_seed=<val> Character-based seed for the random number generator [default: random].\n"));
INITSTRINGOPTION(Input,Eos(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_IN,_T("--in"),"",SO_REQ_SEP," --in=<val> Name of the input file.\n"));
INITSTRINGOPTION(Out,Eos(eOptionUse::OPT_USE_RENDER,eOptionIDs::OPT_OUT,_T("--out"),"",SO_REQ_SEP," --out=<val> Name of a single output file. Not recommended when rendering more than one image.\n"));
INITSTRINGOPTION(Prefix,Eos(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_PREFIX,_T("--prefix"),"",SO_REQ_SEP," --prefix=<val> Prefix to prepend to all output files.\n"));
INITSTRINGOPTION(Suffix,Eos(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_SUFFIX,_T("--suffix"),"",SO_REQ_SEP," --suffix=<val> Suffix to append to all output files.\n"));
#ifdef _WIN32
INITSTRINGOPTION(Format,Eos(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_FORMAT,_T("--format"),"png",SO_REQ_SEP," --format=<val> Format of the output file. Valid values are: bmp, jpg, png, png16, exr or exr32 [default: png].\n"));
#else
INITSTRINGOPTION(Format,Eos(eOptionUse::OPT_RENDER_ANIM,eOptionIDs::OPT_FORMAT,_T("--format"),"png",SO_REQ_SEP," --format=<val> Format of the output file. Valid values are: jpg, png, png16, exr or exr32 [default: png].\n"));
#endif
INITSTRINGOPTION(PalettePath,Eos(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_PALETTE_FILE,_T("--flam3_palettes"),"flam3-palettes.xml",SO_REQ_SEP," --flam3_palettes=<val> Path and name of the palette file [default: flam3-palettes.xml].\n"));
INITSTRINGOPTION(Id,Eos(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_ID,_T("--id"),"",SO_REQ_SEP," --id=<val> ID to use in <edit> tags / image comments.\n"));
INITSTRINGOPTION(Url,Eos(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_URL,_T("--url"),"",SO_REQ_SEP," --url=<val> URL to use in <edit> tags / image comments.\n"));
INITSTRINGOPTION(Nick,Eos(eOptionUse::OPT_USE_ALL,eOptionIDs::OPT_NICK,_T("--nick"),"",SO_REQ_SEP," --nick=<val> Nickname to use in <edit> tags / image comments.\n"));
INITSTRINGOPTION(Comment,Eos(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_COMMENT,_T("--comment"),"",SO_REQ_SEP," --comment=<val> Comment to use in <edit> tags.\n"));
INITSTRINGOPTION(TemplateFile,Eos(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_TEMPLATE,_T("--template"),"",SO_REQ_SEP," --template=<val> Apply defaults based on this flame.\n"));
INITSTRINGOPTION(Clone,Eos(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_CLONE,_T("--clone"),"",SO_REQ_SEP," --clone=<val> Clone random flame in input.\n"));
INITSTRINGOPTION(CloneAll,Eos(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_CLONE_ALL,_T("--clone_all"),"",SO_REQ_SEP," --clone_all=<val> Clones all flames in the input file. Useful for applying template to all flames.\n"));
INITSTRINGOPTION(CloneAction,Eos(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_CLONE_ACTION,_T("--clone_action"),"",SO_REQ_SEP," --clone_action=<val> A description of the clone action taking place.\n"));
INITSTRINGOPTION(Animate,Eos(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_ANIMATE,_T("--animate"),"",SO_REQ_SEP," --animate=<val> Interpolates between all flames in the input file, using times specified in file.\n"));
INITSTRINGOPTION(Mutate,Eos(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_MUTATE,_T("--mutate"),"",SO_REQ_SEP," --mutate=<val> Randomly mutate a random flame from the input file.\n"));
INITSTRINGOPTION(Cross0,Eos(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_CROSS0,_T("--cross0"),"",SO_REQ_SEP," --cross0=<val> Randomly select one flame from the input file to genetically cross...\n"));
INITSTRINGOPTION(Cross1,Eos(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_CROSS1,_T("--cross1"),"",SO_REQ_SEP," --cross1=<val> ...with one flame from this file.\n"));
INITSTRINGOPTION(Method,Eos(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_METHOD,_T("--method"),"",SO_REQ_SEP," --method=<val> Method used for genetic cross: alternate, interpolate, or union. For mutate: all_vars, one_xform, add_symmetry, post_xforms, color_palette, delete_xform, all_coefs [default: random].\n"));//Original ommitted this important documentation for mutate!
INITSTRINGOPTION(Inter,Eos(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_INTER,_T("--inter"),"",SO_REQ_SEP," --inter=<val> Interpolate the input file.\n"));
INITSTRINGOPTION(Rotate,Eos(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_ROTATE,_T("--rotate"),"",SO_REQ_SEP," --rotate=<val> Rotate the input file.\n"));
INITSTRINGOPTION(Sequence,Eos(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_SEQUENCE,_T("--sequence"),"",SO_REQ_SEP," --sequence=<val> 360 degree rotation 'loops' times of each control point in the input file plus rotating transitions.\n"));
INITSTRINGOPTION(UseVars,Eos(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_USE_VARS,_T("--use_vars"),"",SO_REQ_SEP," --use_vars=<val> Comma separated list of variation #'s to use when generating a random flame.\n"));
INITSTRINGOPTION(DontUseVars,Eos(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_DONT_USE_VARS,_T("--dont_use_vars"),"",SO_REQ_SEP," --dont_use_vars=<val> Comma separated list of variation #'s to NOT use when generating a random flame.\n"));
INITSTRINGOPTION(Extras,Eos(eOptionUse::OPT_USE_GENOME,eOptionIDs::OPT_EXTRAS,_T("--extras"),"",SO_REQ_SEP," --extras=<val> Extra attributes to place in the flame section of the Xml.\n"));
}
/// <summary>
/// Parse and populate the supplied command line options for the specified program usage.
/// If --help or --version were specified, information will be printed
/// and parsing will cease.
/// </summary>
/// <param name="argc">The number of command line arguments passed</param>
/// <param name="argv">The command line arguments passed</param>
/// <param name="optUsage">The program for which these options are to be parsed and used.</param>
/// <returns>True if --help or --version specified, else false</returns>