#include #include #include void hexagram_thermo_draw_face(cairo_t *cr, double x, double y, double r, double redline) { int i; cairo_select_font_face(cr, "Helvetica", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size(cr, r * 0.2); cairo_set_source_rgb(cr, 1, 1, 1); cairo_arc(cr, x, y, r, 0, 2*M_PI); cairo_stroke(cr); /* * Draw face numbers */ cairo_move_to(cr, x - 0.8 * r, y - 0.1 * r); cairo_show_text(cr, "120"); cairo_move_to(cr, x - 0.15 * r, y - 0.5 * r); cairo_show_text(cr, "190"); cairo_move_to(cr, x + 0.5 * r, y - 0.1 * r); cairo_show_text(cr, "260"); /* * Draw gauge graduations */ for (i=0; i<=140; i+=7) { if (i + 120 >= redline) { cairo_set_source_rgb(cr, 1, 0, 0); } hexagram_gauge_draw_mark(cr, x, y, ((i % 35)? 0.8: 0.7) * r, 0.90 * r, 300 * (M_PI/180), 420 * (M_PI/180), i / 140.0); } } void hexagram_thermo_draw_needle(cairo_t *cr, double x, double y, double r, double temp) { if (temp > 260) { temp = 260; } /* * Draw a tiny boi circle */ cairo_set_source_rgb(cr, 1, 1, 1); cairo_arc(cr, x, y, 0.08 * r, 0, 2*M_PI); cairo_stroke(cr); hexagram_gauge_draw_needle(cr, x, y, 0.9 * r, 300 * (M_PI/180), 420 * (M_PI/180), temp / 260); }