imake plotting work without scales - ploot - simple plotting tools Err bitreich.org 70 hgit clone git://bitreich.org/ploot git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ploot URL:git://bitreich.org/ploot git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ploot bitreich.org 70 1Log /scm/ploot/log.gph bitreich.org 70 1Files /scm/ploot/files.gph bitreich.org 70 1Refs /scm/ploot/refs.gph bitreich.org 70 1Tags /scm/ploot/tag bitreich.org 70 1README /scm/ploot/file/README.md.gph bitreich.org 70 1LICENSE /scm/ploot/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 329e7cc8a47b33e9e4efb0f8bdcfb396e89bbb21 /scm/ploot/commit/329e7cc8a47b33e9e4efb0f8bdcfb396e89bbb21.gph bitreich.org 70 1parent 6d206dec470107adc7708b518bff521d8974f8a7 /scm/ploot/commit/6d206dec470107adc7708b518bff521d8974f8a7.gph bitreich.org 70 hAuthor: Josuah Demangeon URL:mailto:mail@josuah.net bitreich.org 70 iDate: Mon, 7 May 2018 02:06:55 +0200 Err bitreich.org 70 i Err bitreich.org 70 imake plotting work without scales Err bitreich.org 70 i Err bitreich.org 70 iPlotting works with some essential features missing and not much Err bitreich.org 70 itesting. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M ffdraw.c | 1 + Err bitreich.org 70 i M ploot.c | 2 -- Err bitreich.org 70 i M ploot.h | 3 --- Err bitreich.org 70 i M plootxt.c | 63 +++++++++++++++---------------- Err bitreich.org 70 i M test.csv | 143 ++++++++++++++++++++++++------- Err bitreich.org 70 i M util.h | 4 ++++ Err bitreich.org 70 i Err bitreich.org 70 i6 files changed, 149 insertions(+), 67 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/ffdraw.c b/ffdraw.c /scm/ploot/file/ffdraw.c.gph bitreich.org 70 i@@ -13,6 +13,7 @@ Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i Err bitreich.org 70 i+#include "util.h" Err bitreich.org 70 i #include "ploot.h" Err bitreich.org 70 i Err bitreich.org 70 i /* Err bitreich.org 70 1diff --git a/ploot.c b/ploot.c /scm/ploot/file/ploot.c.gph bitreich.org 70 i@@ -11,8 +11,6 @@ Err bitreich.org 70 i #include "util.h" Err bitreich.org 70 i #include "config.h" /* after ploot.h for type definitions */ Err bitreich.org 70 i Err bitreich.org 70 i-#define LEN(x) (sizeof(x) / sizeof(*x)) Err bitreich.org 70 i- Err bitreich.org 70 i char *argv0; Err bitreich.org 70 i char *tflag = ""; Err bitreich.org 70 i char *uflag = ""; Err bitreich.org 70 1diff --git a/ploot.h b/ploot.h /scm/ploot/file/ploot.h.gph bitreich.org 70 i@@ -1,9 +1,6 @@ Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i Err bitreich.org 70 i-#define MIN(x, y) ((x) < (y) ? (x) : (y)) Err bitreich.org 70 i-#define MAX(x, y) ((x) > (y) ? (x) : (y)) Err bitreich.org 70 i- Err bitreich.org 70 i typedef uint16_t Color[4]; Err bitreich.org 70 i Err bitreich.org 70 i typedef struct { Err bitreich.org 70 1diff --git a/plootxt.c b/plootxt.c /scm/ploot/file/plootxt.c.gph bitreich.org 70 i@@ -15,6 +15,7 @@ Err bitreich.org 70 i #define BRAILLE_START 10240 Err bitreich.org 70 i Err bitreich.org 70 i int wflag = 80; Err bitreich.org 70 i+int width; Err bitreich.org 70 i Err bitreich.org 70 i char *argv0; Err bitreich.org 70 i Err bitreich.org 70 i@@ -35,12 +36,13 @@ plot_dot(long *out, int row, int col) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i-plot_val(long *out, double val, double max, int row, int width) Err bitreich.org 70 i+plot_val(long *out, double val, double max, int row) Err bitreich.org 70 i { Err bitreich.org 70 i int col; Err bitreich.org 70 i Err bitreich.org 70 i- col = (int)((double)(val * width * 2) / max); Err bitreich.org 70 i- for (; col > 0; out++, col--) Err bitreich.org 70 i+ val = MIN(max, val); Err bitreich.org 70 i+ col = (int)(val * (double)(width - 1) / max * 2); Err bitreich.org 70 i+ for (; col > 0; col--) Err bitreich.org 70 i plot_dot(out + col / 2, row, col % 2); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -49,7 +51,7 @@ plot_val(long *out, double val, double max, int row, int width) Err bitreich.org 70 i * values line. Err bitreich.org 70 i */ Err bitreich.org 70 i static time_t Err bitreich.org 70 i-plot_row(long *out, char *line, double *max, int nrow, int ncol, int width) Err bitreich.org 70 i+plot_row(long *out, char *line, double *max, int nrow, int ncol) Err bitreich.org 70 i { Err bitreich.org 70 i time_t epoch; Err bitreich.org 70 i double val; Err bitreich.org 70 i@@ -64,7 +66,7 @@ plot_row(long *out, char *line, double *max, int nrow, int ncol, int width) Err bitreich.org 70 i if (n >= ncol) Err bitreich.org 70 i fputs("too many values\n", stderr), exit(1); Err bitreich.org 70 i val = eatof(tok); Err bitreich.org 70 i- plot_val(out + n * width, max[n - 1], nrow, val, width); Err bitreich.org 70 i+ plot_val(out + n * width, val, max[n], nrow); Err bitreich.org 70 i } Err bitreich.org 70 i if (n < ncol) Err bitreich.org 70 i fputs("not enough values\n", stderr), exit(1); Err bitreich.org 70 i@@ -76,7 +78,7 @@ plot_row(long *out, char *line, double *max, int nrow, int ncol, int width) Err bitreich.org 70 i * Read enough input in order to print one line and plot it into 'out'. Err bitreich.org 70 i */ Err bitreich.org 70 i static time_t Err bitreich.org 70 i-plot_line(long *out, double *max, int ncol, int width) Err bitreich.org 70 i+plot_line(long *out, double *max, int ncol) Err bitreich.org 70 i { Err bitreich.org 70 i time_t epoch; Err bitreich.org 70 i int n, nrow; Err bitreich.org 70 i@@ -89,7 +91,7 @@ plot_line(long *out, double *max, int ncol, int width) Err bitreich.org 70 i for (nrow = 0; nrow < 4; nrow++) { Err bitreich.org 70 i if ((esfgets(line, LINE_MAX, stdin)) == NULL) Err bitreich.org 70 i exit(0); Err bitreich.org 70 i- epoch = plot_row(out, line, max, nrow, ncol, width); Err bitreich.org 70 i+ epoch = plot_row(out, line, max, nrow, ncol); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i return epoch; Err bitreich.org 70 i@@ -130,7 +132,6 @@ put_line(long *out) Err bitreich.org 70 i { Err bitreich.org 70 i for (; *out != '\0'; out++) Err bitreich.org 70 i print_utf8_3bytes(*out); Err bitreich.org 70 i- putchar('|'); Err bitreich.org 70 i putchar('\n'); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -139,16 +140,15 @@ plot(char labels[LINE_MAX], double *max, int ncol) Err bitreich.org 70 i { Err bitreich.org 70 i time_t epoch, last_epoch; Err bitreich.org 70 i long out[WIDTH_MAX + 1]; Err bitreich.org 70 i- int n, width; Err bitreich.org 70 i+ int n; Err bitreich.org 70 i Err bitreich.org 70 i- width = (wflag - sizeof("XXxXXxXX _|")) / ncol - sizeof("|"); Err bitreich.org 70 i last_epoch = epoch = 0; Err bitreich.org 70 i Err bitreich.org 70 i- for (n = 0;; n = n == 20 ? 0 : n + 1) { Err bitreich.org 70 i+ for (n = 0;; n = n == 25 ? 0 : n + 1) { Err bitreich.org 70 i if (n == 0) Err bitreich.org 70 i put_time(0, 0, 2), puts(labels); Err bitreich.org 70 i Err bitreich.org 70 i- epoch = plot_line(out, max, ncol, width); Err bitreich.org 70 i+ epoch = plot_line(out, max, ncol); Err bitreich.org 70 i put_time(epoch, last_epoch, n); Err bitreich.org 70 i last_epoch = epoch; Err bitreich.org 70 i put_line(out); Err bitreich.org 70 i@@ -157,25 +157,15 @@ plot(char labels[LINE_MAX], double *max, int ncol) Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i-static void Err bitreich.org 70 i-fmt_labels(char out[LINE_MAX], int ncol, char *labels[LINE_MAX / 2]) Err bitreich.org 70 i-{ Err bitreich.org 70 i- int i, w; Err bitreich.org 70 i- Err bitreich.org 70 i- w = wflag / ncol; Err bitreich.org 70 i- for (i = 0; i < ncol; labels++, i++) Err bitreich.org 70 i- out += snprintf(out, w - 1, " %.*s", w - 1, *labels); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i /* Err bitreich.org 70 i * Label must be able to store all pointers to token buf has to Err bitreich.org 70 i * offer: sizeof(*buf / 2). Err bitreich.org 70 i */ Err bitreich.org 70 i static int Err bitreich.org 70 i-read_labels(char out[LINE_MAX]) Err bitreich.org 70 i+read_labels(char *labv[LINE_MAX]) Err bitreich.org 70 i { Err bitreich.org 70 i int ncol; Err bitreich.org 70 i- char *l, line[LINE_MAX], **lab, *labels[LINE_MAX / 2], *tok; Err bitreich.org 70 i+ char *l, line[LINE_MAX], *tok; Err bitreich.org 70 i Err bitreich.org 70 i if ((l = esfgets(line, LINE_MAX, stdin)) == NULL) Err bitreich.org 70 i fputs("missing label line\n", stderr), exit(1); Err bitreich.org 70 i@@ -183,20 +173,27 @@ read_labels(char out[LINE_MAX]) Err bitreich.org 70 i if (strcmp(strsep(&l, ","), "epoch") != 0) Err bitreich.org 70 i fputs("first label must be \"epoch\"\n", stderr), exit(1); Err bitreich.org 70 i Err bitreich.org 70 i- lab = labels; Err bitreich.org 70 i- for (ncol = 0; (tok = strsep(&l, ",")) != NULL; ncol++, lab++) Err bitreich.org 70 i- *lab = tok; Err bitreich.org 70 i- *lab = NULL; Err bitreich.org 70 i+ for (ncol = 0; (tok = strsep(&l, ",")) != NULL; ncol++, labv++) Err bitreich.org 70 i+ *labv = tok; Err bitreich.org 70 i+ *labv = NULL; Err bitreich.org 70 i Err bitreich.org 70 i if (ncol < 1) Err bitreich.org 70 i fputs("no label found\n", stderr), exit(1); Err bitreich.org 70 i Err bitreich.org 70 i- fmt_labels(out, ncol, labels); Err bitreich.org 70 i- Err bitreich.org 70 i return ncol; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i+fmt_labels(char out[LINE_MAX], int ncol, char *labels[LINE_MAX / 2]) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ int i; Err bitreich.org 70 i+ Err bitreich.org 70 i+ printf("%d\n", width); Err bitreich.org 70 i+ for (i = 0; i < ncol; labels++, i++) Err bitreich.org 70 i+ out += snprintf(out, width + 3, " %-*s |", width - 3, *labels); Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+static void Err bitreich.org 70 i usage(void) Err bitreich.org 70 i { Err bitreich.org 70 i fprintf(stderr, "usage: %s maxval... (y) ? (x) : (y)) Err bitreich.org 70 i+#define LEN(x) (sizeof(x) / sizeof(*x)) Err bitreich.org 70 i+ Err bitreich.org 70 i /* util.c */ Err bitreich.org 70 i char *strsep (char **, const char *); Err bitreich.org 70 i void estriplf (char *); Err bitreich.org 70 .