Standardise dial needle radii

This commit is contained in:
XANTRONIX Development 2024-01-16 15:48:07 -05:00
parent 20efe78764
commit 6fe91aeccf
2 changed files with 25 additions and 21 deletions

View file

@ -51,11 +51,7 @@ int hexagram_dial_draw_mark(hexagram_dial *dial,
double max_radius, double max_radius,
double value); double value);
int hexagram_dial_draw_needle(hexagram_dial *dial, int hexagram_dial_draw_needle(hexagram_dial *dial, cairo_t *cr, double value);
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_bg(hexagram_dial *dial, cairo_t *cr);

View file

@ -8,8 +8,17 @@
#define DIAL_MAIN_BEZEL_WIDTH 16 #define DIAL_MAIN_BEZEL_WIDTH 16
#define DIAL_LEGEND_RADIUS_MAIN 0.675 #define DIAL_RADIUS_LEGEND_MAIN 0.675
#define DIAL_LEGEND_RADIUS_BOTTOM 0.725 #define DIAL_RADIUS_LEGEND_BOTTOM 0.725
#define DIAL_RADIUS_NEEDLE_MAIN_MIN 0.5
#define DIAL_RADIUS_NEEDLE_MAIN_MAX 0.89
#define DIAL_RADIUS_NEEDLE_MAIN_MIN 0.5
#define DIAL_RADIUS_NEEDLE_MAIN_MAX 0.89
#define DIAL_RADIUS_NEEDLE_BOTTOM_MIN 0.8
#define DIAL_RADIUS_NEEDLE_BOTTOM_MAX 0.9
static inline double _min(double a, double b) { static inline double _min(double a, double b) {
return a < b? return a < b?
@ -81,7 +90,6 @@ static int main_draw_bg(hexagram_gauge *gauge, cairo_t *cr) {
static int main_draw_fg(hexagram_gauge *gauge, cairo_t *cr) { static int main_draw_fg(hexagram_gauge *gauge, cairo_t *cr) {
hexagram_dial *dial = (hexagram_dial *)gauge; hexagram_dial *dial = (hexagram_dial *)gauge;
double angle = hexagram_dial_angle(dial, dial->value); double angle = hexagram_dial_angle(dial, dial->value);
cairo_set_line_width(cr, dial->radius * 0.375); cairo_set_line_width(cr, dial->radius * 0.375);
@ -96,7 +104,7 @@ static int main_draw_fg(hexagram_gauge *gauge, cairo_t *cr) {
cairo_stroke(cr); cairo_stroke(cr);
hexagram_dial_draw_needle(dial, cr, 0.5, 0.89, dial->value); hexagram_dial_draw_needle(dial, cr, dial->value);
return 0; return 0;
} }
@ -122,10 +130,7 @@ static int bottom_draw_bg(hexagram_gauge *gauge, cairo_t *cr) {
static int bottom_draw_fg(hexagram_gauge *gauge, cairo_t *cr) { static int bottom_draw_fg(hexagram_gauge *gauge, cairo_t *cr) {
hexagram_dial *dial = (hexagram_dial *)gauge; hexagram_dial *dial = (hexagram_dial *)gauge;
double min_radius = 0.8, return hexagram_dial_draw_needle(dial, cr, dial->value);
max_radius = 0.9;
return hexagram_dial_draw_needle(dial, cr, min_radius, max_radius, dial->value);
} }
int hexagram_dial_init(hexagram_dial *dial, int hexagram_dial_init(hexagram_dial *dial,
@ -206,8 +211,8 @@ int hexagram_dial_draw_legend(hexagram_dial *dial,
cairo_text_extents_t extents; cairo_text_extents_t extents;
double radius = dial->type == HEXAGRAM_DIAL_MAIN? double radius = dial->type == HEXAGRAM_DIAL_MAIN?
DIAL_LEGEND_RADIUS_MAIN: DIAL_RADIUS_LEGEND_MAIN:
DIAL_LEGEND_RADIUS_BOTTOM; DIAL_RADIUS_LEGEND_BOTTOM;
cairo_text_extents(cr, text, &extents); cairo_text_extents(cr, text, &extents);
@ -241,12 +246,15 @@ int hexagram_dial_draw_mark(hexagram_dial *dial,
return 0; return 0;
} }
int hexagram_dial_draw_needle(hexagram_dial *dial, int hexagram_dial_draw_needle(hexagram_dial *dial, cairo_t *cr, double value) {
cairo_t *cr, double angle = hexagram_dial_angle(dial, value),
double min_radius, min_radius = DIAL_RADIUS_NEEDLE_MAIN_MIN,
double max_radius, max_radius = DIAL_RADIUS_NEEDLE_MAIN_MAX;
double value) {
double angle = hexagram_dial_angle(dial, value); if (dial->type == HEXAGRAM_DIAL_BOTTOM) {
min_radius = DIAL_RADIUS_NEEDLE_BOTTOM_MIN;
max_radius = DIAL_RADIUS_NEEDLE_BOTTOM_MAX;
}
cairo_set_source_rgba(cr, 1, 0.4, 1, 0.75); cairo_set_source_rgba(cr, 1, 0.4, 1, 0.75);
cairo_set_line_width(cr, 8); cairo_set_line_width(cr, 8);