]> git.ipfire.org Git - collecty.git/commitdiff
graphs: Add macros to draw transparent areas easier
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 3 Oct 2025 15:03:44 +0000 (15:03 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 3 Oct 2025 15:03:44 +0000 (15:03 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/daemon/colors.h
src/daemon/graphs/conntrack.c
src/daemon/graphs/graph.h
src/daemon/graphs/loadavg.c

index 8994377e265379427a0eef5ef6715ea68f31a451..a6eda8a1b47d890d5d6b89a54d146132ec876684 100644 (file)
@@ -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 */
index 429fd02098849ad86c0b0e03ab29ef5a6c9f6548..d0ab001731a6cbd4b37daaa9ee2f9313679f4a29 100644 (file)
@@ -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");
index 38a918f47747e0fd6202be1c838e7fc3156a58d1..2dffddb90d51d031fb17b4761b14a81377c7e8ff 100644 (file)
 #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"
index 25080a31363722757e0cd4097c9016231720e65e..c2d51ab74ca37ef19e5c5abdf1e34aa1ec347e02 100644 (file)
@@ -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");