Render gauges, honouring alpha channel
This commit is contained in:
parent
8a66a74b95
commit
29943037d3
7 changed files with 26 additions and 26 deletions
14
src/dial.c
14
src/dial.c
|
@ -74,7 +74,7 @@ static int main_draw_bg(hexagram_gauge *gauge, cairo_t *cr) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Gauge face */
|
/* Gauge face */
|
||||||
cairo_set_source_rgba(cr, 0, 0, 0, 1);
|
cairo_set_source_rgba(cr, 0, 0, 0, gauge->alpha);
|
||||||
cairo_arc(cr, arc[0], arc[1], arc[2], arc[3], arc[4]);
|
cairo_arc(cr, arc[0], arc[1], arc[2], arc[3], arc[4]);
|
||||||
cairo_fill(cr);
|
cairo_fill(cr);
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ static int main_draw_bg(hexagram_gauge *gauge, cairo_t *cr) {
|
||||||
cairo_stroke(cr);
|
cairo_stroke(cr);
|
||||||
|
|
||||||
/* Gauge centre bezel */
|
/* Gauge centre bezel */
|
||||||
cairo_set_source_rgb(cr, 1, 1, 1);
|
cairo_set_source_rgba(cr, 1, 1, 1, gauge->alpha);
|
||||||
cairo_set_line_width(cr, DIAL_MAIN_BEZEL_WIDTH / 3.0);
|
cairo_set_line_width(cr, DIAL_MAIN_BEZEL_WIDTH / 3.0);
|
||||||
cairo_arc(cr, dial->gauge.x, dial->gauge.y, dial->radius / 2, 0, 2.0 * M_PI);
|
cairo_arc(cr, dial->gauge.x, dial->gauge.y, dial->radius / 2, 0, 2.0 * M_PI);
|
||||||
cairo_stroke(cr);
|
cairo_stroke(cr);
|
||||||
|
@ -98,7 +98,7 @@ static int main_draw_fg(hexagram_gauge *gauge, cairo_t *cr) {
|
||||||
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);
|
||||||
cairo_set_source_rgba(cr, 1, 0.4, 1, 0.25);
|
cairo_set_source_rgba(cr, 1, 0.4, 1, 0.25 * gauge->alpha);
|
||||||
|
|
||||||
cairo_arc(cr,
|
cairo_arc(cr,
|
||||||
dial->gauge.x,
|
dial->gauge.x,
|
||||||
|
@ -118,7 +118,7 @@ static int bottom_draw_bg(hexagram_gauge *gauge, cairo_t *cr) {
|
||||||
hexagram_dial *dial = (hexagram_dial *)gauge;
|
hexagram_dial *dial = (hexagram_dial *)gauge;
|
||||||
|
|
||||||
cairo_set_line_width(cr, 24);
|
cairo_set_line_width(cr, 24);
|
||||||
cairo_set_source_rgb(cr, 0.2, 0.2, 0.2);
|
cairo_set_source_rgba(cr, 0.2, 0.2, 0.2, gauge->alpha);
|
||||||
|
|
||||||
cairo_arc(cr,
|
cairo_arc(cr,
|
||||||
dial->gauge.x,
|
dial->gauge.x,
|
||||||
|
@ -147,8 +147,8 @@ int hexagram_dial_init(hexagram_dial *dial,
|
||||||
double max_angle,
|
double max_angle,
|
||||||
double min_value,
|
double min_value,
|
||||||
double max_value) {
|
double max_value) {
|
||||||
dial->gauge.x = x;
|
hexagram_gauge_init(&dial->gauge, x, y, NULL, NULL);
|
||||||
dial->gauge.y = y;
|
|
||||||
dial->type = type;
|
dial->type = type;
|
||||||
dial->radius = radius;
|
dial->radius = radius;
|
||||||
dial->min_angle = min_angle;
|
dial->min_angle = min_angle;
|
||||||
|
@ -280,7 +280,7 @@ int hexagram_dial_draw_needle(hexagram_dial *dial, cairo_t *cr, double value) {
|
||||||
max_radius = DIAL_RADIUS_NEEDLE_BOTTOM_MAX;
|
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 * dial->gauge.alpha);
|
||||||
cairo_set_line_width(cr, 8);
|
cairo_set_line_width(cr, 8);
|
||||||
|
|
||||||
cairo_move_to(cr,
|
cairo_move_to(cr,
|
||||||
|
|
10
src/fuel.c
10
src/fuel.c
|
@ -30,10 +30,10 @@ static int draw_bg(hexagram_gauge *gauge, cairo_t *cr) {
|
||||||
|
|
||||||
cairo_set_font_size(cr, fuel->dial.radius * 0.1);
|
cairo_set_font_size(cr, fuel->dial.radius * 0.1);
|
||||||
|
|
||||||
cairo_set_source_rgb(cr, 1, 0, 0);
|
cairo_set_source_rgba(cr, 1, 0, 0, gauge->alpha);
|
||||||
hexagram_dial_draw_legend(&fuel->dial, cr, 0, "0");
|
hexagram_dial_draw_legend(&fuel->dial, cr, 0, "0");
|
||||||
|
|
||||||
cairo_set_source_rgb(cr, 1, 1, 1);
|
cairo_set_source_rgba(cr, 1, 1, 1, gauge->alpha);
|
||||||
hexagram_dial_draw_legend(&fuel->dial, cr, fuel->dial.max_value, "1");
|
hexagram_dial_draw_legend(&fuel->dial, cr, fuel->dial.max_value, "1");
|
||||||
|
|
||||||
cairo_set_line_width(cr, 6.0);
|
cairo_set_line_width(cr, 6.0);
|
||||||
|
@ -42,13 +42,13 @@ static int draw_bg(hexagram_gauge *gauge, cairo_t *cr) {
|
||||||
int large = 0;
|
int large = 0;
|
||||||
|
|
||||||
if (level < 2) {
|
if (level < 2) {
|
||||||
cairo_set_source_rgb(cr, 1, 0, 0);
|
cairo_set_source_rgba(cr, 1, 0, 0, gauge->alpha);
|
||||||
} else if (level < 4) {
|
} else if (level < 4) {
|
||||||
large = 1;
|
large = 1;
|
||||||
cairo_set_source_rgb(cr, 1, 0, 0);
|
cairo_set_source_rgba(cr, 1, 0, 0, gauge->alpha);
|
||||||
} else {
|
} else {
|
||||||
large = 1;
|
large = 1;
|
||||||
cairo_set_source_rgb(cr, 1, 1, 1);
|
cairo_set_source_rgba(cr, 1, 1, 1, gauge->alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
hexagram_dial_draw_mark(&fuel->dial, cr, level, large);
|
hexagram_dial_draw_mark(&fuel->dial, cr, level, large);
|
||||||
|
|
|
@ -25,7 +25,7 @@ static int draw_text(hexagram_speedo *speedo,
|
||||||
CAIRO_FONT_WEIGHT_BOLD);
|
CAIRO_FONT_WEIGHT_BOLD);
|
||||||
|
|
||||||
cairo_set_font_size(cr, speedo->dial.radius * size);
|
cairo_set_font_size(cr, speedo->dial.radius * size);
|
||||||
cairo_set_source_rgb(cr, 1, 0.4, 1);
|
cairo_set_source_rgba(cr, 1, 0.4, 1, speedo->dial.gauge.alpha);
|
||||||
|
|
||||||
cairo_text_extents(cr, text, &extents);
|
cairo_text_extents(cr, text, &extents);
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ static int draw_bg(hexagram_gauge *gauge, cairo_t *cr) {
|
||||||
CAIRO_FONT_WEIGHT_BOLD);
|
CAIRO_FONT_WEIGHT_BOLD);
|
||||||
|
|
||||||
cairo_set_font_size(cr, speedo->dial.radius * font_size);
|
cairo_set_font_size(cr, speedo->dial.radius * font_size);
|
||||||
cairo_set_source_rgb(cr, 1, 1, 1);
|
cairo_set_source_rgba(cr, 1, 1, 1, gauge->alpha);
|
||||||
|
|
||||||
for (speed=0; speed<=max; speed += 5) {
|
for (speed=0; speed<=max; speed += 5) {
|
||||||
int large = speed % 10 == 0? 1: 0;
|
int large = speed % 10 == 0? 1: 0;
|
||||||
|
|
12
src/tacho.c
12
src/tacho.c
|
@ -27,13 +27,13 @@ static int draw_bg(hexagram_gauge *gauge, cairo_t *cr) {
|
||||||
CAIRO_FONT_WEIGHT_BOLD);
|
CAIRO_FONT_WEIGHT_BOLD);
|
||||||
|
|
||||||
cairo_set_font_size(cr, tacho->dial.radius * 0.15);
|
cairo_set_font_size(cr, tacho->dial.radius * 0.15);
|
||||||
cairo_set_source_rgb(cr, 1, 1, 1);
|
cairo_set_source_rgba(cr, 1, 1, 1, gauge->alpha);
|
||||||
|
|
||||||
for (rpm=0; rpm<=(int)tacho->dial.max_value; rpm+=INTERVAL_MARK) {
|
for (rpm=0; rpm<=(int)tacho->dial.max_value; rpm+=INTERVAL_MARK) {
|
||||||
int large = (rpm % INTERVAL_LEGEND) == 0? 1: 0;
|
int large = (rpm % INTERVAL_LEGEND) == 0? 1: 0;
|
||||||
|
|
||||||
if (rpm >= tacho->redline) {
|
if (rpm >= tacho->redline) {
|
||||||
cairo_set_source_rgb(cr, 0.6, 0.1, 0.1);
|
cairo_set_source_rgba(cr, 0.6, 0.1, 0.1, gauge->alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
cairo_set_line_width(cr, large? 6.0: 2.0);
|
cairo_set_line_width(cr, large? 6.0: 2.0);
|
||||||
|
@ -41,13 +41,13 @@ static int draw_bg(hexagram_gauge *gauge, cairo_t *cr) {
|
||||||
hexagram_dial_draw_mark(&tacho->dial, cr, rpm, large);
|
hexagram_dial_draw_mark(&tacho->dial, cr, rpm, large);
|
||||||
}
|
}
|
||||||
|
|
||||||
cairo_set_source_rgb(cr, 1, 1, 1);
|
cairo_set_source_rgba(cr, 1, 1, 1, gauge->alpha);
|
||||||
|
|
||||||
for (rpm=0; rpm<=(int)tacho->dial.max_value; rpm+=INTERVAL_LEGEND) {
|
for (rpm=0; rpm<=(int)tacho->dial.max_value; rpm+=INTERVAL_LEGEND) {
|
||||||
char buf[8];
|
char buf[8];
|
||||||
|
|
||||||
if (rpm >= tacho->redline) {
|
if (rpm >= tacho->redline) {
|
||||||
cairo_set_source_rgb(cr, 1.0, 0.1, 0.1);
|
cairo_set_source_rgba(cr, 1.0, 0.1, 0.1, gauge->alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%d", (int)(rpm / INTERVAL_LEGEND));
|
snprintf(buf, sizeof(buf), "%d", (int)(rpm / INTERVAL_LEGEND));
|
||||||
|
@ -115,7 +115,7 @@ static int draw_fg(hexagram_gauge *gauge, cairo_t *cr) {
|
||||||
CAIRO_FONT_WEIGHT_NORMAL);
|
CAIRO_FONT_WEIGHT_NORMAL);
|
||||||
|
|
||||||
cairo_set_font_size(cr, tacho->dial.radius * 0.4);
|
cairo_set_font_size(cr, tacho->dial.radius * 0.4);
|
||||||
cairo_set_source_rgb(cr, 1, 0.4, 1);
|
cairo_set_source_rgba(cr, 1, 0.4, 1, gauge->alpha);
|
||||||
|
|
||||||
cairo_text_extents(cr, buf, &extents);
|
cairo_text_extents(cr, buf, &extents);
|
||||||
|
|
||||||
|
@ -209,7 +209,7 @@ static int shift_indicator_draw_level(hexagram_tacho_shift_indicator *shift,
|
||||||
b *= LIGHT_LOW;
|
b *= LIGHT_LOW;
|
||||||
}
|
}
|
||||||
|
|
||||||
cairo_set_source_rgb(cr, r, g, b);
|
cairo_set_source_rgba(cr, r, g, b, shift->gauge.alpha);
|
||||||
|
|
||||||
for (i=0; i<2; i++) {
|
for (i=0; i<2; i++) {
|
||||||
int l = light_levels[level][i];
|
int l = light_levels[level][i];
|
||||||
|
|
|
@ -65,7 +65,7 @@ static int draw_fg(hexagram_gauge *gauge, cairo_t *cr) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
cairo_set_source_rgb(cr, 1, 1, 1);
|
cairo_set_source_rgba(cr, 1, 1, 1, gauge->alpha);
|
||||||
cairo_move_to(cr, text_x_offset, gauge->y);
|
cairo_move_to(cr, text_x_offset, gauge->y);
|
||||||
cairo_show_text(cr, temp->text.buf);
|
cairo_show_text(cr, temp->text.buf);
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ static int draw_fg(hexagram_gauge *gauge, cairo_t *cr) {
|
||||||
hexagram_text *text = (hexagram_text *)gauge;
|
hexagram_text *text = (hexagram_text *)gauge;
|
||||||
cairo_text_extents_t extents;
|
cairo_text_extents_t extents;
|
||||||
|
|
||||||
cairo_set_source_rgb(cr, 1, 1, 1);
|
cairo_set_source_rgba(cr, 1, 1, 1, gauge->alpha);
|
||||||
|
|
||||||
cairo_select_font_face(cr,
|
cairo_select_font_face(cr,
|
||||||
FONT_FACE,
|
FONT_FACE,
|
||||||
|
|
|
@ -30,10 +30,10 @@ static int draw_bg(hexagram_gauge *gauge, cairo_t *cr) {
|
||||||
|
|
||||||
cairo_set_font_size(cr, thermo->dial.radius * 0.1);
|
cairo_set_font_size(cr, thermo->dial.radius * 0.1);
|
||||||
|
|
||||||
cairo_set_source_rgb(cr, 1, 1, 1);
|
cairo_set_source_rgba(cr, 1, 1, 1, gauge->alpha);
|
||||||
hexagram_dial_draw_legend(&thermo->dial, cr, thermo->dial.min_value, "C");
|
hexagram_dial_draw_legend(&thermo->dial, cr, thermo->dial.min_value, "C");
|
||||||
|
|
||||||
cairo_set_source_rgb(cr, 1, 0, 0);
|
cairo_set_source_rgba(cr, 1, 0, 0, gauge->alpha);
|
||||||
hexagram_dial_draw_legend(&thermo->dial, cr, thermo->dial.max_value, "H");
|
hexagram_dial_draw_legend(&thermo->dial, cr, thermo->dial.max_value, "H");
|
||||||
|
|
||||||
cairo_set_line_width(cr, 6.0);
|
cairo_set_line_width(cr, 6.0);
|
||||||
|
@ -44,9 +44,9 @@ static int draw_bg(hexagram_gauge *gauge, cairo_t *cr) {
|
||||||
double level = thermo->dial.min_value + i * incr;
|
double level = thermo->dial.min_value + i * incr;
|
||||||
|
|
||||||
if (level >= LEVEL_WARN) {
|
if (level >= LEVEL_WARN) {
|
||||||
cairo_set_source_rgb(cr, 0.8, 0, 0);
|
cairo_set_source_rgba(cr, 0.8, 0, 0, gauge->alpha);
|
||||||
} else {
|
} else {
|
||||||
cairo_set_source_rgb(cr, 1, 1, 1);
|
cairo_set_source_rgba(cr, 1, 1, 1, gauge->alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
hexagram_dial_draw_mark(&thermo->dial, cr, level, 1);
|
hexagram_dial_draw_mark(&thermo->dial, cr, level, 1);
|
||||||
|
|
Loading…
Add table
Reference in a new issue