From 09d33177ce78494ef93d3f23cd789ea62c0db099 Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Fri, 7 Jun 2019 17:39:23 -0500 Subject: [PATCH] *Strong Bad and The Cheat sit at a cardboard box* --- examples/cluster.c | 65 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 63 insertions(+), 2 deletions(-) diff --git a/examples/cluster.c b/examples/cluster.c index 1721ef1..8af11ee 100644 --- a/examples/cluster.c +++ b/examples/cluster.c @@ -60,6 +60,27 @@ static void draw_face_number(cairo_t *cr, cairo_restore(cr); } +static void draw_face_mark(cairo_t *cr, + double x, + double y, + double min_r, + double max_r, + double min_angle, + double max_angle, + double value) { + double angle = min_angle + ((max_angle - min_angle) * value) - (M_PI/2); + + cairo_move_to(cr, + x + min_r * cos(angle), + y + min_r * sin(angle)); + + cairo_line_to(cr, + x + max_r * cos(angle), + y + max_r * sin(angle)); + + cairo_stroke(cr); +} + static void draw_tachometer_needle(cairo_t *cr, double x, double y, @@ -85,7 +106,8 @@ static void draw_tachometer_needle(cairo_t *cr, static void draw_tachometer(cairo_t *cr, double x, double y, - double r) { + double r, + double redline) { int i; cairo_select_font_face(cr, "Helvetica", @@ -112,6 +134,26 @@ static void draw_tachometer(cairo_t *cr, 488 * (M_PI/180), i / 80.0, text); + + draw_face_mark(cr, x, y, + 0.7 * r, + 0.8 * r, + 232 * (M_PI/180), + 488 * (M_PI/180), + i / 80.0); + } + + for (i=0; i<=80; i++) { + if (i * 100 >= redline) { + cairo_set_source_rgb(cr, 1, 0, 0); + } + + draw_face_mark(cr, x, y, + 0.75 * r, + 0.8 * r, + 232 * (M_PI/180), + 488 * (M_PI/180), + i / 80.0); } } @@ -146,6 +188,24 @@ static void draw_speedometer(cairo_t *cr, i / 180.0, text); } + + for (i=0; i<=180; i+=10) { + draw_face_mark(cr, x, y, + 0.7 * r, + 0.8 * r, + 232 * (M_PI/180), + 488 * (M_PI/180), + i / 180.0); + } + + for (i=0; i<=180; i+=2) { + draw_face_mark(cr, x, y, + 0.75 * r, + 0.8 * r, + 232 * (M_PI/180), + 488 * (M_PI/180), + i / 180.0); + } } static void draw_speedometer_needle(cairo_t *cr, @@ -310,7 +370,8 @@ static void cluster_draw_bg(cairo_t *cr, draw_tachometer(cr, width * 0.2, height * 0.5, - height * 0.4); + height * 0.4, + 6500); draw_speedometer(cr, width * 0.8,