ckplot

Unnamed repository
Log | Files | Refs

commit 4f191e74da22f0c98ff91fa2bdd890ca858440ef
parent 2729af259a99d7a65dd21904dc6fc8cb4d376d18
Author: aabacchus <ben@bvnf.space>
Date:   Sun,  3 Oct 2021 01:00:41 +0100

kplot: add -w -h width/height flags

Diffstat:
Mkplot.c | 32++++++++++++++++++++++++++------
1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/kplot.c b/kplot.c @@ -10,25 +10,29 @@ void usage(char *argv0) { - fprintf(stderr, "usage: %s [-HTo] [file.csv]\n", argv0); + fprintf(stderr, "usage: %s [-HTwoh] [file.csv]\n", argv0); fprintf(stderr, " -H treat first line as header\n"); fprintf(stderr, " -T format output format (options \"png\", \"pdf\")" " (default: \"pdf\")\n"); fprintf(stderr, " -o outfile output filename\n"); + fprintf(stderr, " -w width\n"); + fprintf(stderr, " -h height\n"); } int main(int argc, char **argv) { - int ch, flag_H, flag_o, output_type; + int ch, flag_H, flag_o, output_type, width, height, w, h; char *outfile; flag_H = flag_o = 0; + width = 600; + height = 400; enum { OUT_PNG, OUT_PDF }; output_type = OUT_PDF; outfile = "out.pdf"; - while ((ch = getopt(argc, argv, "HT:o:")) != -1) { + while ((ch = getopt(argc, argv, "HT:o:w:h:")) != -1) { switch (ch) { case 'H': flag_H = 1; @@ -48,6 +52,22 @@ main(int argc, char **argv) { flag_o = 1; outfile = optarg; break; + case 'h': + h = atoi(optarg); + if (h <= 0) { + fprintf(stderr, "bad height \"%s\"\n", optarg); + return 1; + } + height = h; + break; + case 'w': + w = atoi(optarg); + if (w <= 0) { + fprintf(stderr, "bad width \"%s\"\n", optarg); + return 1; + } + width = w; + break; case '?': usage(*argv); return 1; @@ -101,12 +121,12 @@ main(int argc, char **argv) { kplot_attach_data(p, d1, KPLOT_POINTS, NULL); kdata_destroy(d1); if (output_type == OUT_PNG) - surf = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 600, 400); + surf = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height); else - surf = cairo_pdf_surface_create(outfile, 600, 400); + surf = cairo_pdf_surface_create(outfile, width, height); cr = cairo_create(surf); cairo_surface_destroy(surf); - kplot_draw(p, 600.0, 400.0, cr); + kplot_draw(p, (double) width, (double) height, cr); if (output_type == OUT_PNG) cairo_surface_write_to_png(cairo_get_target(cr), outfile); cairo_destroy(cr);