hexagram/src/thermo.c

74 lines
1.9 KiB
C
Raw Normal View History

#include <math.h>
#include <hexagram/gauge.h>
#include <hexagram/thermo.h>
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);
}