widget_props_t default_widget_prop_table[NUM_ACTIVE_BUTTONS] = {
// label, x, y, font_size, off_colour, on_colour
- [SCR_VFO_A] = { "", 285, 95, 70, white, green },
- [SCR_VFO_B] = { "", 285, 18, 18, grey, cyan },
- [SCR_ACTIVE_VFO] = { "", 400, 20, 18, yellow, yellow },
- [SCR_MODE] = { "MODE", 70, 80, 30, yellow, yellow },
- [SCR_PS] = { "PS", 120, 50, 12, yellow, grey },
- [SCR_RIT] = { "RIT", 220, 40, 16, red, grey },
- [SCR_XIT] = { "XIT", 220, 20, 16, red, grey },
- [SCR_NB] = { "NB", 115, 40, 16, yellow, grey },
- [SCR_NR] = { "NR", 70, 40, 16, yellow, grey },
- [SCR_ANF] = { "ANF", 70, 20, 16, yellow, grey },
- [SCR_SNB] = { "SNB", 115, 20, 16, yellow, grey },
- [SCR_MIDI] = { "MIDI", 480, 20, 16, yellow, grey },
- [SCR_AGC] = { "AGC", 160, 20, 16, yellow, grey },
- [SCR_VOX] = { "VOX", 160, 40, 16, red, grey },
- [SCR_LOCK] = { "LOCK", 5, 80, 16, red, grey },
- [SCR_CTUN] = { "CTUN", 5, 40, 16, yellow, grey },
- [SCR_SPLIT] = { "SPLIT", 5, 20, 16, red, grey, },
- [SCR_DUP] = {"DUP", 5, 60, 16, red, grey },
+ [SCR_VFO_A] = { 285, 95, 70, { green, white }, { "", "" } },
+ [SCR_VFO_B] = { 285, 18, 18, { cyan, grey}, { "", "" } },
+ [SCR_ACTIVE_VFO] = { 400, 20, 18, { yellow, yellow }, { "", "" } },
+ [SCR_MODE] = { 70, 80, 30, { yellow, yellow }, { "MODE", "MODE" } },
+ [SCR_PS] = { 120, 50, 12, { grey, yellow }, { "PS", "PS" } },
+ [SCR_RIT] = { 220, 40, 16, { grey, red }, { "RIT", "RIT" } },
+ [SCR_XIT] = { 220, 20, 16, { grey, red }, { "XIT", "XIT" } },
+ [SCR_NB] = { 115, 40, 16, { grey, yellow }, { "NB", "NB", "NB2" } },
+ [SCR_NR] = { 70, 40, 16, { grey, yellow, yellow, yellow, yellow }, { "NR", "NR", "NR2", "NR3", "NR4" } },
+ [SCR_ANF] = { 70, 20, 16, { grey, yellow }, { "ANF", "ANF" } },
+ [SCR_SNB] = { 115, 20, 16, { grey, yellow }, { "SNB", "SNB" } },
+ [SCR_MIDI] = { 480, 20, 16, { grey, yellow }, { "MIDI", "MIDI" } },
+ [SCR_AGC] = { 160, 20, 16, { grey, yellow, yellow, yellow, yellow }, { "AGC", "AGC L", "AGC S", "AGC M", "AGC F" } },
+ [SCR_VOX] = { 160, 40, 16, { grey, red }, { "VOX", "VOX" } },
+ [SCR_LOCK] = { 5, 80, 16, { grey, red }, { "LOCK", "LOCK" } },
+ [SCR_CTUN] = { 5, 40, 16, { grey, yellow }, { "CTUN", "CTUN" } },
+ [SCR_SPLIT] = { 5, 20, 16, { grey, red }, { "SPLIT", "SPLIT" } },
+ [SCR_DUP] = { 5, 60, 16, { grey, red }, { "DUP", "DUP" } },
};
// depending on the status, draw an item on the screen.
// The font size, coordinates, colours etc are picked up
// from a table and drawn
-void draw_item(cairo_t *cr, size_t item, bool status) {
- char temp_text[32];
-
+void draw_item(cairo_t *cr, size_t item, uint status) {
widget_props_t *entry = &default_widget_prop_table[item];
cairo_move_to(cr, entry->x, entry->y);
- if (status) {
- cairo_set_source_rgb(cr, entry->on.r, entry->on.g, entry->on.b);
- } else {
- cairo_set_source_rgb(cr, entry->off.r, entry->off.g, entry->off.b);
- }
+ cairo_set_source_rgb(cr, entry->colours[status].r, entry->colours[status].g, entry->colours[status].b);
- sprintf(temp_text, entry->label);
cairo_set_font_size(cr, entry->font_size);
- cairo_show_text(cr, temp_text);
+ cairo_show_text(cr, entry->label[status]);
}
void vfo_update(void) {
}
widget_props_t *entry;
+
// draw mode
entry = &default_widget_prop_table[SCR_MODE];
cairo_set_font_size(cr, entry->font_size);
- cairo_set_source_rgb(cr, entry->on.r, entry->on.g, entry->on.b);
+ cairo_set_source_rgb(cr, entry->colours[0].r, entry->colours[0].g, entry->colours[0].b);
cairo_move_to(cr, entry->x, entry->y);
cairo_show_text(cr, temp_text);
sprintf(temp_text, "%c", active_receiver->active_vfo == 0 ? 'A' : 'B');
entry = &default_widget_prop_table[SCR_ACTIVE_VFO];
cairo_move_to(cr, entry->x, entry->y);
- cairo_set_source_rgb(cr, entry->on.r, entry->on.g, entry->on.b);
+ cairo_set_source_rgb(cr, entry->colours[1].r, entry->colours[1].g, entry->colours[1].b);
cairo_set_font_size(cr, entry->font_size);
cairo_show_text(cr, temp_text);
// RIT
entry = &default_widget_prop_table[SCR_RIT];
cairo_move_to(cr, entry->x, entry->y);
- if (vfo[id].rit_enabled == 0) {
- cairo_set_source_rgb(cr, entry->off.r, entry->off.g, entry->off.b);
- } else {
- cairo_set_source_rgb(cr, entry->on.r, entry->on.g, entry->on.b);
- }
+ cairo_set_source_rgb(cr, entry->colours[vfo[id].rit_enabled].r, entry->colours[vfo[id].rit_enabled].g, entry->colours[vfo[id].rit_enabled].b);
sprintf(temp_text, "RIT: %lld", vfo[id].rit);
cairo_set_font_size(cr, entry->font_size);
cairo_show_text(cr, temp_text);
if (can_transmit) {
entry = &default_widget_prop_table[SCR_XIT];
cairo_move_to(cr, entry->x, entry->y);
- if (transmitter->xit_enabled == 0) {
- cairo_set_source_rgb(cr, entry->off.r, entry->off.g, entry->off.b);
- } else {
- cairo_set_source_rgb(cr, entry->on.r, entry->on.g, entry->on.b);
- }
+ cairo_set_source_rgb(cr,
+ entry->colours[transmitter->xit_enabled].r,
+ entry->colours[transmitter->xit_enabled].g,
+ entry->colours[transmitter->xit_enabled].b);
sprintf(temp_text, "XIT: %lld", transmitter->xit);
cairo_set_font_size(cr, entry->font_size);
// NB and NB2 are mutually exclusive, therefore
// they are put to the same place in order to save
// some space
- entry = &default_widget_prop_table[SCR_NB];
- cairo_move_to(cr, entry->x, entry->y);
- cairo_set_font_size(cr, entry->font_size);
- if (active_receiver->nb) {
- cairo_set_source_rgb(cr, entry->on.r, entry->on.g, entry->on.b);
- cairo_show_text(cr, "NB");
- } else if (active_receiver->nb2) {
- cairo_set_source_rgb(cr, entry->on.r, entry->on.g, entry->on.b);
- cairo_show_text(cr, "NB2");
- } else {
- cairo_set_source_rgb(cr, entry->off.r, entry->off.g, entry->off.b);
- cairo_show_text(cr, "NB");
- }
+ draw_item(cr, SCR_NB, active_receiver->nb);
// NR
// NR, NR2, NR3 and NR4 are mutually exclusive
- entry = &default_widget_prop_table[SCR_NR];
- cairo_move_to(cr, entry->x, entry->y);
- if (active_receiver->nr) {
- cairo_set_source_rgb(cr, entry->on.r, entry->on.g, entry->on.b);
- cairo_show_text(cr, "NR");
- } else if (active_receiver->nr2) {
- cairo_set_source_rgb(cr, entry->on.r, entry->on.g, entry->on.b);
- cairo_show_text(cr, "NR2");
- } else if (active_receiver->nr3) {
- cairo_set_source_rgb(cr, entry->on.r, entry->on.g, entry->on.b);
- cairo_show_text(cr, "NR3");
- } else if (active_receiver->nr4) {
- cairo_set_source_rgb(cr, entry->on.r, entry->on.g, entry->on.b);
- cairo_show_text(cr, "NR4");
- } else {
- cairo_set_source_rgb(cr, entry->off.r, entry->off.g, entry->off.b);
- cairo_show_text(cr, "NR");
- }
+ draw_item(cr, SCR_NR, active_receiver->nr);
// anf
draw_item(cr, SCR_ANF, active_receiver->anf);
draw_item(cr, SCR_SNB, active_receiver->snb);
// agc
- entry = &default_widget_prop_table[SCR_AGC];
- cairo_move_to(cr, entry->x, entry->y);
- switch (active_receiver->agc) {
- case AGC_OFF:
- cairo_set_source_rgb(cr, entry->off.r, entry->off.g, entry->off.b);
- cairo_show_text(cr, "AGC");
- break;
- case AGC_LONG:
- cairo_set_source_rgb(cr, entry->on.r, entry->on.g, entry->on.b);
- cairo_show_text(cr, "AGC L");
- break;
- case AGC_SLOW:
- cairo_set_source_rgb(cr, entry->on.r, entry->on.g, entry->on.b);
- cairo_show_text(cr, "AGC S");
- break;
- case AGC_MEDIUM:
- cairo_set_source_rgb(cr, entry->on.r, entry->on.g, entry->on.b);
- cairo_show_text(cr, "AGC M");
- break;
- case AGC_FAST:
- cairo_set_source_rgb(cr, entry->on.r, entry->on.g, entry->on.b);
- cairo_show_text(cr, "AGC F");
- break;
- }
+ draw_item(cr, SCR_AGC, active_receiver->agc);
#ifdef MIDI
draw_item(cr, SCR_MIDI, midi_enabled);