From 4f5ce6b0f01f9255bdae5f7fab00983b4195e9ff Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 16 Oct 2015 23:09:26 +0200 Subject: [PATCH] [Horus] Main view added --- radio/src/Makefile | 4 +- radio/src/bitmaps/Horus/corsair.png | Bin 0 -> 21663 bytes ...p_polygon.png => mask_topmenu_polygon.png} | Bin radio/src/bitmaps/Horus/mask_trim_bg.png | Bin 158 -> 0 bytes .../src/bitmaps/Horus/mask_trim_frame_bg.png | Bin 440 -> 0 bytes radio/src/gui/Horus/bitmaps.cpp | 32 ++- radio/src/gui/Horus/gui.h | 10 +- radio/src/gui/Horus/lcd.cpp | 33 ++-- radio/src/gui/Horus/lcd.h | 1 + radio/src/gui/Horus/view_main.cpp | 186 +++++++++++++----- radio/src/gui/Horus/widgets.cpp | 25 ++- 11 files changed, 211 insertions(+), 80 deletions(-) create mode 100644 radio/src/bitmaps/Horus/corsair.png rename radio/src/bitmaps/Horus/{mask_top_polygon.png => mask_topmenu_polygon.png} (100%) delete mode 100644 radio/src/bitmaps/Horus/mask_trim_bg.png delete mode 100644 radio/src/bitmaps/Horus/mask_trim_frame_bg.png diff --git a/radio/src/Makefile b/radio/src/Makefile index 71eef86cd..11b91810c 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -1833,8 +1833,8 @@ translations/se.h: translations/se.h.txt ifeq ($(PCB), $(filter $(PCB), HORUS)) FONTNAME = DejaVu\ Sans - TINSIZE = 5 - SMLSIZE = 7 + TINSIZE = 9 + SMLSIZE = 13 STDSIZE = 16 MIDSIZE = 16 DBLSIZE = 20 diff --git a/radio/src/bitmaps/Horus/corsair.png b/radio/src/bitmaps/Horus/corsair.png new file mode 100644 index 0000000000000000000000000000000000000000..25b6def09506f5b156066cd4038f4662237d7d8c GIT binary patch literal 21663 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 diff --git a/radio/src/bitmaps/Horus/mask_trim_frame_bg.png b/radio/src/bitmaps/Horus/mask_trim_frame_bg.png deleted file mode 100644 index bf0f329f00bd001819ffb7011a648c98bf42f428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^+(5jDgAGVd-){~i8CZ&)JVQ8upoSx*1IXtr@Q5r1 zs=p4xj7}P}D}aKMC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)lntHl8 zhD5Z!y}2>#P=ZL?!}k*H0Sld4-ImW-xFR^)@#USP8-wrM)_xh9V$}WiQnrBR7rv&2 zUPlu?@Xe7)+Q)Zo=@QMGGUvGee=D%~^O~`qtGU7duwwo!-?(X~_iW3x+og9{!9u7> zCBAmP?&(GED`VURFPl8I>UvQv7d`Fh^ouVVrgyVi_p+H6o>^m7c&2Rcxk`yk9@}m| zXTN^*Z$iVGbE`w=glbht_c!kLYoEV4^4XQ-i$y2bJr*z(RP&tF4K$1OfRLv|+r*uR z3R+Y7vM^;a zGTj{Ce%I= 0) { + lcdDrawVerticalLine(x+8, y+3, 9, TEXT_INVERTED_COLOR); + } + if (dir <= 0) { + lcdDrawVerticalLine(x+2, y+3, 9, TEXT_INVERTED_COLOR); + } + // if (exttrim) { + // lcdDrawVerticalLine(xm, ym, 9, TEXT_INVERTED_COLOR); + // } +} + +void drawVerticalTrimPosition(coord_t x, coord_t y, int16_t dir) +{ + drawTrimSquare(x, y); + if (dir >= 0) { + lcdDrawHorizontalLine(x+1, y+4, 9, TEXT_INVERTED_COLOR); + } + if (dir <= 0) { + lcdDrawHorizontalLine(x+1, y+10, 9, TEXT_INVERTED_COLOR); + } + // if (exttrim) { + // lcdDrawHorizontalLine(xm-1, ym, 3, TEXT_INVERTED_COLOR); + // } +} + +void drawHorizontalStick(coord_t x, int val) +{ + for (int i=0; i<=160; i+=4) { + if (i==0 || i==80 || i==160) + lcdDrawVerticalLine(x+i, 250, 13, TEXT_COLOR); + else + lcdDrawVerticalLine(x+i, 252, 9, TEXT_COLOR); + } + drawHorizontalTrimPosition(x+TRIM_LEN+val*TRIM_LEN/RESX-4, TRIM_H_Y+16, val); +} + +void drawVerticalStick(coord_t x, int val) +{ + for (int i=0; i<=160; i+=4) { + if (i==0 || i==80 || i==160) + lcdDrawHorizontalLine(x, 56+i, 13, TEXT_COLOR); + else + lcdDrawHorizontalLine(x+2, 56+i, 9, TEXT_COLOR); + } + drawVerticalTrimPosition(x, TRIM_V_Y+val*TRIM_LEN/RESX-6, val); +} + +void drawSticks() +{ + drawVerticalStick(6, calibratedStick[1]); + drawHorizontalStick(TRIM_LH_X-TRIM_LEN+1, calibratedStick[0]); + drawVerticalStick(LCD_W-18, calibratedStick[2]); + drawHorizontalStick(TRIM_RH_X-TRIM_LEN+1, calibratedStick[3]); +} + +void displayTrims(uint8_t flightMode) +{ + g_model.displayTrims = DISPLAY_TRIMS_ALWAYS; + for (uint8_t i=0; i<4; i++) { static coord_t x[4] = {TRIM_LH_X, TRIM_LV_X, TRIM_RV_X, TRIM_RH_X}; - static uint8_t vert[4] = {0,1,1,0}; - coord_t xm, ym; - xm = x[CONVERT_MODE(i)]; + static uint8_t vert[4] = {0, 1, 1, 0}; + unsigned int stickIndex = CONVERT_MODE(i); + coord_t xm = x[stickIndex]; - uint8_t att = ROUND; - int16_t val = getTrimValue(phase, i); - - int16_t dir = val; + int32_t trim = getTrimValue(flightMode, i); + int32_t val = trim * TRIM_LEN / 125; bool exttrim = false; - if (val < -125 || val > 125) { + if (val < -(TRIM_LEN+1)) { + val = -(TRIM_LEN+1); + exttrim = true; + } + else if (val > (TRIM_LEN+1)) { + val = TRIM_LEN+1; exttrim = true; } - if (val < -(TRIM_LEN+1)*4) { - val = -(TRIM_LEN+1); - } - else if (val > (TRIM_LEN+1)*4) { - val = TRIM_LEN+1; - } - else { - val /= 4; - } - if (vert[i]) { - ym = 31; - lcd_vline(xm, ym-TRIM_LEN, TRIM_LEN*2); + coord_t ym = TRIM_V_Y; + lcdDrawBitmapPattern(xm, ym-TRIM_LEN, LBM_VTRIM_FRAME, TEXT_COLOR); if (i!=2 || !g_model.thrTrim) { - lcd_vline(xm-1, ym-1, 3); - lcd_vline(xm+1, ym-1, 3); + // TODO } ym -= val; - - // TODO lcdDrawFilledRect(xm-3, ym-3, 7, 7, SOLID, att); - if (dir >= 0) { - lcd_hline(xm-1, ym-1, 3); - } - if (dir <= 0) { - lcd_hline(xm-1, ym+1, 3); - } - if (exttrim) { - lcd_hline(xm-1, ym, 3); + drawVerticalTrimPosition(xm-1, ym-6, val); + if (g_model.displayTrims != DISPLAY_TRIMS_NEVER && trim != 0) { + if (g_model.displayTrims == DISPLAY_TRIMS_ALWAYS || (trimsDisplayTimer > 0 && (trimsDisplayMask & (1<0 ? 100 : 200, xm-2, trim, TINSIZE|VERTICAL); + } } } else { - ym = 60; - lcd_hline(xm-TRIM_LEN, ym, TRIM_LEN*2); - lcd_hline(xm-1, ym-1, 3); - lcd_hline(xm-1, ym+1, 3); + coord_t ym = TRIM_H_Y; + lcdDrawBitmapPattern(xm-TRIM_LEN, ym, LBM_HTRIM_FRAME, TEXT_COLOR); xm += val; - - // TODO lcdDrawFilledRect(xm-3, ym-3, 7, 7, SOLID, att); - if (dir >= 0) { - lcd_vline(xm+1, ym-1, 3); - } - if (dir <= 0) { - lcd_vline(xm-1, ym-1, 3); - } - if (exttrim) { - lcd_vline(xm, ym-1, 3); + drawHorizontalTrimPosition(xm-3, ym-2, val); + if (g_model.displayTrims != DISPLAY_TRIMS_NEVER && trim != 0) { + if (g_model.displayTrims == DISPLAY_TRIMS_ALWAYS || (trimsDisplayTimer > 0 && (trimsDisplayMask & (1<0 ? -20 : 50), ym+2, trim, TINSIZE); + } } } - lcdDrawSquare(xm-3, ym-3, 7, att); } } @@ -287,6 +335,11 @@ const uint16_t LBM_MAINVIEW_FLAT[] = { #include "../../bitmaps/Horus/mainview_flat.lbm" }; +const uint16_t LBM_CORSAIR[] = { +#include "../../bitmaps/Horus/corsair.lbm" +}; + + void menuMainView(evt_t event) { // clear the screen @@ -340,7 +393,32 @@ void menuMainView(evt_t event) break; } - lcdDrawBitmap(0, 0, LBM_MAINVIEW_FLAT); + // lcdDrawBitmap(0, 0, LBM_MAINVIEW_FLAT); + + // Header + lcdDrawFilledRect(0, 0, LCD_W, MENU_HEADER_HEIGHT, HEADER_BGCOLOR); + lcdDrawBitmapPattern(0, 0, LBM_TOPMENU_POLYGON, TITLE_BGCOLOR); + lcdDrawBitmapPattern(4, 10, LBM_TOPMENU_OPENTX, MENU_TITLE_COLOR); + lcdDrawTopmenuDatetime(); + + // Flight Mode Name + int mode = mixerCurrentFlightMode; + lcd_putsnAtt(212, 237, g_model.flightModeData[mode].name, sizeof(g_model.flightModeData[mode].name), ZCHAR|SMLSIZE); + + // Sticks + drawSticks(); + + // Trims + displayTrims(mode); + + // Model bitmap + lcdDrawBitmap(256, 104, LBM_CORSAIR); + + // Model name + lcdDrawBitmapPattern(256, 62, LBM_MODEL_ICON, MENU_TITLE_COLOR); + lcd_putsAtt(293, 68, "MyPlane Name", SMLSIZE); + lcdDrawHorizontalLine(287, 85, 140, TITLE_BGCOLOR); + #if 0 displayMainViewIndex(); diff --git a/radio/src/gui/Horus/widgets.cpp b/radio/src/gui/Horus/widgets.cpp index 286affdb6..79c40423f 100644 --- a/radio/src/gui/Horus/widgets.cpp +++ b/radio/src/gui/Horus/widgets.cpp @@ -49,6 +49,27 @@ void displayColumnHeader(const char * const *headers, uint8_t index) // TODO ? displayHeader(headers[index]); } +const char * STR_MONTHS[] = { "Jan", "Fev", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; + +#define DATETIME_SEPARATOR_X 425 +#define DATETIME_LINE1 9 +#define DATETIME_LINE2 23 +#define DATETIME_LEFT(s) (LCD_W+DATETIME_SEPARATOR_X+8-getTextWidth(s, SMLSIZE))/2 + +void lcdDrawTopmenuDatetime() +{ + lcdDrawVerticalLine(DATETIME_SEPARATOR_X, 7, 31, TEXT_INVERTED_COLOR); + + struct gtm t; + gettime(&t); + char str[10]; + sprintf(str, "%d %s", t.tm_mday, STR_MONTHS[t.tm_mon]); + lcd_putsAtt(DATETIME_LEFT(str), DATETIME_LINE1, str, SMLSIZE|TEXT_INVERTED_COLOR); + + getTimerString(str, getValue(MIXSRC_TX_TIME)); + lcd_putsAtt(DATETIME_LEFT(str), DATETIME_LINE2, str, SMLSIZE|TEXT_INVERTED_COLOR); +} + void drawStick(coord_t centrex, int16_t xval, int16_t yval) { #define BOX_CENTERY (220 - FH - BOX_WIDTH/2) @@ -122,7 +143,7 @@ void drawMenuTemplate(const char * name, evt_t event) lcdDrawFilledRect(0, MENU_BODY_TOP, LCD_W, MENU_BODY_HEIGHT, TEXT_BGCOLOR); lcdDrawFilledRect(0, MENU_FOOTER_TOP, LCD_W, MENU_FOOTER_HEIGHT, HEADER_BGCOLOR); - lcdDrawBitmapPattern(0, 0, LBM_TOP_POLYGON, TITLE_BGCOLOR); + lcdDrawBitmapPattern(0, 0, LBM_TOPMENU_POLYGON, TITLE_BGCOLOR); if (m_posVert < 0) { lcdDrawBitmapPattern(58+menuPageIndex*MENU_ICONS_SPACING-10, 0, LBM_CURRENT_BG, TITLE_BGCOLOR); @@ -145,6 +166,8 @@ void drawMenuTemplate(const char * name, evt_t event) lcdDrawBitmapPattern(58+menuPageIndex*MENU_ICONS_SPACING, MENU_TITLE_TOP-9, LBM_CURRENT_DOT, MENU_TITLE_COLOR); } + lcdDrawTopmenuDatetime(); + if (name) { // must be done at the end so that we can write something at the right of the menu title lcd_putsAtt(MENUS_MARGIN_LEFT, MENU_TITLE_TOP+2, name, MENU_TITLE_COLOR);