ifix coordinames - 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 eb743275f407b73af41d4c5559f173e3e54d7cbd /scm/ploot/commit/eb743275f407b73af41d4c5559f173e3e54d7cbd.gph bitreich.org 70 1parent 543398796b10e8f93841918a617933c853efe0ff /scm/ploot/commit/543398796b10e8f93841918a617933c853efe0ff.gph bitreich.org 70 hAuthor: Josuah Demangeon URL:mailto:mail@josuah.net bitreich.org 70 iDate: Mon, 30 Apr 2018 20:39:04 +0200 Err bitreich.org 70 i Err bitreich.org 70 ifix coordinames Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M Makefile | 2 ++ Err bitreich.org 70 i M ffdraw.c | 25 ++++++++++++++----------- Err bitreich.org 70 i M ffdraw.h | 2 +- Err bitreich.org 70 i A ffplot.c | 0 Err bitreich.org 70 i M font_14x7.c | 2 +- Err bitreich.org 70 i M main.c | 108 ++++++++++++++++++++++++++++--- Err bitreich.org 70 i Err bitreich.org 70 i6 files changed, 117 insertions(+), 22 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/Makefile b/Makefile /scm/ploot/file/Makefile.gph bitreich.org 70 i@@ -17,3 +17,5 @@ clean:x Err bitreich.org 70 i rm -f *.o ploot Err bitreich.org 70 i Err bitreich.org 70 i x: Err bitreich.org 70 i+ Err bitreich.org 70 i+$(SRC): arg.h ffdraw.h font.h font_14x7.h Err bitreich.org 70 1diff --git a/ffdraw.c b/ffdraw.c /scm/ploot/file/ffdraw.c.gph bitreich.org 70 i@@ -11,20 +11,24 @@ Err bitreich.org 70 i #include Err bitreich.org 70 i Err bitreich.org 70 i #include "ffdraw.h" Err bitreich.org 70 i-#include "font_14x7.h" Err bitreich.org 70 i Err bitreich.org 70 i #define WIDTH 100 Err bitreich.org 70 i #define HEIGHT 100 Err bitreich.org 70 i Err bitreich.org 70 i Color buffer[WIDTH * HEIGHT]; Err bitreich.org 70 i Err bitreich.org 70 i+/* Err bitreich.org 70 i+ * Convert (x,y) coordinates to (row,col) for printing into the buffer. Err bitreich.org 70 i+ * The buffer only contain one number, so the coordinate is a single integer: Err bitreich.org 70 i+ * width * x + y. Err bitreich.org 70 i+ */ Err bitreich.org 70 i void Err bitreich.org 70 i ffdraw_pixel(Canvas *can, Color col, Err bitreich.org 70 i int x, int y) Err bitreich.org 70 i { Err bitreich.org 70 i- if (x >= can->w || y >= can->h) Err bitreich.org 70 i+ if (x >= can->h || y >= can->w) Err bitreich.org 70 i return; Err bitreich.org 70 i- memcpy(can->b + x + (can->h - 1 - y) * can->w, col, sizeof(*can->b)); Err bitreich.org 70 i+ memcpy(can->b + can->w * (can->h - 1 - x) + y, col, sizeof(*can->b)); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 i@@ -87,12 +91,12 @@ ffdraw_char(Canvas *can, Color col, char c, Font *f, Err bitreich.org 70 i Err bitreich.org 70 i if (c & 0x80) Err bitreich.org 70 i c = '\0'; Err bitreich.org 70 i- x -= f->w / 2; Err bitreich.org 70 i- y -= f->h / 2; Err bitreich.org 70 i+ x -= f->h / 2; Err bitreich.org 70 i+ y -= f->w / 2; Err bitreich.org 70 i Err bitreich.org 70 i- for (xf = 0; xf < f->w; xf++) Err bitreich.org 70 i- for (yf = 0; yf < f->h; yf++) Err bitreich.org 70 i- if (f->b[(int)c][(f->h - yf - 1) * f->w + xf] > 0) Err bitreich.org 70 i+ for (xf = 0; xf < f->h; xf++) Err bitreich.org 70 i+ for (yf = 0; yf < f->w; yf++) Err bitreich.org 70 i+ if (f->b[(int)c][f->w * (f->h - xf - 1) + yf] > 0) Err bitreich.org 70 i ffdraw_pixel(can, col, x + xf, y + yf); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -103,13 +107,12 @@ void Err bitreich.org 70 i ffdraw_str(Canvas *can, Color col, char *s, Font *f, Err bitreich.org 70 i int x, int y) Err bitreich.org 70 i { Err bitreich.org 70 i- for (; *s; x += f->w, s++) Err bitreich.org 70 i+ for (; *s != '\0'; y += f->w, s++) Err bitreich.org 70 i ffdraw_char(can, col, *s, f, x, y); Err bitreich.org 70 i- Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 i ffdraw_fill(Canvas *can, Color col) Err bitreich.org 70 i { Err bitreich.org 70 i- ffdraw_rectangle(can, col, 0, 0, can->w - 1, can->h - 1); Err bitreich.org 70 i+ ffdraw_rectangle(can, col, 0, 0, can->h - 1, can->w - 1); Err bitreich.org 70 i } Err bitreich.org 70 1diff --git a/ffdraw.h b/ffdraw.h /scm/ploot/file/ffdraw.h.gph bitreich.org 70 i@@ -12,7 +12,7 @@ typedef struct { Err bitreich.org 70 i typedef struct { Err bitreich.org 70 i int w; /* width */ Err bitreich.org 70 i int h; /* height */ Err bitreich.org 70 i- char *b[255]; /* buffer */ Err bitreich.org 70 i+ char *b[128]; /* buffer */ Err bitreich.org 70 i } Font; Err bitreich.org 70 i Err bitreich.org 70 i /* ffdraw.c */ Err bitreich.org 70 1diff --git a/ffplot.c b/ffplot.c /scm/ploot/file/ffplot.c.gph bitreich.org 70 1diff --git a/font_14x7.c b/font_14x7.c /scm/ploot/file/font_14x7.c.gph bitreich.org 70 i@@ -586,7 +586,7 @@ C(A) = { Err bitreich.org 70 i _,_,_,_,_,_,_, Err bitreich.org 70 i _,_,_,_,_,_,_, Err bitreich.org 70 i _,_,_,X,_,_,_, Err bitreich.org 70 i- _,_,X,_,X,_,_, Err bitreich.org 70 i+ _,_,_,X,_,_,_, Err bitreich.org 70 i _,_,X,_,X,_,_, Err bitreich.org 70 i _,_,X,_,X,_,_, Err bitreich.org 70 i _,X,_,_,_,X,_, Err bitreich.org 70 1diff --git a/main.c b/main.c /scm/ploot/file/main.c.gph bitreich.org 70 i@@ -2,14 +2,101 @@ Err bitreich.org 70 i Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i+#include Err bitreich.org 70 i Err bitreich.org 70 i #include "ffdraw.h" Err bitreich.org 70 i #include "font_14x7.h" Err bitreich.org 70 i Err bitreich.org 70 i-#define WIDTH 500 Err bitreich.org 70 i-#define HEIGHT 100 Err bitreich.org 70 i+/* as you see, no css skills needed */ Err bitreich.org 70 i Err bitreich.org 70 i-Color buffer[WIDTH * HEIGHT]; Err bitreich.org 70 i+#define MARGIN 5 Err bitreich.org 70 i+#define FONT_H 14 Err bitreich.org 70 i+#define FONT_W 7 Err bitreich.org 70 i+ Err bitreich.org 70 i+/* height */ Err bitreich.org 70 i+ Err bitreich.org 70 i+#define TITLE_H (MARGIN + FONT_H + MARGIN) Err bitreich.org 70 i+#define PLOT_H 100 Err bitreich.org 70 i+#define XLABEL_H (MARGIN + FONT_H + MARGIN) Err bitreich.org 70 i+ Err bitreich.org 70 i+#define IMAGE_H (TITLE_H + PLOT_H + XLABEL_H) Err bitreich.org 70 i+ Err bitreich.org 70 i+#define TITLE_B (0) Err bitreich.org 70 i+#define TITLE_E (TITLE_H) Err bitreich.org 70 i+#define PLOT_X_B (TITLE_H) Err bitreich.org 70 i+#define PLOT_X_E (IMAGE_H - XLABEL_H) Err bitreich.org 70 i+#define XLABEL_B (IMAGE_H - XLABEL_H) Err bitreich.org 70 i+#define XLABEL_E (IMAGE_H) Err bitreich.org 70 i+ Err bitreich.org 70 i+/* width */ Err bitreich.org 70 i+ Err bitreich.org 70 i+#define YLABEL_W (MARGIN + 50 + MARGIN) Err bitreich.org 70 i+#define PLOT_W 500 Err bitreich.org 70 i+#define LEGEND_W (MARGIN + 70 + MARGIN) Err bitreich.org 70 i+ Err bitreich.org 70 i+#define IMAGE_W (YLABEL_W + PLOT_W + LEGEND_W) Err bitreich.org 70 i+ Err bitreich.org 70 i+#define YLABEL_B (0) Err bitreich.org 70 i+#define YLABEL_E (YLABEL_W) Err bitreich.org 70 i+#define PLOT_Y_B (YLABEL_W) Err bitreich.org 70 i+#define PLOT_Y_E (IMAGE_W - LEGEND_W) Err bitreich.org 70 i+#define LEGEND_B (IMAGE_W - LEGEND_W) Err bitreich.org 70 i+#define LEGEND_E (IMAGE_W) Err bitreich.org 70 i+ Err bitreich.org 70 i+#define MID(x, y) ((x - y) / 2) Err bitreich.org 70 i+ Err bitreich.org 70 i+Color buffer[IMAGE_W * IMAGE_H]; Err bitreich.org 70 i+ Err bitreich.org 70 i+Color c_axis = { 0xffff, 0xffff, 0xffff, 0xfff }; Err bitreich.org 70 i+Font *font = &font_14x7; Err bitreich.org 70 i+ Err bitreich.org 70 i+void Err bitreich.org 70 i+ffplot_xaxis(Canvas *can, Color col, time_t tmax, time_t tstep) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ time_t t; Err bitreich.org 70 i+ int x, y, ystep, width; Err bitreich.org 70 i+ char str[sizeof("YYYY/MM/DD")], *fmt; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (tstep < 3600) { Err bitreich.org 70 i+ fmt = "%H:%M:%S"; Err bitreich.org 70 i+ width = sizeof("HH:MM:SS"); Err bitreich.org 70 i+ } else { Err bitreich.org 70 i+ fmt = "%Y/%m/%d"; Err bitreich.org 70 i+ width = sizeof("YYYY/MM/DD"); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ ystep = MARGIN + FONT_W * width + MARGIN; Err bitreich.org 70 i+ Err bitreich.org 70 i+ t = tmax % tstep; Err bitreich.org 70 i+ x = XLABEL_B + FONT_H / 2; Err bitreich.org 70 i+ y = PLOT_Y_B + PLOT_W % ystep - width / 2; Err bitreich.org 70 i+ Err bitreich.org 70 i+ while (y > PLOT_Y_B) { Err bitreich.org 70 i+ strftime(str, sizeof(str), fmt, localtime(&t)); Err bitreich.org 70 i+ ffdraw_str(can, col, str, font, x, y); Err bitreich.org 70 i+ Err bitreich.org 70 i+ y -= ystep; Err bitreich.org 70 i+ t -= tstep; Err bitreich.org 70 i+ } Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+void Err bitreich.org 70 i+ffplot_(Canvas *can) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ (void)can; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+void Err bitreich.org 70 i+ffplot_graph(Canvas *can) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ (void)can; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+void Err bitreich.org 70 i+ffplot_legend(Canvas *can) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ (void)can; Err bitreich.org 70 i+} Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i ffdraw(Canvas *can) Err bitreich.org 70 i@@ -18,8 +105,11 @@ ffdraw(Canvas *can) Err bitreich.org 70 i Color col2 = { 0x3333, 0xffff, 0x8888, 0xffff }; Err bitreich.org 70 i Err bitreich.org 70 i ffdraw_fill(can, col1); Err bitreich.org 70 i+ ffplot_xaxis(can, col2, 3600 * 24 * 30, 360); Err bitreich.org 70 i+/* Err bitreich.org 70 i ffdraw_line(can, col2, 49,1,9,79); Err bitreich.org 70 i- ffdraw_str(can, col2, "R\\S`T'UaVbWcYdZe\nfghb\tjoi\rklmnopqrstuvwxyz{|}", &font_14x7, 44, 50); Err bitreich.org 70 i+ ffdraw_str(can, col2, "R\\S`T'UaVbWcYdZe\nfghb\tjoi\rklmnopqrstuvwxyz{|}", font, 44, 10); Err bitreich.org 70 i+*/ Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i int Err bitreich.org 70 i@@ -29,14 +119,14 @@ main(void) Err bitreich.org 70 i Canvas can; Err bitreich.org 70 i Err bitreich.org 70 i can.b = buffer; Err bitreich.org 70 i- can.w = WIDTH; Err bitreich.org 70 i- can.h = HEIGHT; Err bitreich.org 70 i- w = htonl(WIDTH); Err bitreich.org 70 i- h = htonl(HEIGHT); Err bitreich.org 70 i+ can.w = IMAGE_W; Err bitreich.org 70 i+ can.h = IMAGE_H; Err bitreich.org 70 i+ w = htonl(IMAGE_W); Err bitreich.org 70 i+ h = htonl(IMAGE_H); Err bitreich.org 70 i fputs("farbfeld", stdout); Err bitreich.org 70 i fwrite(&w, sizeof(w), 1, stdout); Err bitreich.org 70 i fwrite(&h, sizeof(h), 1, stdout); Err bitreich.org 70 i ffdraw(&can); Err bitreich.org 70 i- fwrite(can.b, WIDTH * HEIGHT, sizeof(*can.b), stdout); Err bitreich.org 70 i+ fwrite(can.b, IMAGE_W * IMAGE_H, sizeof(*can.b), stdout); Err bitreich.org 70 i return 0; Err bitreich.org 70 i } Err bitreich.org 70 .