From: Michael Tremer Date: Fri, 3 Oct 2025 15:03:44 +0000 (+0000) Subject: graphs: Add macros to draw transparent areas easier X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3c585e07e5ccaefcbf157a824df6c39eebc3a5c7;p=collecty.git graphs: Add macros to draw transparent areas easier Signed-off-by: Michael Tremer --- diff --git a/src/daemon/colors.h b/src/daemon/colors.h index 8994377..a6eda8a 100644 --- a/src/daemon/colors.h +++ b/src/daemon/colors.h @@ -49,4 +49,7 @@ #define OPACITY_25P "40" #define OPACITY_0P "00" +// Fill areas very lightly +#define OPACITY_AREA OPACITY_25P + #endif /* COLLECTY_COLORS_H */ diff --git a/src/daemon/graphs/conntrack.c b/src/daemon/graphs/conntrack.c index 429fd02..d0ab001 100644 --- a/src/daemon/graphs/conntrack.c +++ b/src/daemon/graphs/conntrack.c @@ -48,14 +48,14 @@ static int conntrack_render(collecty_ctx* ctx, return r; // Limit - DRAW_WITH_LABEL(args, "LINE1", "max", LIMIT, _("Limit"), DASHES SKIPSCALE); + DRAW_LINE1_WITH_LABEL(args, "max", LIMIT, _("Limit"), DASHES SKIPSCALE); PRINT_LARGE_INTEGER(args, "max_cur"); PRINT_NOTHING(args); PRINT_NOTHING(args); PRINT_NOTHING(args, EOL); // Entries - DRAW_WITH_LABEL(args, "AREA", "count", GREEN, _("Entries")); + DRAW_AREA_WITH_LABEL(args, "count", GREEN, _("Entries")); PRINT_LARGE_INTEGER(args, "count_cur"); PRINT_LARGE_INTEGER(args, "count_avg"); PRINT_LARGE_INTEGER(args, "count_min"); diff --git a/src/daemon/graphs/graph.h b/src/daemon/graphs/graph.h index 38a918f..2dffddb 100644 --- a/src/daemon/graphs/graph.h +++ b/src/daemon/graphs/graph.h @@ -64,6 +64,21 @@ #define DRAW_WITH_LABEL(args, what, field, color, label, ...) \ SCRIPT(args, what ":" field color ":" LABEL __VA_ARGS__, label) +// Draw lines +#define DRAW_LINE1(args, field, color, ...) DRAW(args, "LINE1", field, color, __VA_ARGS__) +#define DRAW_LINE1_WITH_LABEL(args, field, color, label, ...) DRAW_WITH_LABEL(args, "LINE1", field, color, label, __VA_ARGS__) +#define DRAW_LINE2(args, field, color, ...) DRAW(args, "LINE2", field, color, __VA_ARGS__) +#define DRAW_LINE2_WITH_LABEL(args, field, color, label, ...) DRAW_WITH_LABEL(args, "LINE2", field, color, label, __VA_ARGS__) +#define DRAW_LINE3(args, field, color, ...) DRAW(args, "LINE3", field, color, __VA_ARGS__) +#define DRAW_LINE3_WITH_LABEL(args, field, color, label, ...) DRAW_WITH_LABEL(args, "LINE3", field, color, label, __VA_ARGS__) + +// Areas are being drawn with an outline +#define DRAW_AREA_WITH_LABEL(args, field, color, label, ...) \ + do { \ + DRAW(args, "AREA", field, COLOR_WITH_ALPHA(color, OPACITY_AREA)); \ + DRAW_LINE1_WITH_LABEL(args, field, color, label, __VA_ARGS__); \ + } while(0) + // Modifiers for lines #define DASHES ":dashes" #define SKIPSCALE ":skipscale" diff --git a/src/daemon/graphs/loadavg.c b/src/daemon/graphs/loadavg.c index 25080a3..c2d51ab 100644 --- a/src/daemon/graphs/loadavg.c +++ b/src/daemon/graphs/loadavg.c @@ -43,24 +43,21 @@ static int loadavg_render(collecty_ctx* ctx, return r; // Add 15-minute load average - DRAW(args, "AREA", "load15", COLOR_WITH_ALPHA(COLOR_LOAD15, OPACITY_25P)); - DRAW_WITH_LABEL(args, "LINE1", "load15", COLOR_LOAD15, _("15 Minutes")); + DRAW_AREA_WITH_LABEL(args, "load15", COLOR_LOAD15, _("15 Minutes")); PRINT_FLOAT(args, "load15_cur"); PRINT_FLOAT(args, "load15_avg"); PRINT_FLOAT(args, "load15_min"); PRINT_FLOAT(args, "load15_max", EOL); // Add 5-minute load average - DRAW(args, "AREA", "load15", COLOR_WITH_ALPHA(COLOR_LOAD5, OPACITY_25P)); - DRAW_WITH_LABEL(args, "LINE1", "load5", COLOR_LOAD5, _("5 Minutes")); + DRAW_AREA_WITH_LABEL(args, "load5", COLOR_LOAD5, _("5 Minutes")); PRINT_FLOAT(args, "load5_cur"); PRINT_FLOAT(args, "load5_avg"); PRINT_FLOAT(args, "load5_min"); PRINT_FLOAT(args, "load5_max", EOL); // Add 1-minute load average - DRAW(args, "AREA", "load1", COLOR_WITH_ALPHA(COLOR_LOAD1, OPACITY_25P)); - DRAW_WITH_LABEL(args, "LINE1", "load1", COLOR_LOAD1, _("1 Minute")); + DRAW_AREA_WITH_LABEL(args, "load1", COLOR_LOAD1, _("1 Minute")); PRINT_FLOAT(args, "load1_cur"); PRINT_FLOAT(args, "load1_avg"); PRINT_FLOAT(args, "load1_min");