diff --git a/examples/cluster.c b/examples/cluster.c index 8f5ce46..0a90296 100644 --- a/examples/cluster.c +++ b/examples/cluster.c @@ -312,32 +312,50 @@ static void draw_thermometer_needle(cairo_t *cr, static void draw_fuel_gauge(cairo_t *cr, double x, double y, - double r) { + double r, + double redline) { + int i; + cairo_set_source_rgb(cr, 1, 1, 1); cairo_arc(cr, x, y, r, 0, 2*M_PI); cairo_stroke(cr); - draw_face_number(cr, x, y, - 0.75 * r, - 300 * (M_PI/180), - 420 * (M_PI/180), - 0.0, - "0"); + cairo_move_to(cr, x - 0.8 * r, y - 0.1 * r); + cairo_show_text(cr, "0"); - draw_face_number(cr, x, y, - 0.75 * r, - 300 * (M_PI/180), - 420 * (M_PI/180), - 0.5, - "1/2"); + cairo_move_to(cr, x - 0.15 * r, y - 0.5 * r); + cairo_show_text(cr, "1/2"); - draw_face_number(cr, x, y, - 0.75 * r, - 300 * (M_PI/180), - 420 * (M_PI/180), - 1.0, - "1"); + cairo_move_to(cr, x + 0.65 * r, y - 0.1 * r); + cairo_show_text(cr, "1"); + + /* + * Draw gauge graduations + */ + for (i=0; i<=16; i++) { + if (i <= (16.0 * redline)) { + cairo_set_source_rgb(cr, 1, 0, 0); + } else { + cairo_set_source_rgb(cr, 1, 1, 1); + } + + if (i % 4 == 0) { + draw_face_mark(cr, x, y, + 0.70 * r, + 0.90 * r, + 300 * (M_PI/180), + 420 * (M_PI/180), + (double)i / 16.0); + } else { + draw_face_mark(cr, x, y, + 0.80 * r, + 0.90 * r, + 300 * (M_PI/180), + 420 * (M_PI/180), + (double)i / 16.0); + } + } } static void draw_fuel_gauge_needle(cairo_t *cr, @@ -356,7 +374,7 @@ static void draw_fuel_gauge_needle(cairo_t *cr, cairo_arc(cr, x, y, 0.08 * r, 0, 2*M_PI); cairo_stroke(cr); - draw_needle(cr, x, y, 0.7 * r, + draw_needle(cr, x, y, 0.9 * r, 300 * (M_PI/180), 420 * (M_PI/180), level / 1.0); @@ -413,7 +431,8 @@ static void cluster_draw_bg(cairo_t *cr, draw_fuel_gauge(cr, width * 0.57, height * 0.76, - height * 0.13); + height * 0.13, + 0.125); draw_mfd(cr, width * 0.42,