summaryrefslogtreecommitdiffstats
path: root/dimension
diff options
context:
space:
mode:
Diffstat (limited to 'dimension')
-rw-r--r--dimension/main.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/dimension/main.c b/dimension/main.c
index e5a5c1b..2bd4e10 100644
--- a/dimension/main.c
+++ b/dimension/main.c
@@ -32,6 +32,7 @@ static char *output = NULL, *input = NULL;
static bool free_output = false;
static unsigned int width = 640, height = 480;
static unsigned int nthreads = 0;
+static dmnsn_quality quality = DMNSN_RENDER_FULL;
static int tokenize = 0, parse = 0;
static void print_usage(FILE *file, const char *arg0);
@@ -44,7 +45,8 @@ main(int argc, char **argv) {
/* Long-only option codes */
enum {
- DMNSN_OPT_THREADS = 256
+ DMNSN_OPT_THREADS = 256,
+ DMNSN_OPT_QUALITY
};
static struct option long_options[] = {
@@ -53,6 +55,7 @@ main(int argc, char **argv) {
{ "width", required_argument, NULL, 'w' },
{ "height", required_argument, NULL, 'h' },
{ "threads", required_argument, NULL, DMNSN_OPT_THREADS },
+ { "quality", required_argument, NULL, DMNSN_OPT_QUALITY },
{ "tokenize", no_argument, &tokenize, 1 },
{ "parse", no_argument, &parse, 1 },
{ 0, 0, 0, 0 }
@@ -125,6 +128,19 @@ main(int argc, char **argv) {
}
break;
}
+ case DMNSN_OPT_QUALITY:
+ {
+ dmnsn_assert(optarg, "NULL argument.");
+
+ char *endptr;
+ quality = strtoul(optarg, &endptr, 0);
+ if (*endptr != '\0' || endptr == optarg) {
+ fprintf(stderr, "Invalid argument to --quality!\n");
+ print_usage(stderr, argv[0]);
+ return EXIT_FAILURE;
+ }
+ break;
+ }
default:
fprintf(stderr, "Invalid command line option!\n");
@@ -218,6 +234,9 @@ main(int argc, char **argv) {
if (nthreads)
scene->nthreads = nthreads;
+ /* Set the render quality */
+ scene->quality = quality;
+
/*
* Now we render the scene
*/