#include #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 #include 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; }