| @@ -19,8 +19,11 @@ |
| 19 | 19 | | |
| 20 | 20 | | #include "nsxiv.h" |
| 21 | 21 | | #include "version.h" |
| 22 | + | #define INCLUDE_OPTIONS_CONFIG |
| 23 | + | #include "config.h" |
| 22 | 24 | | |
| 23 | 25 | | #include <assert.h> |
| 26 | + | #include <limits.h> |
| 24 | 27 | | #include <stdio.h> |
| 25 | 28 | | #include <stdlib.h> |
| 26 | 29 | | #include <string.h> |
| @@ -63,31 +66,35 @@ static void print_version(void) |
| 63 | 66 | | |
| 64 | 67 | | void parse_options(int argc, char **argv) |
| 65 | 68 | | { |
| 69 | + | enum { /* ensure these can't be represented in a single byte */ |
| 70 | + | OPT_AA = UCHAR_MAX + 1 |
| 71 | + | }; |
| 66 | 72 | | static const struct optparse_long longopts[] = { |
| 67 | | − | { "framerate", 'A', OPTPARSE_REQUIRED }, |
| 68 | | − | { "animate", 'a', OPTPARSE_NONE }, |
| 69 | | − | { "no-bar", 'b', OPTPARSE_NONE }, |
| 70 | | − | { "clean-cache", 'c', OPTPARSE_NONE }, |
| 71 | | − | { "embed", 'e', OPTPARSE_REQUIRED }, |
| 72 | | − | { "fullscreen", 'f', OPTPARSE_NONE }, |
| 73 | | − | { "gamma", 'G', OPTPARSE_REQUIRED }, |
| 74 | | − | { "geometry", 'g', OPTPARSE_REQUIRED }, |
| 75 | | − | { "help", 'h', OPTPARSE_NONE }, |
| 76 | | − | { "stdin", 'i', OPTPARSE_NONE }, |
| 77 | | − | { "class", 'N', OPTPARSE_REQUIRED }, |
| 78 | | − | { "start-at", 'n', OPTPARSE_REQUIRED }, |
| 79 | | − | { "stdout", 'o', OPTPARSE_NONE }, |
| 80 | | − | { "private", 'p', OPTPARSE_NONE }, |
| 81 | | − | { "quiet", 'q', OPTPARSE_NONE }, |
| 82 | | − | { "recursive", 'r', OPTPARSE_NONE }, |
| 83 | | − | { "ss-delay", 'S', OPTPARSE_REQUIRED }, |
| 84 | | − | { "scale-mode", 's', OPTPARSE_REQUIRED }, |
| 85 | | − | { NULL, 'T', OPTPARSE_REQUIRED }, |
| 86 | | − | { "thumbnail", 't', OPTPARSE_NONE }, |
| 87 | | − | { "version", 'v', OPTPARSE_NONE }, |
| 88 | | − | { "zoom-100", 'Z', OPTPARSE_NONE }, |
| 89 | | − | { "zoom", 'z', OPTPARSE_REQUIRED }, |
| 90 | | − | { "null", '0', OPTPARSE_NONE }, |
| 73 | + | { "framerate", 'A', OPTPARSE_REQUIRED }, |
| 74 | + | { "animate", 'a', OPTPARSE_NONE }, |
| 75 | + | { "no-bar", 'b', OPTPARSE_NONE }, |
| 76 | + | { "clean-cache", 'c', OPTPARSE_NONE }, |
| 77 | + | { "embed", 'e', OPTPARSE_REQUIRED }, |
| 78 | + | { "fullscreen", 'f', OPTPARSE_NONE }, |
| 79 | + | { "gamma", 'G', OPTPARSE_REQUIRED }, |
| 80 | + | { "geometry", 'g', OPTPARSE_REQUIRED }, |
| 81 | + | { "help", 'h', OPTPARSE_NONE }, |
| 82 | + | { "stdin", 'i', OPTPARSE_NONE }, |
| 83 | + | { "class", 'N', OPTPARSE_REQUIRED }, |
| 84 | + | { "start-at", 'n', OPTPARSE_REQUIRED }, |
| 85 | + | { "stdout", 'o', OPTPARSE_NONE }, |
| 86 | + | { "private", 'p', OPTPARSE_NONE }, |
| 87 | + | { "quiet", 'q', OPTPARSE_NONE }, |
| 88 | + | { "recursive", 'r', OPTPARSE_NONE }, |
| 89 | + | { "ss-delay", 'S', OPTPARSE_REQUIRED }, |
| 90 | + | { "scale-mode", 's', OPTPARSE_REQUIRED }, |
| 91 | + | { NULL, 'T', OPTPARSE_REQUIRED }, |
| 92 | + | { "thumbnail", 't', OPTPARSE_NONE }, |
| 93 | + | { "version", 'v', OPTPARSE_NONE }, |
| 94 | + | { "zoom-100", 'Z', OPTPARSE_NONE }, |
| 95 | + | { "zoom", 'z', OPTPARSE_REQUIRED }, |
| 96 | + | { "null", '0', OPTPARSE_NONE }, |
| 97 | + | { "anti-alias", OPT_AA, OPTPARSE_OPTIONAL }, |
| 91 | 98 | | { 0 }, /* end */ |
| 92 | 99 | | }; |
| 93 | 100 | | |
| @@ -106,6 +113,7 @@ void parse_options(int argc, char **argv) |
| 106 | 113 | | |
| 107 | 114 | | _options.scalemode = SCALE_DOWN; |
| 108 | 115 | | _options.zoom = 1.0; |
| 116 | + | _options.aa = ANTI_ALIAS; |
| 109 | 117 | | _options.animate = false; |
| 110 | 118 | | _options.gamma = 0; |
| 111 | 119 | | _options.slideshow = 0; |
| @@ -233,6 +241,11 @@ void parse_options(int argc, char **argv) |
| 233 | 241 | | case '0': |
| 234 | 242 | | _options.using_null = true; |
| 235 | 243 | | break; |
| 244 | + | case OPT_AA: |
| 245 | + | if (op.optarg != NULL && !STREQ(op.optarg, "no")) |
| 246 | + | error(EXIT_FAILURE, 0, "Invalid argument for option --anti-alias: %s", op.optarg); |
| 247 | + | _options.aa = op.optarg == NULL; |
| 248 | + | break; |
| 236 | 249 | | } |
| 237 | 250 | | } |
| 238 | 251 | | |