/*************************************************************************** * _______ _______ _______ * * | ___ |____ | ___ | * * | | |_| / /| | |_| * * | |_____ / / | |_____ * * |_____ | / / |_____ | * * _ | | / / _ | | * * | |___| |/ /____| |___| | * * |_______|_______|_______| * * * * Wiimms SZS Tools * * * *************************************************************************** * * * This file is part of the SZS project. * * Visit https://szs.wiimm.de/ for project details and sources. * * * * Copyright (c) 2011-2022 by Dirk Clemens * * * *************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * See file gpl-2.0.txt or http://www.gnu.org/licenses/gpl-2.0.txt * * * *************************************************************************** * * * >>> This file is automatically generated by './src/gen-ui.c'. <<< * * >>> Do not edit this file! <<< * * * ***************************************************************************/ #include #include "ui-wimgt.h" // /////////////////////////////////////////////////////////////////////////////// /////////////// OptionInfo[] /////////////// /////////////////////////////////////////////////////////////////////////////// static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = { {0,0,0,0,0,0,0,0,0,0}, // OPT_NONE, //----- command specific options ----- { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "Print long numeric message IDs instead of alternative message names" " like Txx, Uxx or Mxx." }, { OPT_NO_HEADER, false, false, false, false, false, 'H', "no-header", 0, "Suppress the syntax information section in BMG text files." }, { OPT_BRIEF, false, false, false, false, false, 'B', "brief", 0, "Create smaller output." }, { OPT_DEST, false, false, false, false, true, 'd', "dest", "path", "Define a destination path (directory/file). The destination - means:" " write to standard output.\n" " The path may contain escape sequences: %Q is replaced by the fully" " qualified source name. %P and %F are replaced by the source path or" " by the filename. %N and %E are replaced by source filename without" " extension or by the source extension. Finally, %T is replaced by the" " default extension of the destination format.\n" " A '?' direct behind '%' in %E and %T conversions avoid that the" " same extension is used twice in row. Read" " https://szs.wiimm.de/opt/dest for more details." }, { OPT_DEST2, false, false, false, false, false, 'D', "DEST", "path", "Like --dest, but create the directory path automatically." }, { OPT_ESC, false, false, false, false, false, 'E', "esc", "char", "Define an alternative escape character for destination files. The" " default is '%'. For Windows batch files it is a good choice to set" " '-E$'." }, { OPT_OVERWRITE, false, false, false, false, false, 'o', "overwrite", 0, "Overwrite already existing files without warning and ignore option" " --number." }, { OPT_NUMBER, false, false, false, false, false, 0, "number", 0, "If a file already exist, append a number directly before the file" " extension to make the filename unique. If other numbered files" " already exist (ignoring case), use the maximum existing index+1." " --num is a short cut." }, { OPT_REMOVE_DEST, false, false, false, false, false, 'r', "remove-dest", 0, "Remove already existing files before creating it. If set, --overwrite" " is ignored. --rm-dest is a short cut." }, { OPT_UPDATE, false, false, false, false, false, 'u', "update", 0, "Update only existing files and don't create new files. If set," " --overwrite and --remove-dest are ignored." }, { OPT_PRESERVE, false, false, false, false, false, 'p', "preserve", 0, "Preserve file times (atime+mtime) while converting or copying files." }, { OPT_IGNORE, false, false, false, false, false, 'i', "ignore", 0, "Ignore non existing source files without warning." }, { OPT_ALL, false, false, false, false, false, 'a', "all", 0, "Convert all files and not only the files with changed file or image" " formats." }, { OPT_MIPMAPS, false, false, false, false, false, 0, "mipmaps", 0, "If reading a source, scan for mipmaps and load them too. For PNG" " files, files named NAME.mm#.EXT with #=1.. are searched. This is the" " default. --mm is a short cut." }, { OPT_NO_MIPMAPS, false, false, false, false, false, 0, "no-mipmaps", 0, "If reading a source, ignore mipmaps. This disables not the creation" " of mipmaps (see -n-mipmaps). --no-mm is a short cut." }, { OPT_N_MIPMAPS, false, false, false, false, false, 0, "n-mipmaps", "num", "Force the number of mipmaps. Values between 0 and 20 are allowed." " Value OFF (default) disables this option. If enabled, options" " --max-mipmaps and --mipmap-size are ignored. The creation of mipmaps" " stops if the width or the height of the mipmap becomes 0. --n-mm is" " a short cut." }, { OPT_MAX_MIPMAPS, false, false, false, false, false, 0, "max-mipmaps", "num", "Control the automatic mipmap creation. Values between 0 and 20 are" " allowed and the default is 4. The mipmap creation for an image" " stops, if the set number is reached. This option is ignored, if" " --n-mipmaps is enabled. --max-mm is a short cut." }, { OPT_MIPMAP_SIZE, false, false, false, false, false, 0, "mipmap-size", "num", "Define the minimal width and minimal height of a generated mipmap." " Any value >0 is allowed. The default is 8. This option is ignored," " if --n-mipmaps is enabled. --mm-size is a short cut." }, { OPT_FAST_MIPMAPS, false, false, false, false, false, 0, "fast-mipmaps", 0, "If resizing an image, use the old fast resize algorithm (default" " until v1.64a) instead of the new smart one. Both algorithms differ" " only, when creating a mipmap for images with odd width or odd" " height. The old algorithm is faster (factor 2-4) than the default" " algorithm, but the new algorithm creates better resized images. See" " https://szs.wiimm.de/doc/img/resize for details. --fast-mm is a" " short cut." }, { OPT_CMPR_DEFAULT, false, false, false, false, false, 0, "cmpr-default", "rgb1[,rgb2]", "Define 2 colors for the case, that all 16 pixels of a CMPR block are" " transparent. The default is to calculate an average color of all" " transparent pixels. Before v2.04 white was used.\n" " 2 RGB values (hex values with 6 digits each) are expected as" " parameter. If optional RGB2 is missed, a copy of RGB1 is used. As" " first step, both colors are converted to RGB565 colors C1 and C2 and" " sorted, so that C1>> USE THIS OPTION IF UNSURE! <<<" }, { OPT_FORCE, false, false, false, false, false, 0, "force", 0, "The tools analyse input files and reject files with invalid data" " structures. If --force is set, little repairable issues are ignored" " and a warning is printed.\n" "Option '--kmp force' does the same, but only for KMP files.\n" ">>> THE RESULT MAY BE INVALID OUTPUT FILES! <<<" }, { OPT_REPAIR_MAGICS, true, false, false, false, false, 0, "repair-magics", "[=mode]", "Control the reparing of missing or wrong magics of files and" " sub-files by analysing file path and file extension. MODE is one of" " OFF (default), ANALYZE or REPAIR (default, if set without mode). OFF" " disables this feature, ANALYZE enables it for analysis only, and" " REPAIR repairs all magics while reading the files. Keyword FNAME can" " be appended (separated by a comma) to give filename scanning the" " highest priority.\n" ">>> THE RESULT MAY BE INVALID OUTPUT FILES! <<<" }, { OPT_OLD, false, true, false, false, false, 0, "OLD", 0, "Developer option: Cancel --NEW and use old implementation if" " available." }, { OPT_STD, false, true, false, false, false, 0, "STD", 0, "Developer option: Cancel --OLD and --NEW and use standard" " implementation (default)." }, { OPT_NEW, false, true, false, false, false, 0, "NEW", 0, "Developer option: Cancel --OLD and use new implementation if" " available." }, { OPT_EXTRACT, false, true, false, false, false, 0, "EXTRACT", 0, "Create the directory and extract different objects in different" " formats at the moment when they are seen. This is a development" " helper option." }, {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 59 }; // /////////////////////////////////////////////////////////////////////////////// /////////////// alternate option infos /////////////// /////////////////////////////////////////////////////////////////////////////// static const InfoOption_t option_cmd_VERSION_BRIEF = { OPT_BRIEF, false, false, false, false, false, 'B', "brief", 0, "Print only the version number, revision and system. If set twice," " print only the version number." }; static const InfoOption_t option_cmd_VERSION_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "Print in long format. Ignored if option --sections is set." }; static const InfoOption_t option_cmd_CONFIG_BRIEF = { OPT_BRIEF, false, false, false, false, false, 'B', "brief", 0, " Suppress configuration search list." }; static const InfoOption_t option_cmd_CONFIG_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "If set, print the global search list too. If set twice, print the" " auto-add search list too." }; static const InfoOption_t option_cmd_COLORS_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "Print also a list of all colored text types. If set twice, include" " alternative names. If set three times, include raw color names." }; static const InfoOption_t option_cmd_COLORS_BRIEF = { OPT_BRIEF, false, false, false, false, false, 'B', "brief", 0, "Ignore option --long and print a single status line about current" " color settings." }; static const InfoOption_t option_cmd_ERROR_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "Print message text instead of message name." }; static const InfoOption_t option_cmd_ERROR_BRIEF = { OPT_BRIEF, false, false, false, false, false, 'B', "brief", 0, "Print message number instead of message name." }; static const InfoOption_t option_cmd_FILETYPE_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "Print an additional column with the decompressed file type and" " version. If entered twice, a validation status column is added." }; static const InfoOption_t option_cmd_LIST_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "If set, geometry data of the image is printed. If set twice, advanced" " geometry data is printed." }; static const InfoOption_t option_cmd_ENCODE_ALL = { OPT_ALL, false, false, false, false, false, 'a', "all", 0, "If source and destination file are the same, the file is only written" " on modifications (transform, patch, ...). If --all is set, then the" " file is always written." }; // /////////////////////////////////////////////////////////////////////////////// /////////////// CommandTab[] /////////////// /////////////////////////////////////////////////////////////////////////////// static const KeywordTab_t CommandTab[] = { { CMD_VERSION, "VERSION", 0, 0 }, { CMD_HELP, "HELP", "H", 0 }, { CMD_HELP, "?", 0, 0 }, { CMD_CONFIG, "CONFIG", 0, 0 }, { CMD_ARGTEST, "ARGTEST", 0, 0 }, { CMD_EXPAND, "EXPAND", 0, 0 }, { CMD_TEST, "TEST", 0, 0 }, { CMD_COLORS, "COLORS", 0, 0 }, { CMD_ERROR, "ERROR", "ERR", 0 }, { CMD_FILETYPE, "FILETYPE", "FT", 0 }, { CMD_FILEATTRIB, "FILEATTRIB", "FA", 0 }, { CMD_LIST, "LIST", "LS", 0 }, { CMD_LIST_L, "LIST-L", "LL", 0 }, { CMD_LIST_L, "LISTL", 0, 0 }, { CMD_LIST_LL, "LIST-LL", "LLL", 0 }, { CMD_LIST_LL, "LISTLL", 0, 0 }, { CMD_DECODE, "DECODE", "DEC", 0 }, { CMD_ENCODE, "ENCODE", "ENC", 0 }, { CMD_CONVERT, "CONVERT", "CV", 0 }, { CMD_COPY, "COPY", "CP", 0 }, { CMD__N,0,0,0 } }; // /////////////////////////////////////////////////////////////////////////////// /////////////// OptionShort & OptionLong /////////////// /////////////////////////////////////////////////////////////////////////////// static const char OptionShort[] = "VhqvLW:c:lHBM:T:A:td:D:E:orupiaP:x:"; static const struct option OptionLong[] = { { "version", 0, 0, 'V' }, { "help", 0, 0, 'h' }, { "xhelp", 0, 0, GO_XHELP }, { "config", 1, 0, GO_CONFIG }, { "allow-all", 0, 0, GO_ALLOW_ALL }, { "allowall", 0, 0, GO_ALLOW_ALL }, { "compatible", 1, 0, GO_COMPATIBLE }, { "width", 1, 0, GO_WIDTH }, { "max-width", 1, 0, GO_MAX_WIDTH }, { "maxwidth", 1, 0, GO_MAX_WIDTH }, { "no-pager", 0, 0, GO_NO_PAGER }, { "nopager", 0, 0, GO_NO_PAGER }, { "quiet", 0, 0, 'q' }, { "verbose", 0, 0, 'v' }, { "logging", 0, 0, 'L' }, { "timing", 0, 0, GO_TIMING }, { "warn", 1, 0, 'W' }, { "de", 0, 0, GO_DE }, { "colors", 2, 0, GO_COLORS }, { "no-colors", 0, 0, GO_NO_COLORS }, { "nocolors", 0, 0, GO_NO_COLORS }, { "ct-code", 0, 0, GO_CT_CODE }, { "ctcode", 0, 0, GO_CT_CODE }, { "le-code", 2, 0, GO_LE_CODE }, { "lecode", 2, 0, GO_LE_CODE }, { "chdir", 1, 0, GO_CHDIR }, { "const", 1, 0, 'c' }, { "long", 0, 0, 'l' }, { "no-header", 0, 0, 'H' }, { "noheader", 0, 0, 'H' }, { "brief", 0, 0, 'B' }, { "max-file-size", 1, 0, 'M' }, { "maxfilesize", 1, 0, 'M' }, { "tracks", 1, 0, 'T' }, { "arenas", 1, 0, 'A' }, { "utf-8", 0, 0, GO_UTF_8 }, { "utf8", 0, 0, GO_UTF_8 }, { "no-utf-8", 0, 0, GO_NO_UTF_8 }, { "no-utf8", 0, 0, GO_NO_UTF_8 }, { "noutf8", 0, 0, GO_NO_UTF_8 }, { "test", 0, 0, 't' }, { "force", 0, 0, GO_FORCE }, { "repair-magics", 2, 0, GO_REPAIR_MAGICS }, { "repairmagics", 2, 0, GO_REPAIR_MAGICS }, { "OLD", 0, 0, GO_OLD }, { "STD", 0, 0, GO_STD }, { "NEW", 0, 0, GO_NEW }, { "EXTRACT", 0, 0, GO_EXTRACT }, { "dest", 1, 0, 'd' }, { "DEST", 1, 0, 'D' }, { "esc", 1, 0, 'E' }, { "overwrite", 0, 0, 'o' }, { "number", 0, 0, GO_NUMBER }, { "num", 0, 0, GO_NUMBER }, { "remove-dest", 0, 0, 'r' }, { "removedest", 0, 0, 'r' }, { "rm-dest", 0, 0, 'r' }, { "rmdest", 0, 0, 'r' }, { "remove", 0, 0, 'r' }, { "update", 0, 0, 'u' }, { "preserve", 0, 0, 'p' }, { "ignore", 0, 0, 'i' }, { "all", 0, 0, 'a' }, { "mipmaps", 0, 0, GO_MIPMAPS }, { "no-mipmaps", 0, 0, GO_NO_MIPMAPS }, { "nomipmaps", 0, 0, GO_NO_MIPMAPS }, { "no-mm", 0, 0, GO_NO_MIPMAPS }, { "nomm", 0, 0, GO_NO_MIPMAPS }, { "n-mipmaps", 1, 0, GO_N_MIPMAPS }, { "nmipmaps", 1, 0, GO_N_MIPMAPS }, { "n-mm", 1, 0, GO_N_MIPMAPS }, { "nmm", 1, 0, GO_N_MIPMAPS }, { "max-mipmaps", 1, 0, GO_MAX_MIPMAPS }, { "maxmipmaps", 1, 0, GO_MAX_MIPMAPS }, { "max-mm", 1, 0, GO_MAX_MIPMAPS }, { "maxmm", 1, 0, GO_MAX_MIPMAPS }, { "mipmap-size", 1, 0, GO_MIPMAP_SIZE }, { "mipmapsize", 1, 0, GO_MIPMAP_SIZE }, { "mm-size", 1, 0, GO_MIPMAP_SIZE }, { "mmsize", 1, 0, GO_MIPMAP_SIZE }, { "fast-mipmaps", 0, 0, GO_FAST_MIPMAPS }, { "fastmipmaps", 0, 0, GO_FAST_MIPMAPS }, { "fast-mm", 0, 0, GO_FAST_MIPMAPS }, { "fastmm", 0, 0, GO_FAST_MIPMAPS }, { "cmpr-default", 1, 0, GO_CMPR_DEFAULT }, { "pre-convert", 0, 0, GO_PRE_CONVERT }, { "preconvert", 0, 0, GO_PRE_CONVERT }, { "patch", 1, 0, 'P' }, { "transform", 1, 0, 'x' }, { "strip", 0, 0, GO_STRIP }, { "sections", 0, 0, GO_SECTIONS }, {0,0,0,0} }; // /////////////////////////////////////////////////////////////////////////////// /////////////// OptionUsed & OptionIndex /////////////// /////////////////////////////////////////////////////////////////////////////// static u8 OptionUsed[OPT__N_TOTAL+1] = {0}; static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] = { /* 0x000 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x010 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x020 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x030 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x040 */ 0, /* 0x041 A */ OPT_ARENAS, /* 0x042 B */ OPT_BRIEF, /* 0x043 */ 0, /* 0x044 D */ OPT_DEST2, /* 0x045 E */ OPT_ESC, /* 0x046 */ 0,0, /* 0x048 H */ OPT_NO_HEADER, /* 0x049 */ 0,0,0, /* 0x04c L */ OPT_LOGGING, /* 0x04d M */ OPT_MAX_FILE_SIZE, /* 0x04e */ 0,0, /* 0x050 P */ OPT_PATCH, /* 0x051 */ 0,0,0, /* 0x054 T */ OPT_TRACKS, /* 0x055 */ 0, /* 0x056 V */ OPT_VERSION, /* 0x057 W */ OPT_WARN, /* 0x058 */ 0,0,0,0, 0,0,0,0, 0, /* 0x061 a */ OPT_ALL, /* 0x062 */ 0, /* 0x063 c */ OPT_CONST, /* 0x064 d */ OPT_DEST, /* 0x065 */ 0,0,0, /* 0x068 h */ OPT_HELP, /* 0x069 i */ OPT_IGNORE, /* 0x06a */ 0,0, /* 0x06c l */ OPT_LONG, /* 0x06d */ 0,0, /* 0x06f o */ OPT_OVERWRITE, /* 0x070 p */ OPT_PRESERVE, /* 0x071 q */ OPT_QUIET, /* 0x072 r */ OPT_REMOVE_DEST, /* 0x073 */ 0, /* 0x074 t */ OPT_TEST, /* 0x075 u */ OPT_UPDATE, /* 0x076 v */ OPT_VERBOSE, /* 0x077 */ 0, /* 0x078 x */ OPT_TRANSFORM, /* 0x079 */ 0,0,0,0, 0,0,0, /* 0x080 */ OPT_XHELP, /* 0x081 */ OPT_CONFIG, /* 0x082 */ OPT_ALLOW_ALL, /* 0x083 */ OPT_COMPATIBLE, /* 0x084 */ OPT_WIDTH, /* 0x085 */ OPT_MAX_WIDTH, /* 0x086 */ OPT_NO_PAGER, /* 0x087 */ OPT_TIMING, /* 0x088 */ OPT_DE, /* 0x089 */ OPT_COLORS, /* 0x08a */ OPT_NO_COLORS, /* 0x08b */ OPT_CT_CODE, /* 0x08c */ OPT_LE_CODE, /* 0x08d */ OPT_CHDIR, /* 0x08e */ OPT_UTF_8, /* 0x08f */ OPT_NO_UTF_8, /* 0x090 */ OPT_FORCE, /* 0x091 */ OPT_REPAIR_MAGICS, /* 0x092 */ OPT_OLD, /* 0x093 */ OPT_STD, /* 0x094 */ OPT_NEW, /* 0x095 */ OPT_EXTRACT, /* 0x096 */ OPT_NUMBER, /* 0x097 */ OPT_MIPMAPS, /* 0x098 */ OPT_NO_MIPMAPS, /* 0x099 */ OPT_N_MIPMAPS, /* 0x09a */ OPT_MAX_MIPMAPS, /* 0x09b */ OPT_MIPMAP_SIZE, /* 0x09c */ OPT_FAST_MIPMAPS, /* 0x09d */ OPT_CMPR_DEFAULT, /* 0x09e */ OPT_PRE_CONVERT, /* 0x09f */ OPT_STRIP, /* 0x0a0 */ OPT_SECTIONS, /* 0x0a1 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0, /* 0x0b0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0c0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0d0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0e0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0f0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x100 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x110 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x120 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x130 */ 0,0,0,0, 0,0, }; // /////////////////////////////////////////////////////////////////////////////// /////////////// opt_allowed_cmd_* /////////////// /////////////////////////////////////////////////////////////////////////////// static u8 option_allowed_cmd_VERSION[26] = // cmd #1 { 0,1,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1 }; static u8 option_allowed_cmd_HELP[26] = // cmd #2 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1 }; static u8 option_allowed_cmd_CONFIG[26] = // cmd #3 { 0,1,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0 }; static u8 option_allowed_cmd_ARGTEST[26] = // cmd #4 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1 }; static u8 option_allowed_cmd_EXPAND[26] = // cmd #5 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1 }; static u8 option_allowed_cmd_TEST[26] = // cmd #6 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1 }; static u8 option_allowed_cmd_COLORS[26] = // cmd #7 { 0,1,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0 }; static u8 option_allowed_cmd_ERROR[26] = // cmd #8 { 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1 }; static u8 option_allowed_cmd_FILETYPE[26] = // cmd #9 { 0,1,0,0,0, 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0 }; static u8 option_allowed_cmd_FILEATTRIB[26] = // cmd #10 { 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0 }; static u8 option_allowed_cmd_LIST[26] = // cmd #11 { 0,1,1,0,0, 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0 }; static u8 option_allowed_cmd_LIST_L[26] = // cmd #12 { 0,1,1,0,0, 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0 }; static u8 option_allowed_cmd_LIST_LL[26] = // cmd #13 { 0,1,1,0,0, 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0 }; static u8 option_allowed_cmd_DECODE[26] = // cmd #14 { 0,0,0,0,1, 1,1,1,1,1, 1,1,1,0,1, 1,1,1,1,1, 1,1,1,1,1, 0 }; static u8 option_allowed_cmd_ENCODE[26] = // cmd #15 { 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0 }; static u8 option_allowed_cmd_CONVERT[26] = // cmd #16 { 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0 }; static u8 option_allowed_cmd_COPY[26] = // cmd #17 { 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0 }; // /////////////////////////////////////////////////////////////////////////////// /////////////// InfoOption tabs /////////////// /////////////////////////////////////////////////////////////////////////////// static const InfoOption_t * option_tab_tool[] = { OptionInfo + OPT_VERSION, OptionInfo + OPT_HELP, OptionInfo + OPT_XHELP, OptionInfo + OPT_CONFIG, OptionInfo + OPT_ALLOW_ALL, OptionInfo + OPT_COMPATIBLE, OptionInfo + OPT_WIDTH, OptionInfo + OPT_MAX_WIDTH, OptionInfo + OPT_NO_PAGER, OptionInfo + OPT_QUIET, OptionInfo + OPT_VERBOSE, OptionInfo + OPT_LOGGING, OptionInfo + OPT_TIMING, OptionInfo + OPT_WARN, OptionInfo + OPT_DE, OptionInfo + OPT_COLORS, OptionInfo + OPT_NO_COLORS, OptionInfo + OPT_CT_CODE, OptionInfo + OPT_LE_CODE, OptionInfo + OPT_CHDIR, OptionInfo + OPT_CONST, OptionInfo + OPT_MAX_FILE_SIZE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_TEST, OptionInfo + OPT_FORCE, OptionInfo + OPT_REPAIR_MAGICS, 0 }; static const InfoOption_t * option_tab_cmd_VERSION[] = { &option_cmd_VERSION_BRIEF, OptionInfo + OPT_SECTIONS, &option_cmd_VERSION_LONG, 0 }; static const InfoOption_t * option_tab_cmd_HELP[] = { OptionInfo + OPT_WIDTH, OptionInfo + OPT_MAX_WIDTH, 0 }; static const InfoOption_t * option_tab_cmd_CONFIG[] = { OptionInfo + OPT_CONFIG, &option_cmd_CONFIG_BRIEF, &option_cmd_CONFIG_LONG, 0 }; static const InfoOption_t * option_tab_cmd_ARGTEST[] = { 0 }; static const InfoOption_t * option_tab_cmd_EXPAND[] = { 0 }; static const InfoOption_t * option_tab_cmd_TEST[] = { 0 }; static const InfoOption_t * option_tab_cmd_COLORS[] = { OptionInfo + OPT_COLORS, OptionInfo + OPT_NO_COLORS, &option_cmd_COLORS_LONG, &option_cmd_COLORS_BRIEF, 0 }; static const InfoOption_t * option_tab_cmd_ERROR[] = { OptionInfo + OPT_SECTIONS, OptionInfo + OPT_NO_HEADER, &option_cmd_ERROR_LONG, &option_cmd_ERROR_BRIEF, 0 }; static const InfoOption_t * option_tab_cmd_FILETYPE[] = { &option_cmd_FILETYPE_LONG, OptionInfo + OPT_IGNORE, 0 }; static const InfoOption_t * option_tab_cmd_FILEATTRIB[] = { OptionInfo + OPT_NO_HEADER, 0 }; static const InfoOption_t * option_tab_cmd_LIST[] = { &option_cmd_LIST_LONG, OptionInfo + OPT_NO_HEADER, OptionInfo + OPT_IGNORE, 0 }; static const InfoOption_t * option_tab_cmd_LIST_L[] = { &option_cmd_LIST_LONG, OptionInfo + OPT_NO_HEADER, OptionInfo + OPT_IGNORE, 0 }; static const InfoOption_t * option_tab_cmd_LIST_LL[] = { &option_cmd_LIST_LONG, OptionInfo + OPT_NO_HEADER, OptionInfo + OPT_IGNORE, 0 }; static const InfoOption_t * option_tab_cmd_DECODE[] = { OptionInfo + OPT_DEST, OptionInfo + OPT_DEST2, OptionInfo + OPT_ESC, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_OVERWRITE, OptionInfo + OPT_NUMBER, OptionInfo + OPT_REMOVE_DEST, OptionInfo + OPT_UPDATE, OptionInfo + OPT_PRESERVE, OptionInfo + OPT_IGNORE, OptionInfo + OPT_N_MIPMAPS, OptionInfo + OPT_MAX_MIPMAPS, OptionInfo + OPT_MIPMAP_SIZE, OptionInfo + OPT_PRE_CONVERT, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PATCH, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_MIPMAPS, OptionInfo + OPT_NO_MIPMAPS, OptionInfo + OPT_FAST_MIPMAPS, OptionInfo + OPT_CMPR_DEFAULT, OptionInfo + OPT_TRANSFORM, OptionInfo + OPT_STRIP, 0 }; static const InfoOption_t * option_tab_cmd_ENCODE[] = { OptionInfo + OPT_DEST, OptionInfo + OPT_DEST2, OptionInfo + OPT_ESC, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_OVERWRITE, OptionInfo + OPT_NUMBER, OptionInfo + OPT_REMOVE_DEST, OptionInfo + OPT_UPDATE, OptionInfo + OPT_PRESERVE, OptionInfo + OPT_IGNORE, &option_cmd_ENCODE_ALL, OptionInfo + OPT_N_MIPMAPS, OptionInfo + OPT_MAX_MIPMAPS, OptionInfo + OPT_MIPMAP_SIZE, OptionInfo + OPT_PRE_CONVERT, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PATCH, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_MIPMAPS, OptionInfo + OPT_NO_MIPMAPS, OptionInfo + OPT_FAST_MIPMAPS, OptionInfo + OPT_CMPR_DEFAULT, OptionInfo + OPT_TRANSFORM, OptionInfo + OPT_STRIP, 0 }; static const InfoOption_t * option_tab_cmd_CONVERT[] = { OptionInfo + OPT_DEST, OptionInfo + OPT_DEST2, OptionInfo + OPT_ESC, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_OVERWRITE, OptionInfo + OPT_NUMBER, OptionInfo + OPT_REMOVE_DEST, OptionInfo + OPT_UPDATE, OptionInfo + OPT_PRESERVE, OptionInfo + OPT_IGNORE, &option_cmd_ENCODE_ALL, OptionInfo + OPT_N_MIPMAPS, OptionInfo + OPT_MAX_MIPMAPS, OptionInfo + OPT_MIPMAP_SIZE, OptionInfo + OPT_PRE_CONVERT, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PATCH, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_MIPMAPS, OptionInfo + OPT_NO_MIPMAPS, OptionInfo + OPT_FAST_MIPMAPS, OptionInfo + OPT_CMPR_DEFAULT, OptionInfo + OPT_TRANSFORM, OptionInfo + OPT_STRIP, 0 }; static const InfoOption_t * option_tab_cmd_COPY[] = { OptionInfo + OPT_DEST, OptionInfo + OPT_DEST2, OptionInfo + OPT_ESC, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_OVERWRITE, OptionInfo + OPT_NUMBER, OptionInfo + OPT_REMOVE_DEST, OptionInfo + OPT_UPDATE, OptionInfo + OPT_PRESERVE, OptionInfo + OPT_IGNORE, &option_cmd_ENCODE_ALL, OptionInfo + OPT_N_MIPMAPS, OptionInfo + OPT_MAX_MIPMAPS, OptionInfo + OPT_MIPMAP_SIZE, OptionInfo + OPT_PRE_CONVERT, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PATCH, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_MIPMAPS, OptionInfo + OPT_NO_MIPMAPS, OptionInfo + OPT_FAST_MIPMAPS, OptionInfo + OPT_CMPR_DEFAULT, OptionInfo + OPT_TRANSFORM, OptionInfo + OPT_STRIP, 0 }; // /////////////////////////////////////////////////////////////////////////////// /////////////// InfoCommand /////////////// /////////////////////////////////////////////////////////////////////////////// static const InfoCommand_t CommandInfo[CMD__N+1] = { { 0, false, false, false, "wimgt", 0, "wimgt [option]... command [option|parameter|file]...", "Wiimms Image Tool : Extract and convert graphic images. The file" " formats TPL, TEX, BTI, BREFT and PNG are supported.", 0, 25, option_tab_tool, 0 }, { CMD_VERSION, false, false, false, "VERSION", 0, "wimgt VERSION [ignored]...", "Print program name and version and exit.", 0, 3, option_tab_cmd_VERSION, option_allowed_cmd_VERSION }, { CMD_HELP, false, false, false, "HELP", "H", "wimgt HELP [--width=wd] OPT|OPTION ...\n" "wimgt HELP [--width=wd] CMD|COMMAND [ignored]...\n" "wimgt HELP [--width=wd] command [-b] [ignored]...\n" "wimgt HELP [--width=wd] [ignored]...", "Print help for commands and options.", "Print help for commands and options.\n" " The first variant (with keyword OPT or OPTION) prints a list of all" " global and command specific options. If at least one option is set," " only info about the declared options are printed. The second variant" " (with keyword CMD or COMMAND) prints an overview about all commands." " The third variant (with a valid command name) prints details about" " the declared command. The fourth variant prints an overview about" " all commands and all global options.", 2, option_tab_cmd_HELP, option_allowed_cmd_HELP }, { CMD_CONFIG, false, false, false, "CONFIG", 0, "wimgt CONFIG [options]...", "Show all information about the search for the configuration file and" " its content.", 0, 3, option_tab_cmd_CONFIG, option_allowed_cmd_CONFIG }, { CMD_ARGTEST, false, false, false, "ARGTEST", 0, "wimgt ARGTEST ...", "This debug command accepts all kinds of parameters and prints one" " line for each parameter. All tools know the ARGTEST command.", 0, 0, option_tab_cmd_ARGTEST, option_allowed_cmd_ARGTEST }, { CMD_EXPAND, false, false, false, "EXPAND", 0, "wimgt EXPAND ...", "This debug command accepts (like ARGTEST) all kinds of parameters and" " prints one line for each parameter. After that, the parameter is" " treated as a filename with wildcards and all matching files are" " searched. The special parameters '+h' and '/h' enable or disable the" " search for hidden directories and files (files beginning with a" " point). All tools know the EXPAND command.", 0, 0, option_tab_cmd_EXPAND, option_allowed_cmd_EXPAND }, { CMD_TEST, false, false, false, "TEST", 0, "wimgt TEST [options]... [ignored]...", "This debugging command accepts all options and parameters and prints" " a list of the internal option values. The command is designed to" " test the option parameters. The non option parameters are completely" " ignored.", 0, 0, option_tab_cmd_TEST, option_allowed_cmd_TEST }, { CMD_COLORS, false, false, false, "COLORS", 0, "wimgt COLORS", "Ignore all parameters and print colored text for testing.", 0, 4, option_tab_cmd_COLORS, option_allowed_cmd_COLORS }, { CMD_ERROR, false, false, false, "ERROR", "ERR", "wimgt ERROR [error_code]", "Translate an exit code to a message name. If no exit code is entered," " print a table with all error messages. All tools know the ERROR" " command.", 0, 4, option_tab_cmd_ERROR, option_allowed_cmd_ERROR }, { CMD_FILETYPE, false, false, false, "FILETYPE", "FT", "wimgt FILETYPE file...", "Scan the header of the entered files and print file type and path for" " each file as list. All tools know the FILETYPE command.", 0, 2, option_tab_cmd_FILETYPE, option_allowed_cmd_FILETYPE }, { CMD_FILEATTRIB, false, false, false, "FILEATTRIB", "FA", "wimgt FILEATTRIB [keyword]...", "Print a table with attributes for all known file types. If at least" " one keyword is entered, only matching file types are printed. A" " keyword is either a file type (like 'BRRES' or 'BMG') or one of the" " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the" " FILEATTRIB command.", 0, 1, option_tab_cmd_FILEATTRIB, option_allowed_cmd_FILEATTRIB }, { CMD_LIST, false, false, true, "LIST", "LS", "wimgt LIST [source]...", "List images files and print file and image type.", 0, 3, option_tab_cmd_LIST, option_allowed_cmd_LIST }, { CMD_LIST_L, false, false, false, "LIST-L", "LL", "wit LIST-L [source]...", "List images files and print file and image type and geometry data." " 'LIST-L' is a short cut for 'LIST --long'.", 0, 3, option_tab_cmd_LIST_L, option_allowed_cmd_LIST_L }, { CMD_LIST_LL, false, false, false, "LIST-LL", "LLL", "wit LIST-LL [source]...", "List images files and print file and image type and advanced geometry" " data. 'LIST-LL' is a short cut for 'LIST --long --long'.", 0, 3, option_tab_cmd_LIST_LL, option_allowed_cmd_LIST_LL }, { CMD_DECODE, false, false, true, "DECODE", "DEC", "wimgt DECODE [source]...", "Decode (export) the entered image files into PNG files. The default" " destination is '%P/%F.png'.", 0, 20, option_tab_cmd_DECODE, option_allowed_cmd_DECODE }, { CMD_ENCODE, false, false, false, "ENCODE", "ENC", "wimgt ENCODE [source]...", "Encode (import) the entered PNG files and convert them to to an" " internal image format (TPL, TEX, BREFT). The default destination is" " '%P/%N' (removed extension).", 0, 21, option_tab_cmd_ENCODE, option_allowed_cmd_ENCODE }, { CMD_CONVERT, false, false, false, "CONVERT", "CV", "wimgt CONVERT [source]...", "Convert the entered image files into new file and image formats. The" " old file is replaced by the new one. The difference to ENCODE is" " only the default file name handling.", 0, 21, option_tab_cmd_CONVERT, option_allowed_cmd_CONVERT }, { CMD_COPY, false, false, false, "COPY", "CP", "wimgt COPY source dest\n" "wimgt COPY source... [-d|-D] dest", "Copy and convert an image from 'source' to 'dest'. Multiple sources" " can be used, if 'dest' is a directory or contains at least one" " %-pattern.\n" " This is an alternative for the ENCODE and DECODE commands. The" " default destination file format is selected by scanning the file" " extension of the destination. Option --transform may override this." " Option --overwrite is set implicitly.", 0, 21, option_tab_cmd_COPY, option_allowed_cmd_COPY }, {0,0,0,0,0,0,0,0,0,0,0,0} }; // /////////////////////////////////////////////////////////////////////////////// /////////////// InfoUI /////////////// /////////////////////////////////////////////////////////////////////////////// const InfoUI_t InfoUI_wimgt = { "wimgt", CMD__N, CommandTab, CommandInfo, OPT__N_SPECIFIC, OPT__N_TOTAL, OptionInfo, OptionUsed, OptionIndex, OptionShort, OptionLong }; // /////////////////////////////////////////////////////////////////////////////// /////////////// END /////////////// ///////////////////////////////////////////////////////////////////////////////