diff options
Diffstat (limited to 'experimental/tectonics/main.c')
-rw-r--r-- | experimental/tectonics/main.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/experimental/tectonics/main.c b/experimental/tectonics/main.c new file mode 100644 index 0000000..93b32fb --- /dev/null +++ b/experimental/tectonics/main.c @@ -0,0 +1,84 @@ +#include <cairo.h> + +#include "tectonics.h" +#include "drawing.h" +#include "logging.h" + +#define X_RES 1024 +#define Y_RES X_RES + + +int parse_options(char **output_file, int argc, char **argv); + + +int main(int argc, char **argv) +{ + char *output_file; + if (parse_options(&output_file, argc, argv)) + return 1; + + cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, X_RES, Y_RES); + cairo_t *cr = cairo_create(surface); + + struct world_t world; + create_world(&world, 100000); + if (world.points == NULL) + return 1; + draw_world(cr, &world); + free_world(&world); + + cairo_destroy(cr); + cairo_surface_write_to_png(surface, "output.png"); + cairo_surface_destroy(surface); + return 0; +} + + +#include <stdio.h> +#include <unistd.h> + +static void print_usage(const char *progname) +{ + printf("Usage: %s [-c config_file] [-v[v[v]]] [-q[q[q]]] [-h] [-s script]\n" + " -v Increase output verbosity (-vvv displays every log message)\n" + " -q Decrease output verbosity (-qqq suppresses even fatal errors)\n" + " -c Specify configuration file to read (default 'config.lua')\n" + " -s Override the built-in Lua script\n" + " -h Print this help message and exit\n", + progname); +} + +int parse_options(char **output_file, int argc, char **argv) +{ + int log_level = WARN; + *output_file = "output.png"; + + int opt; + while ((opt = getopt(argc, argv, "qvo:h")) != -1) { + switch (opt) { + case 'q': + log_level -= 1; + break; + + case 'v': + log_level += 1; + break; + + case 'o': + *output_file = optarg; + + case 'h': + print_usage(argv[0]); + return 2; + + default: + print_usage(argv[0]); + return 1; + } + } + + // ew, globals (sorry) + global_log_level = log_level; + + return 0; +} |