74 lines
1.9 KiB
C
74 lines
1.9 KiB
C
|
#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);
|
||
|
}
|
||
|
|