#ifndef _HEXAGRAM_DIAL_H #define _HEXAGRAM_DIAL_H #include typedef enum { HEXAGRAM_DIAL_MAIN, HEXAGRAM_DIAL_BOTTOM } hexagram_dial_type; typedef struct _hexagram_dial { hexagram_gauge gauge; hexagram_dial_type type; double radius, min_angle, max_angle, min_value, max_value; double needle_min_radius, needle_max_radius; double mark_min_radius, mark_max_radius; double value; cairo_pattern_t *gradient; } hexagram_dial; int hexagram_dial_init(hexagram_dial *dial, hexagram_dial_type type, double x, double y, double radius, double min_angle, double max_angle, double min_value, double max_value); double hexagram_dial_angle(hexagram_dial *dial, double value); int hexagram_dial_draw_legend(hexagram_dial *dial, cairo_t *cr, double radius, double value, char *text); int hexagram_dial_draw_legend_offset(hexagram_dial *dial, cairo_t *cr, double radius, double value, char *text, double x_offset, double y_offset); int hexagram_dial_draw_mark(hexagram_dial *dial, cairo_t *cr, double min_radius, double max_radius, double value); int hexagram_dial_draw_needle(hexagram_dial *dial, cairo_t *cr, double min_radius, double max_radius, double value); int hexagram_dial_draw_bg(hexagram_dial *dial, cairo_t *cr); int hexagram_dial_draw_fg(hexagram_dial *dial, cairo_t *cr); #endif /* _HEXAGRAM_DIAL_H */