ploot

plot images or real-time plain text from a .csv file
Log | Files | Refs | README

commit 980b7ae7316438998c953a8e098d894aec001c57
parent eb743275f407b73af41d4c5559f173e3e54d7cbd
Author: Josuah Demangeon <mail@josuah.net>
Date:   Mon, 30 Apr 2018 21:05:38 +0200

setup the horizontal axis

Diffstat:
Mmain.c | 64+++++++++++++++++++++++++++++++++-------------------------------
1 file changed, 33 insertions(+), 31 deletions(-)

diff --git a/main.c b/main.c @@ -7,12 +7,13 @@ #include "ffdraw.h" #include "font_14x7.h" -/* as you see, no css skills needed */ - -#define MARGIN 5 #define FONT_H 14 #define FONT_W 7 +/* as you see, no css skills needed */ + +#define MARGIN 2 + /* height */ #define TITLE_H (MARGIN + FONT_H + MARGIN) @@ -21,27 +22,27 @@ #define IMAGE_H (TITLE_H + PLOT_H + XLABEL_H) -#define TITLE_B (0) -#define TITLE_E (TITLE_H) -#define PLOT_X_B (TITLE_H) -#define PLOT_X_E (IMAGE_H - XLABEL_H) -#define XLABEL_B (IMAGE_H - XLABEL_H) -#define XLABEL_E (IMAGE_H) +#define TITLE_MAX (IMAGE_H) +#define TITLE_MIN (IMAGE_H - TITLE_H) +#define PLOT_X_MAX (IMAGE_H - TITLE_H) +#define PLOT_X_MIN (XLABEL_H) +#define XLABEL_MAX (XLABEL_H) +#define XLABEL_MIN (0) /* width */ -#define YLABEL_W (MARGIN + 50 + MARGIN) +#define YLABEL_W (MARGIN + 20 + MARGIN) #define PLOT_W 500 #define LEGEND_W (MARGIN + 70 + MARGIN) #define IMAGE_W (YLABEL_W + PLOT_W + LEGEND_W) -#define YLABEL_B (0) -#define YLABEL_E (YLABEL_W) -#define PLOT_Y_B (YLABEL_W) -#define PLOT_Y_E (IMAGE_W - LEGEND_W) -#define LEGEND_B (IMAGE_W - LEGEND_W) -#define LEGEND_E (IMAGE_W) +#define LEGEND_MAX (IMAGE_W) +#define LEGEND_MIN (IMAGE_W - LEGEND_W) +#define PLOT_Y_MAX (IMAGE_W - LEGEND_W) +#define PLOT_Y_MIN (YLABEL_W) +#define YLABEL_MAX (YLABEL_W) +#define YLABEL_MIN (0) #define MID(x, y) ((x - y) / 2) @@ -51,30 +52,30 @@ Color c_axis = { 0xffff, 0xffff, 0xffff, 0xfff }; Font *font = &font_14x7; void -ffplot_xaxis(Canvas *can, Color col, time_t tmax, time_t tstep) +ffplot_xaxis(Canvas *can, Color label, Color grid, time_t tmax, time_t tstep) { time_t t; - int x, y, ystep, width; + int y, ystep; char str[sizeof("YYYY/MM/DD")], *fmt; if (tstep < 3600) { - fmt = "%H:%M:%S"; - width = sizeof("HH:MM:SS"); + fmt = " %H:%M:%S "; + ystep = sizeof(" HH:MM:SS ") * FONT_W; } else { - fmt = "%Y/%m/%d"; - width = sizeof("YYYY/MM/DD"); + fmt = " %Y/%m/%d "; + ystep = sizeof(" YYYY/MM/DD ") * FONT_W; } - ystep = MARGIN + FONT_W * width + MARGIN; - t = tmax % tstep; - x = XLABEL_B + FONT_H / 2; - y = PLOT_Y_B + PLOT_W % ystep - width / 2; + y = PLOT_Y_MAX + PLOT_W % ystep - ystep; - while (y > PLOT_Y_B) { + while (y > PLOT_Y_MIN) { strftime(str, sizeof(str), fmt, localtime(&t)); - ffdraw_str(can, col, str, font, x, y); - + ffdraw_str(can, label, str, font, + XLABEL_MIN + XLABEL_H / 2, y - ystep / 2 + FONT_W); + ffdraw_line(can, grid, + PLOT_X_MIN, y, + PLOT_X_MAX, y); y -= ystep; t -= tstep; } @@ -102,10 +103,11 @@ static void ffdraw(Canvas *can) { Color col1 = { 0x2222, 0x2222, 0x2222, 0xffff }; - Color col2 = { 0x3333, 0xffff, 0x8888, 0xffff }; + Color label = { 0x3333, 0xffff, 0x8888, 0xffff }; + Color grid = { 0x4444, 0x4444, 0x4444, 0xffff }; ffdraw_fill(can, col1); - ffplot_xaxis(can, col2, 3600 * 24 * 30, 360); + ffplot_xaxis(can, label, grid, 3600 * 24 * 30, 360); /* ffdraw_line(can, col2, 49,1,9,79); ffdraw_str(can, col2, "R\\S`T'UaVbWcYdZe\nfghb\tjoi\rklmnopqrstuvwxyz{|}", font, 44, 10);