diff --git a/radio/sdcard/horus/THEMES/Darkblue/mask_textline_curve.png b/radio/sdcard/horus/THEMES/Darkblue/mask_textline_curve.png new file mode 100644 index 000000000..050229393 Binary files /dev/null and b/radio/sdcard/horus/THEMES/Darkblue/mask_textline_curve.png differ diff --git a/radio/sdcard/horus/THEMES/Darkblue/mask_textline_delay.png b/radio/sdcard/horus/THEMES/Darkblue/mask_textline_delay.png new file mode 100644 index 000000000..9b771a94a Binary files /dev/null and b/radio/sdcard/horus/THEMES/Darkblue/mask_textline_delay.png differ diff --git a/radio/sdcard/horus/THEMES/Darkblue/mask_textline_delayslow.png b/radio/sdcard/horus/THEMES/Darkblue/mask_textline_delayslow.png new file mode 100644 index 000000000..de2f7d1f7 Binary files /dev/null and b/radio/sdcard/horus/THEMES/Darkblue/mask_textline_delayslow.png differ diff --git a/radio/sdcard/horus/THEMES/Darkblue/mask_textline_fm.png b/radio/sdcard/horus/THEMES/Darkblue/mask_textline_fm.png new file mode 100644 index 000000000..b9a2c4a32 Binary files /dev/null and b/radio/sdcard/horus/THEMES/Darkblue/mask_textline_fm.png differ diff --git a/radio/sdcard/horus/THEMES/Darkblue/mask_textline_label.png b/radio/sdcard/horus/THEMES/Darkblue/mask_textline_label.png new file mode 100644 index 000000000..8be12e39b Binary files /dev/null and b/radio/sdcard/horus/THEMES/Darkblue/mask_textline_label.png differ diff --git a/radio/sdcard/horus/THEMES/Darkblue/mask_textline_slow.png b/radio/sdcard/horus/THEMES/Darkblue/mask_textline_slow.png new file mode 100644 index 000000000..1afbea37d Binary files /dev/null and b/radio/sdcard/horus/THEMES/Darkblue/mask_textline_slow.png differ diff --git a/radio/sdcard/horus/THEMES/Darkblue/mask_textline_switch.png b/radio/sdcard/horus/THEMES/Darkblue/mask_textline_switch.png new file mode 100644 index 000000000..7c7d646e4 Binary files /dev/null and b/radio/sdcard/horus/THEMES/Darkblue/mask_textline_switch.png differ diff --git a/radio/sdcard/horus/THEMES/Default/mask_textline_curve.png b/radio/sdcard/horus/THEMES/Default/mask_textline_curve.png new file mode 100644 index 000000000..050229393 Binary files /dev/null and b/radio/sdcard/horus/THEMES/Default/mask_textline_curve.png differ diff --git a/radio/sdcard/horus/THEMES/Default/mask_textline_delay.png b/radio/sdcard/horus/THEMES/Default/mask_textline_delay.png new file mode 100644 index 000000000..9b771a94a Binary files /dev/null and b/radio/sdcard/horus/THEMES/Default/mask_textline_delay.png differ diff --git a/radio/sdcard/horus/THEMES/Default/mask_textline_delayslow.png b/radio/sdcard/horus/THEMES/Default/mask_textline_delayslow.png new file mode 100644 index 000000000..de2f7d1f7 Binary files /dev/null and b/radio/sdcard/horus/THEMES/Default/mask_textline_delayslow.png differ diff --git a/radio/sdcard/horus/THEMES/Default/mask_textline_fm.png b/radio/sdcard/horus/THEMES/Default/mask_textline_fm.png new file mode 100644 index 000000000..b9a2c4a32 Binary files /dev/null and b/radio/sdcard/horus/THEMES/Default/mask_textline_fm.png differ diff --git a/radio/sdcard/horus/THEMES/Default/mask_textline_label.png b/radio/sdcard/horus/THEMES/Default/mask_textline_label.png new file mode 100644 index 000000000..8be12e39b Binary files /dev/null and b/radio/sdcard/horus/THEMES/Default/mask_textline_label.png differ diff --git a/radio/sdcard/horus/THEMES/Default/mask_textline_slow.png b/radio/sdcard/horus/THEMES/Default/mask_textline_slow.png new file mode 100644 index 000000000..1afbea37d Binary files /dev/null and b/radio/sdcard/horus/THEMES/Default/mask_textline_slow.png differ diff --git a/radio/sdcard/horus/THEMES/Default/mask_textline_switch.png b/radio/sdcard/horus/THEMES/Default/mask_textline_switch.png new file mode 100644 index 000000000..7c7d646e4 Binary files /dev/null and b/radio/sdcard/horus/THEMES/Default/mask_textline_switch.png differ diff --git a/radio/src/gui/horus/bitmaps.cpp b/radio/src/gui/horus/bitmaps.cpp index ef14a758c..2e9996ae4 100644 --- a/radio/src/gui/horus/bitmaps.cpp +++ b/radio/src/gui/horus/bitmaps.cpp @@ -193,3 +193,11 @@ BitmapBuffer * mixerSetupOutputBitmap = NULL; BitmapBuffer * mixerSetupAddBitmap = NULL; BitmapBuffer * mixerSetupMultiBitmap = NULL; BitmapBuffer * mixerSetupReplaceBitmap = NULL; +BitmapBuffer * mixerSetupLabelBitmap = NULL; +BitmapBuffer * mixerSetupCurveBitmap = NULL; +BitmapBuffer * mixerSetupSwitchBitmap = NULL; +BitmapBuffer * mixerSetupDelayBitmap = NULL; +BitmapBuffer * mixerSetupSlowBitmap = NULL; +BitmapBuffer * mixerSetupDelaySlowBitmap = NULL; +BitmapBuffer * mixerSetupFlightmodeBitmap = NULL; + diff --git a/radio/src/gui/horus/bitmaps.h b/radio/src/gui/horus/bitmaps.h index 9d4361f76..6bea462f7 100644 --- a/radio/src/gui/horus/bitmaps.h +++ b/radio/src/gui/horus/bitmaps.h @@ -88,5 +88,12 @@ extern BitmapBuffer * mixerSetupOutputBitmap; extern BitmapBuffer * mixerSetupAddBitmap; extern BitmapBuffer * mixerSetupMultiBitmap; extern BitmapBuffer * mixerSetupReplaceBitmap; +extern BitmapBuffer * mixerSetupLabelBitmap; +extern BitmapBuffer * mixerSetupFlightmodeBitmap; +extern BitmapBuffer * mixerSetupCurveBitmap; +extern BitmapBuffer * mixerSetupSwitchBitmap; +extern BitmapBuffer * mixerSetupDelayBitmap; +extern BitmapBuffer * mixerSetupSlowBitmap; +extern BitmapBuffer * mixerSetupDelaySlowBitmap; #endif // _BITMAPS_H_ diff --git a/radio/src/gui/horus/lcd.h b/radio/src/gui/horus/lcd.h index bd48ab4df..ec10b7f17 100644 --- a/radio/src/gui/horus/lcd.h +++ b/radio/src/gui/horus/lcd.h @@ -267,6 +267,7 @@ void lcdSetContrast(); #define BLINK_ON_PHASE (0) #else #define BLINK_ON_PHASE (g_blinkTmr10ms & (1<<6)) + #define SLOW_BLINK_ON_PHASE (g_blinkTmr10ms & (1<<7)) #endif #endif // _LCD_H_ diff --git a/radio/src/gui/horus/menu_model_mixes.cpp b/radio/src/gui/horus/menu_model_mixes.cpp index c3645df39..65fb06a22 100644 --- a/radio/src/gui/horus/menu_model_mixes.cpp +++ b/radio/src/gui/horus/menu_model_mixes.cpp @@ -270,14 +270,15 @@ bool menuModelMixOne(evt_t event) #define _STR_MAX(x) PSTR("/" #x) #define STR_MAX(x) _STR_MAX(x) -#define MIX_LINE_WEIGHT_POS 110 -#define MIX_LINE_SRC_POS 115 -#define MIX_LINE_CURVE_POS 165 -#define MIX_LINE_SWITCH_POS 230 -#define MIX_LINE_DELAY_POS 270 -#define MIX_LINE_FM_POS 290 -#define MIX_LINE_NAME_POS 405 -#define MIX_LINE_SELECT_POS 50 +#define MIX_LINE_WEIGHT_POS 105 +#define MIX_LINE_SRC_POS 120 +#define MIX_LINE_CURVE_ICON 175 +#define MIX_LINE_CURVE_POS 195 +#define MIX_LINE_SWITCH_ICON 260 +#define MIX_LINE_SWITCH_POS 280 +#define MIX_LINE_DELAY_SLOW_POS 340 +#define MIX_LINE_NAME_FM_ICON 370 +#define MIX_LINE_NAME_FM_POS 390 #define MIX_LINE_SELECT_POS 50 #define MIX_LINE_SELECT_WIDTH (LCD_W-MIX_LINE_SELECT_POS-15) #define MIX_STATUS_MARGIN_LEFT MENUS_MARGIN_LEFT + 45 @@ -322,20 +323,51 @@ void onMixesMenu(const char * result) void displayMixInfos(coord_t y, MixData *md) { + if (md->curve.value != 0 ) lcd->drawBitmap(MIX_LINE_CURVE_ICON, y + 2, mixerSetupCurveBitmap); putsCurveRef(MIX_LINE_CURVE_POS, y, md->curve); if (md->swtch) { + lcd->drawBitmap(MIX_LINE_SWITCH_ICON, y + 2, mixerSetupSwitchBitmap); putsSwitches(MIX_LINE_SWITCH_POS, y, md->swtch); } } +void displayMixSmallFlightModes(coord_t x, coord_t y, FlightModesType value) +{ + for (int i=0; idrawFilledRect(x, y+2, 8, 12 , SOLID, CURVE_AXIS_COLOR); + lcdDrawText(x, y, s, SMLSIZE); + x += 8; + } +} + void displayMixLine(coord_t y, MixData *md) { - if (md->name[0]) { - lcdDrawSizedText(MIX_LINE_NAME_POS, y+2, md->name, sizeof(md->name), ZCHAR | SMLSIZE); + if (md->name[0] && md->flightModes) + { + if (SLOW_BLINK_ON_PHASE) { + lcd->drawBitmap(MIX_LINE_NAME_FM_ICON, y + 2, mixerSetupFlightmodeBitmap); + displayMixSmallFlightModes(MIX_LINE_NAME_FM_POS, y + 2, md->flightModes); + } + else { + lcd->drawBitmap(MIX_LINE_NAME_FM_ICON, y + 2, mixerSetupLabelBitmap); + lcdDrawSizedText(MIX_LINE_NAME_FM_POS, y, md->name, sizeof(md->name), ZCHAR); + } + } + else + { + if (md->name[0]) { + lcd->drawBitmap(MIX_LINE_NAME_FM_ICON, y + 2, mixerSetupLabelBitmap); + lcdDrawSizedText(MIX_LINE_NAME_FM_POS, y, md->name, sizeof(md->name), ZCHAR); + } + if (md->flightModes) { + lcd->drawBitmap(MIX_LINE_NAME_FM_ICON, y + 2, mixerSetupFlightmodeBitmap); + displayMixSmallFlightModes(MIX_LINE_NAME_FM_POS, y + 2, md->flightModes); + } } displayMixInfos(y, md); - displayFlightModes(MIX_LINE_FM_POS, y, md->flightModes, 0); } void displayMixStatus(uint8_t channel) @@ -523,12 +555,13 @@ bool menuModelMixAll(evt_t event) displayMixLine(y, md); - char cs[] = " "; + BitmapBuffer * delayslow = 0; if (md->speedDown || md->speedUp) - cs[0] = 'S'; + delayslow = mixerSetupSlowBitmap; if (md->delayUp || md->delayDown) - cs[0] = (cs[0] =='S' ? '*' : 'D'); - lcdDrawText(MIX_LINE_DELAY_POS, y, cs); + delayslow = (delayslow ? mixerSetupDelaySlowBitmap : mixerSetupDelayBitmap ); + if (delayslow) + lcd->drawBitmap(MIX_LINE_DELAY_SLOW_POS, y + 2, delayslow); if (s_copyMode) { if ((s_copyMode==COPY_MODE || s_copyTgtOfs == 0) && s_copySrcCh == ch && i == (s_copySrcIdx + (s_copyTgtOfs<0))) { diff --git a/radio/src/gui/horus/themes/darkblue.cpp b/radio/src/gui/horus/themes/darkblue.cpp index 997d2fc6a..8f29702a9 100644 --- a/radio/src/gui/horus/themes/darkblue.cpp +++ b/radio/src/gui/horus/themes/darkblue.cpp @@ -145,6 +145,27 @@ class DarkblueTheme: public Theme delete mixerSetupReplaceBitmap; mixerSetupReplaceBitmap = BitmapBuffer::loadMaskOnBackground("mask_mplex_replace.png", TEXT_COLOR, TEXT_BGCOLOR); + + delete mixerSetupLabelBitmap; + mixerSetupLabelBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_label.png", TEXT_COLOR, TEXT_BGCOLOR); + + delete mixerSetupCurveBitmap; + mixerSetupCurveBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_curve.png", TEXT_COLOR, TEXT_BGCOLOR); + + delete mixerSetupSwitchBitmap; + mixerSetupSwitchBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_switch.png", TEXT_COLOR, TEXT_BGCOLOR); + + delete mixerSetupSlowBitmap; + mixerSetupSlowBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_slow.png", TEXT_COLOR, TEXT_BGCOLOR); + + delete mixerSetupDelayBitmap; + mixerSetupDelayBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_delay.png", TEXT_COLOR, TEXT_BGCOLOR); + + delete mixerSetupDelaySlowBitmap; + mixerSetupDelaySlowBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_delayslow.png", TEXT_BGCOLOR, TEXT_COLOR); + + delete mixerSetupFlightmodeBitmap; + mixerSetupFlightmodeBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_fm.png", TEXT_COLOR, TEXT_BGCOLOR); } virtual void load() const diff --git a/radio/src/gui/horus/themes/default.cpp b/radio/src/gui/horus/themes/default.cpp index 6bac0c825..f945a990f 100644 --- a/radio/src/gui/horus/themes/default.cpp +++ b/radio/src/gui/horus/themes/default.cpp @@ -201,6 +201,26 @@ class DefaultTheme: public Theme delete mixerSetupReplaceBitmap; mixerSetupReplaceBitmap = BitmapBuffer::loadMaskOnBackground("mask_mplex_replace.png", TEXT_COLOR, TEXT_BGCOLOR); + delete mixerSetupLabelBitmap; + mixerSetupLabelBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_label.png", TEXT_COLOR, TEXT_BGCOLOR); + + delete mixerSetupCurveBitmap; + mixerSetupCurveBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_curve.png", TEXT_COLOR, TEXT_BGCOLOR); + + delete mixerSetupSwitchBitmap; + mixerSetupSwitchBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_switch.png", TEXT_COLOR, TEXT_BGCOLOR); + + delete mixerSetupFlightmodeBitmap; + mixerSetupFlightmodeBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_fm.png", TEXT_COLOR, TEXT_BGCOLOR); + + delete mixerSetupSlowBitmap; + mixerSetupSlowBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_slow.png", TEXT_COLOR, TEXT_BGCOLOR); + + delete mixerSetupDelayBitmap; + mixerSetupDelayBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_delay.png", TEXT_COLOR, TEXT_BGCOLOR); + + delete mixerSetupDelaySlowBitmap; + mixerSetupDelaySlowBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_delayslow.png", TEXT_BGCOLOR, TEXT_COLOR); } virtual void load() const