From 1fd1e141f23818e13f74a2e2ae695a8168faed8d Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 29 Feb 2016 22:17:37 +0100 Subject: [PATCH] [Horus] More bitmaps on SD. PNG format used instead of BMP. And yes it's a bad idea given the resources we have. --- radio/sdcard/horus/THEMES/Darkblue/thumb.png | Bin 0 -> 1184 bytes .../horus/THEMES/Darkblue/topmenu_opentx.png | Bin 0 -> 1142 bytes radio/sdcard/horus/THEMES/Default/aboutbg.png | Bin 0 -> 37032 bytes .../horus/THEMES/Default/asterisk.png} | Bin .../horus/THEMES/Default/busy.png} | Bin .../horus/THEMES/Default/horus.png} | Bin radio/sdcard/horus/THEMES/Default/mainbg.png | Bin 0 -> 59319 bytes .../horus/THEMES/Default/question.png} | Bin .../horus/THEMES/Default/shutdown.png} | Bin radio/sdcard/horus/THEMES/Default/sleep.png | Bin 0 -> 15868 bytes radio/sdcard/horus/THEMES/Default/thumb.png | Bin 0 -> 3409 bytes radio/sdcard/horus/THEMES/TBS/main.lua | 47 ++++++++++++ radio/sdcard/horus/THEMES/TBS/thumb.png | Bin 0 -> 620 bytes radio/src/CMakeLists.txt | 50 ++++++++++++- radio/src/gui/horus/bitmapbuffer.cpp | 31 ++++---- radio/src/gui/horus/bitmapbuffer.h | 70 ++++++++++-------- radio/src/gui/horus/bitmaps.cpp | 4 + radio/src/gui/horus/bitmaps.h | 1 + radio/src/gui/horus/layouts/layout2+1.cpp | 1 + radio/src/gui/horus/lcd.cpp | 30 +++++++- radio/src/gui/horus/lcd.h | 4 +- radio/src/gui/horus/menu_general_calib.cpp | 7 +- .../src/gui/horus/menu_general_sdmanager.cpp | 4 +- radio/src/gui/horus/popups.cpp | 2 +- radio/src/gui/horus/theme.cpp | 14 ++-- radio/src/gui/horus/themes/darkblue.cpp | 2 +- radio/src/gui/horus/themes/default.cpp | 8 +- radio/src/gui/horus/view_main.cpp | 2 +- radio/src/gui/horus/widgets.cpp | 17 +++-- radio/src/gui/horus/widgets/modelbmp.cpp | 3 +- radio/src/opentx.cpp | 9 +++ radio/src/targets/horus/board_horus.h | 3 +- radio/src/targets/horus/lcd_driver.cpp | 59 +++++++++++---- radio/util/img2lbm.py | 4 +- 34 files changed, 274 insertions(+), 98 deletions(-) create mode 100644 radio/sdcard/horus/THEMES/Darkblue/thumb.png create mode 100644 radio/sdcard/horus/THEMES/Darkblue/topmenu_opentx.png create mode 100644 radio/sdcard/horus/THEMES/Default/aboutbg.png rename radio/{src/bitmaps/horus/alpha_asterisk.png => sdcard/horus/THEMES/Default/asterisk.png} (100%) rename radio/{src/bitmaps/horus/alpha_busy.png => sdcard/horus/THEMES/Default/busy.png} (100%) rename radio/{src/bitmaps/horus/calibration/alpha_horus.png => sdcard/horus/THEMES/Default/horus.png} (100%) create mode 100644 radio/sdcard/horus/THEMES/Default/mainbg.png rename radio/{src/bitmaps/horus/alpha_question.png => sdcard/horus/THEMES/Default/question.png} (100%) rename radio/{src/bitmaps/horus/alpha_shutdown.png => sdcard/horus/THEMES/Default/shutdown.png} (100%) create mode 100644 radio/sdcard/horus/THEMES/Default/sleep.png create mode 100644 radio/sdcard/horus/THEMES/Default/thumb.png create mode 100644 radio/sdcard/horus/THEMES/TBS/main.lua create mode 100644 radio/sdcard/horus/THEMES/TBS/thumb.png diff --git a/radio/sdcard/horus/THEMES/Darkblue/thumb.png b/radio/sdcard/horus/THEMES/Darkblue/thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..108b4c007e8c8ddef327b2771e1437001a928627 GIT binary patch literal 1184 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 IM6N<$f}|Q8BLDyZ literal 0 HcmV?d00001 diff --git a/radio/sdcard/horus/THEMES/Default/aboutbg.png b/radio/sdcard/horus/THEMES/Default/aboutbg.png new file mode 100644 index 0000000000000000000000000000000000000000..114a12df61a926d7b6be76a0b4d846cd14163e57 GIT binary patch literal 37032 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 Z0gtf}YpMS{05UO>`BfVel(Bo<{{TE$T2TN1 literal 0 HcmV?d00001 diff --git a/radio/src/bitmaps/horus/alpha_asterisk.png b/radio/sdcard/horus/THEMES/Default/asterisk.png similarity index 100% rename from radio/src/bitmaps/horus/alpha_asterisk.png rename to radio/sdcard/horus/THEMES/Default/asterisk.png diff --git a/radio/src/bitmaps/horus/alpha_busy.png b/radio/sdcard/horus/THEMES/Default/busy.png similarity index 100% rename from radio/src/bitmaps/horus/alpha_busy.png rename to radio/sdcard/horus/THEMES/Default/busy.png diff --git a/radio/src/bitmaps/horus/calibration/alpha_horus.png b/radio/sdcard/horus/THEMES/Default/horus.png similarity index 100% rename from radio/src/bitmaps/horus/calibration/alpha_horus.png rename to radio/sdcard/horus/THEMES/Default/horus.png diff --git a/radio/sdcard/horus/THEMES/Default/mainbg.png b/radio/sdcard/horus/THEMES/Default/mainbg.png new file mode 100644 index 0000000000000000000000000000000000000000..02fa6695d60aea67d8f79a89cb12ae23fcdb8536 GIT binary patch literal 59319 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 literal 0 HcmV?d00001 diff --git a/radio/src/bitmaps/horus/alpha_question.png b/radio/sdcard/horus/THEMES/Default/question.png similarity index 100% rename from radio/src/bitmaps/horus/alpha_question.png rename to radio/sdcard/horus/THEMES/Default/question.png diff --git a/radio/src/bitmaps/horus/alpha_shutdown.png b/radio/sdcard/horus/THEMES/Default/shutdown.png similarity index 100% rename from radio/src/bitmaps/horus/alpha_shutdown.png rename to radio/sdcard/horus/THEMES/Default/shutdown.png diff --git a/radio/sdcard/horus/THEMES/Default/sleep.png b/radio/sdcard/horus/THEMES/Default/sleep.png new file mode 100644 index 0000000000000000000000000000000000000000..70e163272d0e325e9c29b836861fd2bb000008d4 GIT binary patch literal 15868 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

Q@JywLm0&M5||C7`2?YR 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 literal 0 HcmV?d00001 diff --git a/radio/sdcard/horus/THEMES/TBS/main.lua b/radio/sdcard/horus/THEMES/TBS/main.lua new file mode 100644 index 000000000..56e06e46f --- /dev/null +++ b/radio/sdcard/horus/THEMES/TBS/main.lua @@ -0,0 +1,47 @@ +local function load() + lcd.setColor(TEXT_COLOR_INDEX, WHITE) + lcd.setColor(TEXT_BGCOLOR_INDEX, BLACK) + lcd.setColor(TEXT_INVERTED_COLOR_INDEX, BLACK) + lcd.setColor(TEXT_INVERTED_BGCOLOR_INDEX, YELLOW) + lcd.setColor(LINE_COLOR_INDEX, GREY) + lcd.setColor(SCROLLBOX_COLOR_INDEX, BLUE) + lcd.setColor(MENU_TITLE_BGCOLOR_INDEX, DARKGREY) + lcd.setColor(MENU_TITLE_COLOR_INDEX, WHITE) + lcd.setColor(MENU_TITLE_DISABLE_COLOR_INDEX, BLACK) + lcd.setColor(HEADER_COLOR_INDEX, lcd.RGB(32, 34, 42)) + lcd.setColor(ALARM_COLOR_INDEX, lcd.RGB(32, 34, 42)) + lcd.setColor(WARNING_COLOR_INDEX, YELLOW) + lcd.setColor(TEXT_DISABLE_COLOR_INDEX, GREY) + lcd.setColor(CURVE_AXIS_COLOR_INDEX, LIGHTGREY) + lcd.setColor(CURVE_COLOR_INDEX, lcd.RGB(32, 34, 42)) + lcd.setColor(CURVE_CURSOR_COLOR_INDEX, lcd.RGB(32, 34, 42)) + lcd.setColor(TITLE_BGCOLOR_INDEX, lcd.RGB(32, 34, 42)) + lcd.setColor(TRIM_BGCOLOR_INDEX, YELLOW) + lcd.setColor(TRIM_SHADOW_COLOR_INDEX, lcd.RGB(100, 100, 100)) + lcd.setColor(MAINVIEW_PANES_COLOR_INDEX, GREY) + lcd.setColor(MAINVIEW_GRAPHICS_COLOR_INDEX, WHITE) + lcd.setColor(HEADER_BGCOLOR_INDEX, BLACK) + lcd.setColor(HEADER_ICON_BGCOLOR_INDEX, BLACK) + lcd.setColor(HEADER_CURRENT_BGCOLOR_INDEX, lcd.RGB(10, 78, 121)) + lcd.setColor(OVERLAY_COLOR_INDEX, BLACK) + return 0 +end + +local function drawBackground() + lcd.drawFilledRectangle(0, 0, LCD_W, LCD_H, TEXT_BGCOLOR); +end + +local function drawTopbarBackground(icon) + lcd.drawFilledRectangle(0, 0, LCD_W, MENU_HEADER_HEIGHT, HEADER_BGCOLOR); + lcd.drawLine(0, MENU_HEADER_HEIGHT, LCD_W, MENU_HEADER_HEIGHT, SOLID, TEXT_COLOR) + + --if (icon) then + --lcd.drawBitmapPattern(5, 7, icon, MENU_TITLE_COLOR); + --else + --lcd.drawBitmap(5, 7, LBM_TOPMENU_BMP_OPENTX); + --end + + --lcd.drawTopbarDatetime(); +end + +return { name="TBS", load=load, drawBackground=drawBackground, drawTopbarBackground=drawTopbarBackground } diff --git a/radio/sdcard/horus/THEMES/TBS/thumb.png b/radio/sdcard/horus/THEMES/TBS/thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..f22bb47cc1835178d54fd7def2dc9751af64a53e GIT binary patch literal 620 zcmV-y0+aoTP)7x*AM3LCo*-9W5R;m1e{DS-fJ4>-jX(HkB^UXeSLir5WlNab#sq9{B(JOD7APBq?cw+q1Y^D{o553ALR)9K{)_Lf?$ zrau@F!Dh1opsK3o`D(QSz~yrBC+GQI|7`#$iX!*-_aY)vtyVQ_gTX*VM3Tv*I2?|@ z%K4`^^Rt%AC51u(yWOtw#^Z5~@AdVSVzEdfk>Kp?Oh0Y5uYSMJ-QC?geg?G$KwHDG#cq^0PO4H;^Lr3RaFrYal7667yuu&S+m*vvDRobNT<_WUS49cSg_e_ zghCdata; + // convert to RGB565 or ARGB4444 format + BitmapBuffer * bmp = new BitmapBuffer(n == 4 ? BMP_ARGB4444 : BMP_RGB565, w, h); if (bmp == NULL) { TRACE("load_stb() malloc failed"); stbi_image_free(img); return NULL; } - if (transparent) { +#if 0 + DMABitmapConvert(bmp->data, img, w, h, n == 4 ? DMA2D_ARGB4444 : DMA2D_RGB565); +#else + uint16_t * dest = bmp->getData(); + const uint8_t * p = img; + if (n == 4) { for(int row = 0; row < h; ++row) { - unsigned char *l = p; for(int col = 0; col < w; ++col) { - *dest = ARGB(l[3], l[0], l[1], l[2]); + *dest = ARGB(p[3], p[0], p[1], p[2]); ++dest; - l += 4; + p += 4; } - p += 4 * w; } } else { for(int row = 0; row < h; ++row) { - unsigned char *l = p; for(int col = 0; col < w; ++col) { - *dest = RGB(l[0], l[1], l[2]); + *dest = RGB(p[0], p[1], p[2]); ++dest; - l += 3; + p += 4; } - p += 3 * w; } } +#endif stbi_image_free(img); return bmp; diff --git a/radio/src/gui/horus/bitmapbuffer.h b/radio/src/gui/horus/bitmapbuffer.h index 9464fb637..8b051ca86 100644 --- a/radio/src/gui/horus/bitmapbuffer.h +++ b/radio/src/gui/horus/bitmapbuffer.h @@ -25,38 +25,54 @@ #include "colors.h" #define USE_STB - + // TODO should go to lcd.h again typedef int coord_t; typedef uint32_t LcdFlags; typedef uint16_t display_t; +enum BitmapFormats +{ + BMP_RGB565, + BMP_ARGB4444 +}; + template class BitmapBufferBase { public: - BitmapBufferBase(int width, int height, T * data): + BitmapBufferBase(uint8_t format, uint16_t width, uint16_t height, T * data): + format(format), width(width), height(height), data(data) { } - int getWidth() const + inline uint8_t getFormat() const + { + return format; + } + + inline uint16_t getWidth() const { return width; } - int getHeight() const + inline uint16_t getHeight() const { return height; } - protected: - int width; - int height; + inline T * getData() const + { + return data; + } - public: // TODO protected + protected: + uint8_t format; + uint16_t width; + uint16_t height; T * data; }; @@ -69,22 +85,24 @@ class BitmapBuffer: public BitmapBufferBase public: - BitmapBuffer(int width, int height): - BitmapBufferBase(width, height, NULL), + BitmapBuffer(uint8_t format, uint16_t width, uint16_t height): + BitmapBufferBase(format, width, height, NULL), dataAllocated(true) { data = (uint16_t *)malloc(width*height*sizeof(uint16_t)); } - BitmapBuffer(int width, int height, uint16_t * data): - BitmapBufferBase(width, height, data), + BitmapBuffer(uint8_t format, uint16_t width, uint16_t height, uint16_t * data): + BitmapBufferBase(format, width, height, data), dataAllocated(false) { } ~BitmapBuffer() { - if (dataAllocated) free(data); + if (dataAllocated) { + free(data); + } } inline void clear() @@ -137,7 +155,7 @@ class BitmapBuffer: public BitmapBufferBase void drawBitmapPatternPie(coord_t x0, coord_t y0, const uint8_t * img, LcdFlags flags, int startAngle, int endAngle); - static BitmapBuffer * load(const char * filename, bool transparent = false); + static BitmapBuffer * load(const char * filename); void drawBitmapPattern(coord_t x, coord_t y, const uint8_t * bmp, LcdFlags flags, coord_t offset=0, coord_t width=0); @@ -148,6 +166,8 @@ class BitmapBuffer: public BitmapBufferBase template void drawBitmap(coord_t x, coord_t y, const T * bmp, coord_t srcx=0, coord_t srcy=0, coord_t w=0, coord_t h=0, float scale=0) { + if (!bmp) return; + int srcw = bmp->getWidth(); int srch = bmp->getHeight(); @@ -167,7 +187,12 @@ class BitmapBuffer: public BitmapBufferBase if (y + h > height) { h = height - y; } - DMACopyBitmap(data, width, x, y, bmp->data, srcw, srcx, srcy, w, h); + if (bmp->getFormat() == BMP_ARGB4444) { + DMACopyAlphaBitmap(data, this->width, x, y, bmp->getData(), srcw, srcx, srcy, w, h); + } + else { + DMACopyBitmap(data, width, x, y, bmp->getData(), srcw, srcx, srcy, w, h); + } } else { int scaledw = w * scale; @@ -180,7 +205,7 @@ class BitmapBuffer: public BitmapBufferBase for (int i = 0; i < scaledh; i++) { uint16_t * p = &data[(y + i) * width + x]; - const uint16_t * qstart = &bmp->data[(srcy + int(i / scale)) * bmp->getWidth() + srcx]; + const uint16_t * qstart = &bmp->getData()[(srcy + int(i / scale)) * bmp->getWidth() + srcx]; for (int j = 0; j < scaledw; j++) { const uint16_t * q = qstart + int(j / scale); *p = *q; @@ -205,19 +230,6 @@ class BitmapBuffer: public BitmapBufferBase drawBitmap(x+(w-width)/2, y, bitmap, 0, 0, 0, 0, scale); } } - - template - void drawAlphaBitmap(coord_t x, coord_t y, const T * bmp) - { - int width = bmp->getWidth(); - int height = bmp->getHeight(); - - if (width == 0 || height == 0) { - return; - } - - DMACopyAlphaBitmap(data, this->width, x, y, bmp->data, width, height); - } }; extern BitmapBuffer * lcd; diff --git a/radio/src/gui/horus/bitmaps.cpp b/radio/src/gui/horus/bitmaps.cpp index 9a96bfb65..b7b1ed918 100644 --- a/radio/src/gui/horus/bitmaps.cpp +++ b/radio/src/gui/horus/bitmaps.cpp @@ -248,6 +248,10 @@ const uint8_t LBM_LIBRARY_SLOT[] = { #include "mask_library_slot.lbm" }; +const uint8_t LBM_ACTIVE_MODEL[] = { +#include "mask_library_active_model.lbm" +}; + const uint8_t LBM_LIBRARY_CURSOR[] = { #include "mask_library_category_index.lbm" }; diff --git a/radio/src/gui/horus/bitmaps.h b/radio/src/gui/horus/bitmaps.h index e85aea784..508bf4c0c 100644 --- a/radio/src/gui/horus/bitmaps.h +++ b/radio/src/gui/horus/bitmaps.h @@ -59,6 +59,7 @@ extern const uint8_t * const LBM_MAINVIEWS_ICONS[]; // Model selection icons extern const uint8_t LBM_LIBRARY_ICON[]; extern const uint8_t LBM_LIBRARY_SLOT[]; +extern const uint8_t LBM_ACTIVE_MODEL[]; extern const uint8_t LBM_LIBRARY_CURSOR[]; extern const uint8_t LBM_SCORE0[]; extern const uint8_t LBM_SCORE1[]; diff --git a/radio/src/gui/horus/layouts/layout2+1.cpp b/radio/src/gui/horus/layouts/layout2+1.cpp index 039ee2a90..c4e952618 100644 --- a/radio/src/gui/horus/layouts/layout2+1.cpp +++ b/radio/src/gui/horus/layouts/layout2+1.cpp @@ -100,3 +100,4 @@ void Layout2P1::refresh() } BaseLayoutFactory layout2P1("Layout2P1", LBM_LAYOUT_2P1, OPTIONS_LAYOUT_2P1); +const LayoutFactory * defaultLayout = &layout2P1; diff --git a/radio/src/gui/horus/lcd.cpp b/radio/src/gui/horus/lcd.cpp index 3d2a31049..8ecfb62d4 100644 --- a/radio/src/gui/horus/lcd.cpp +++ b/radio/src/gui/horus/lcd.cpp @@ -659,7 +659,7 @@ void lcdDrawBlackOverlay() } #if defined(SIMU) -BitmapBuffer _lcd(LCD_W, LCD_H, displayBuf); +BitmapBuffer _lcd(BMP_RGB565, LCD_W, LCD_H, displayBuf); BitmapBuffer * lcd = &_lcd; void DMAFillRect(uint16_t * dest, uint16_t destw, uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color) @@ -678,12 +678,12 @@ void DMACopyBitmap(uint16_t * dest, uint16_t destw, uint16_t x, uint16_t y, cons } } -void DMACopyAlphaBitmap(uint16_t * dest, uint16_t destw, uint16_t x, uint16_t y, const uint16_t * src, uint16_t srcw, uint16_t h) +void DMACopyAlphaBitmap(uint16_t * dest, uint16_t destw, uint16_t x, uint16_t y, const uint16_t * src, uint16_t srcw, uint16_t srcx, uint16_t srcy, uint16_t w, uint16_t h) { for (coord_t line=0; line> 12; uint8_t red = ((((*q >> 8) & 0x0f) << 1) * alpha + (*p >> 11) * (0x0f-alpha)) / 0x0f; uint8_t green = ((((*q >> 4) & 0x0f) << 2) * alpha + ((*p >> 5) & 0x3f) * (0x0f-alpha)) / 0x0f; @@ -693,4 +693,26 @@ void DMACopyAlphaBitmap(uint16_t * dest, uint16_t destw, uint16_t x, uint16_t y, } } } + +void DMABitmapConvert(uint16_t * dest, const uint8_t * src, uint16_t w, uint16_t h, uint32_t format) +{ + if (format == DMA2D_ARGB4444) { + for (int row = 0; row < h; ++row) { + for (int col = 0; col < w; ++col) { + *dest = ARGB(src[0], src[1], src[2], src[3]); + ++dest; + src += 4; + } + } + } + else { + for (int row = 0; row < h; ++row) { + for(int col = 0; col < w; ++col) { + *dest = RGB(src[1], src[2], src[3]); + ++dest; + src += 4; + } + } + } +} #endif diff --git a/radio/src/gui/horus/lcd.h b/radio/src/gui/horus/lcd.h index b98e7a748..37b668c57 100644 --- a/radio/src/gui/horus/lcd.h +++ b/radio/src/gui/horus/lcd.h @@ -77,7 +77,7 @@ #if defined(SIMU) extern display_t displayBuf[DISPLAY_BUFFER_SIZE]; #else -#define displayBuf lcd->data +#define displayBuf lcd->getData() #endif #define lcdRefreshWait() @@ -157,7 +157,7 @@ inline void lcdDrawAlphaPixel(coord_t x, coord_t y, uint8_t opacity, uint16_t co #if !defined(SIMU) inline void lcdDrawSolidFilledRect(coord_t x, coord_t y, coord_t w, coord_t h, LcdFlags flags) { - DMAFillRect(lcd->data, LCD_W, x, y, w, h, lcdColorTable[COLOR_IDX(flags)]); + DMAFillRect(lcd->getData(), LCD_W, x, y, w, h, lcdColorTable[COLOR_IDX(flags)]); } #else void lcdDrawSolidFilledRect(coord_t x, coord_t y, coord_t w, coord_t h, LcdFlags flags); diff --git a/radio/src/gui/horus/menu_general_calib.cpp b/radio/src/gui/horus/menu_general_calib.cpp index 10988a7a0..873c43eb6 100644 --- a/radio/src/gui/horus/menu_general_calib.cpp +++ b/radio/src/gui/horus/menu_general_calib.cpp @@ -63,8 +63,6 @@ void drawPots() OPTION_SLIDER_SQUARE_BUTTON); } -#include "alpha_horus.lbm" - bool menuCommonCalib(evt_t event) { drawScreenTemplate(NULL, LBM_CALIBRATION_ICON, OPTION_MENU_NO_FOOTER); @@ -194,7 +192,10 @@ bool menuCommonCalib(evt_t event) break; } - lcd->drawAlphaBitmap((LCD_W-206)/2, LCD_H-220, &ALPHA_HORUS); + static const BitmapBuffer * horus = BitmapBuffer::load(getThemePath("horus.png")); + if (horus) { + lcd->drawBitmap((LCD_W-horus->getWidth())/2, LCD_H-20-horus->getHeight(), horus); + } drawSticks(); drawPots(); diff --git a/radio/src/gui/horus/menu_general_sdmanager.cpp b/radio/src/gui/horus/menu_general_sdmanager.cpp index bfe529474..d07b872f0 100644 --- a/radio/src/gui/horus/menu_general_sdmanager.cpp +++ b/radio/src/gui/horus/menu_general_sdmanager.cpp @@ -366,11 +366,11 @@ bool menuGeneralSdManager(evt_t _event) if (currentBitmapIndex != menuVerticalPosition) { currentBitmapIndex = menuVerticalPosition; delete currentBitmap; - currentBitmap = BitmapBuffer::load(reusableBuffer.sdmanager.lines[index], true); + currentBitmap = BitmapBuffer::load(reusableBuffer.sdmanager.lines[index]); // TODO scale in case of a too large bitmap } if (currentBitmap) { - lcd->drawAlphaBitmap(LCD_W / 2, LCD_H / 2, currentBitmap); + lcd->drawBitmap(LCD_W / 2, LCD_H / 2, currentBitmap); } } diff --git a/radio/src/gui/horus/popups.cpp b/radio/src/gui/horus/popups.cpp index 89bca1dea..4b0a4d664 100644 --- a/radio/src/gui/horus/popups.cpp +++ b/radio/src/gui/horus/popups.cpp @@ -18,7 +18,7 @@ * GNU General Public License for more details. */ -#include "../../opentx.h" +#include "opentx.h" const char *warningText = NULL; const char *warningInfoText; diff --git a/radio/src/gui/horus/theme.cpp b/radio/src/gui/horus/theme.cpp index c9b926343..1faa0d505 100644 --- a/radio/src/gui/horus/theme.cpp +++ b/radio/src/gui/horus/theme.cpp @@ -52,11 +52,9 @@ void Theme::drawThumb(uint16_t x, uint16_t y, uint32_t flags) #define THUMB_WIDTH 51 #define THUMB_HEIGHT 31 if (!thumb) { - thumb = BitmapBuffer::load(getFilePath("thumb.bmp")); - } - if (thumb) { - lcd->drawBitmap(x, y, thumb); + thumb = BitmapBuffer::load(getFilePath("thumb.png")); } + lcd->drawBitmap(x, y, thumb); if (flags == LINE_COLOR) { lcdDrawFilledRect(x, y, THUMB_WIDTH, THUMB_HEIGHT, SOLID, OVERLAY_COLOR | OPACITY(10)); } @@ -72,20 +70,20 @@ void Theme::drawAboutBackground() const drawBackground(); } -#include "alpha_asterisk.lbm" - void Theme::drawMessageBox(const char * title, const char * text, const char * action, uint32_t flags) const { + static const BitmapBuffer * asterisk = BitmapBuffer::load(getThemePath("asterisk.png")); + //if (flags & MESSAGEBOX_TYPE_ALERT) { drawBackground(); lcdDrawFilledRect(0, POPUP_Y, LCD_W, POPUP_H, SOLID, TEXT_INVERTED_COLOR | OPACITY(8)); //} if ((flags & MESSAGEBOX_TYPE_ALERT) || (flags & MESSAGEBOX_TYPE_WARNING)) { - lcd->drawAlphaBitmap(POPUP_X-80, POPUP_Y+12, &ALPHA_ASTERISK); + lcd->drawBitmap(POPUP_X-80, POPUP_Y+12, asterisk); } else { - lcd->drawAlphaBitmap(POPUP_X-80, POPUP_Y+12, &ALPHA_ASTERISK); + lcd->drawBitmap(POPUP_X-80, POPUP_Y+12, asterisk); } #if defined(TRANSLATIONS_FR) || defined(TRANSLATIONS_IT) || defined(TRANSLATIONS_CZ) diff --git a/radio/src/gui/horus/themes/darkblue.cpp b/radio/src/gui/horus/themes/darkblue.cpp index c47ff7bb6..030fa69db 100644 --- a/radio/src/gui/horus/themes/darkblue.cpp +++ b/radio/src/gui/horus/themes/darkblue.cpp @@ -66,7 +66,7 @@ class DarkblueTheme: public Theme lcdDrawBitmapPattern(5, 7, icon, MENU_TITLE_COLOR); } else { - static BitmapBuffer * thumb = BitmapBuffer::load(getFilePath("topmenu_opentx.bmp")); + static BitmapBuffer * thumb = BitmapBuffer::load(getFilePath("topmenu_opentx.png")); lcd->drawBitmap(5, 7, thumb); } diff --git a/radio/src/gui/horus/themes/default.cpp b/radio/src/gui/horus/themes/default.cpp index 000caed28..ca98e771d 100644 --- a/radio/src/gui/horus/themes/default.cpp +++ b/radio/src/gui/horus/themes/default.cpp @@ -68,7 +68,7 @@ class DefaultTheme: public Theme virtual void drawBackground() const { - static BitmapBuffer * backgroundBitmap = BitmapBuffer::load(getThemePath("mainbg.bmp")); + static BitmapBuffer * backgroundBitmap = BitmapBuffer::load(getThemePath("mainbg.png")); if (backgroundBitmap) { lcd->drawBitmap(0, 0, backgroundBitmap); } @@ -80,10 +80,8 @@ class DefaultTheme: public Theme virtual void drawAboutBackground() const { - static BitmapBuffer * backgroundBitmap = BitmapBuffer::load(getThemePath("aboutbg.bmp")); - if (backgroundBitmap) { - lcd->drawBitmap(0, 0, backgroundBitmap); - } + static BitmapBuffer * backgroundBitmap = BitmapBuffer::load(getThemePath("aboutbg.png")); + lcd->drawBitmap(0, 0, backgroundBitmap); } virtual void drawTopbarBackground(const uint8_t * icon) const diff --git a/radio/src/gui/horus/view_main.cpp b/radio/src/gui/horus/view_main.cpp index 7ed03682c..7541030cc 100644 --- a/radio/src/gui/horus/view_main.cpp +++ b/radio/src/gui/horus/view_main.cpp @@ -29,7 +29,7 @@ #define TRIM_LEN 80 #define POTS_LINE_Y 252 -Layout * customScreens[MAX_CUSTOM_SCREENS]; +Layout * customScreens[MAX_CUSTOM_SCREENS] = { 0, 0, 0, 0, 0 }; Topbar * topbar; void drawMainPots() diff --git a/radio/src/gui/horus/widgets.cpp b/radio/src/gui/horus/widgets.cpp index 813cb78d2..c5f517819 100644 --- a/radio/src/gui/horus/widgets.cpp +++ b/radio/src/gui/horus/widgets.cpp @@ -52,8 +52,8 @@ void drawTopbarDatetime() #define STICK_PANEL_WIDTH 68 void drawStick(coord_t x, coord_t y, int16_t xval, int16_t yval) { - lcd->drawAlphaBitmap(x, y, &ALPHA_STICK_BACKGROUND); - lcd->drawAlphaBitmap(x + 2 + STICK_PANEL_WIDTH/2 + STICK_PANEL_WIDTH/2 * xval/RESX, y + 2 + STICK_PANEL_WIDTH/2 - STICK_PANEL_WIDTH/2 * yval/RESX, &ALPHA_STICK_POINTER); + lcd->drawBitmap(x, y, &ALPHA_STICK_BACKGROUND); + lcd->drawBitmap(x + 2 + STICK_PANEL_WIDTH/2 + STICK_PANEL_WIDTH/2 * xval/RESX, y + 2 + STICK_PANEL_WIDTH/2 - STICK_PANEL_WIDTH/2 * yval/RESX, &ALPHA_STICK_POINTER); } #include "alpha_button_on.lbm" @@ -75,9 +75,9 @@ void drawButton(coord_t x, coord_t y, const char * label, LcdFlags attr) lcdDrawText(x+padding+8, y, label, TEXT_COLOR); } if (attr & BUTTON_OFF) - lcd->drawAlphaBitmap(x-6, y+3, &ALPHA_BUTTON_OFF); + lcd->drawBitmap(x-6, y+3, &ALPHA_BUTTON_OFF); else if (attr & BUTTON_ON) - lcd->drawAlphaBitmap(x-6, y+3, &ALPHA_BUTTON_ON); + lcd->drawBitmap(x-6, y+3, &ALPHA_BUTTON_ON); } void drawCheckBox(coord_t x, coord_t y, uint8_t value, LcdFlags attr) @@ -424,23 +424,24 @@ int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int void drawSleepBitmap() { lcd->clear(); - const BitmapBuffer * bitmap = BitmapBuffer::load(getThemePath("sleep.bmp")); + const BitmapBuffer * bitmap = BitmapBuffer::load(getThemePath("sleep.png")); if (bitmap) { lcd->drawBitmap((LCD_W-bitmap->getWidth())/2, (LCD_H-bitmap->getHeight())/2, bitmap); } lcdRefresh(); } -#include "alpha_shutdown.lbm" - #define SHUTDOWN_CIRCLE_DIAMETER 150 void drawShutdownBitmap(uint32_t index) { static uint32_t last_index = 0xffffffff; + static const BitmapBuffer * shutdown = BitmapBuffer::load(getThemePath("shutdown.png")); if (index < last_index) { theme->drawBackground(); - lcd->drawAlphaBitmap((LCD_W-ALPHA_SHUTDOWN.getWidth())/2, (LCD_H-ALPHA_SHUTDOWN.getHeight())/2, &ALPHA_SHUTDOWN); + if (shutdown) { + lcd->drawBitmap((LCD_W-shutdown->getWidth())/2, (LCD_H-shutdown->getHeight())/2, shutdown); + } lcdStoreBackupBuffer(); } else { diff --git a/radio/src/gui/horus/widgets/modelbmp.cpp b/radio/src/gui/horus/widgets/modelbmp.cpp index 02e2dc199..cbb76ec7c 100644 --- a/radio/src/gui/horus/widgets/modelbmp.cpp +++ b/radio/src/gui/horus/widgets/modelbmp.cpp @@ -41,7 +41,7 @@ class ModelBitmapWidget: public Widget void refreshBuffer() { delete buffer; - buffer = new BitmapBuffer(zone.w, zone.h); + buffer = new BitmapBuffer(BMP_RGB565, zone.w, zone.h); if (buffer) { buffer->drawBitmap(0, 0, lcd, zone.x, zone.y, zone.w, zone.h); GET_FILENAME(filename, BITMAPS_PATH, g_model.header.bitmap, BITMAPS_EXT); @@ -82,3 +82,4 @@ class ModelBitmapWidget: public Widget }; BaseWidgetFactory modelBitmapWidget("ModelBmp", NULL); +const WidgetFactory * defaultWidget = &modelBitmapWidget; diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 95cbeef34..a9b440902 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -454,6 +454,15 @@ void modelDefault(uint8_t id) g_model.header.name[5] = '\033' + id/10; g_model.header.name[6] = '\033' + id%10; #endif + +#if defined(COLORLCD) + extern const LayoutFactory * defaultLayout; + delete customScreens[0]; + customScreens[0] = defaultLayout->create(&g_model.screenData[0].layoutData); + strcpy(g_model.screenData[0].layoutName, "Layout2P1"); + extern const WidgetFactory * defaultWidget; + customScreens[0]->createWidget(0, defaultWidget); +#endif } #if defined(VIRTUALINPUTS) diff --git a/radio/src/targets/horus/board_horus.h b/radio/src/targets/horus/board_horus.h index be66a8f4c..cc9fc16a9 100644 --- a/radio/src/targets/horus/board_horus.h +++ b/radio/src/targets/horus/board_horus.h @@ -261,7 +261,8 @@ void lcdInit(void); void lcdRefresh(void); void DMAFillRect(uint16_t * dest, uint16_t destw, uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color); void DMACopyBitmap(uint16_t * dest, uint16_t destw, uint16_t x, uint16_t y, const uint16_t * src, uint16_t srcw, uint16_t srcx, uint16_t srcy, uint16_t w, uint16_t h); -void DMACopyAlphaBitmap(uint16_t * dest, uint16_t destw, uint16_t x, uint16_t y, const uint16_t * src, uint16_t srcw, uint16_t h); +void DMACopyAlphaBitmap(uint16_t * dest, uint16_t destw, uint16_t x, uint16_t y, const uint16_t * src, uint16_t srcw, uint16_t srcx, uint16_t srcy, uint16_t w, uint16_t h); +void DMABitmapConvert(uint16_t * dest, const uint8_t * src, uint16_t w, uint16_t h, uint32_t format); void lcdStoreBackupBuffer(void); int lcdRestoreBackupBuffer(void); diff --git a/radio/src/targets/horus/lcd_driver.cpp b/radio/src/targets/horus/lcd_driver.cpp index b8888ba8a..afea6185e 100644 --- a/radio/src/targets/horus/lcd_driver.cpp +++ b/radio/src/targets/horus/lcd_driver.cpp @@ -380,8 +380,8 @@ void LCD_Init(void) LCD_ControlLight(100); } -BitmapBuffer lcdBuffer1(LCD_W, LCD_H, (uint16_t *)LCD_FIRST_FRAME_BUFFER); -BitmapBuffer lcdBuffer2(LCD_W, LCD_H, (uint16_t *)LCD_SECOND_FRAME_BUFFER); +BitmapBuffer lcdBuffer1(BMP_RGB565, LCD_W, LCD_H, (uint16_t *)LCD_FIRST_FRAME_BUFFER); +BitmapBuffer lcdBuffer2(BMP_RGB565, LCD_W, LCD_H, (uint16_t *)LCD_SECOND_FRAME_BUFFER); BitmapBuffer * lcd = &lcdBuffer1; /** @@ -469,7 +469,7 @@ void DMACopyBitmap(uint16_t * dest, uint16_t destw, uint16_t x, uint16_t y, cons DMA2D_InitTypeDef DMA2D_InitStruct; DMA2D_InitStruct.DMA2D_Mode = DMA2D_M2M; DMA2D_InitStruct.DMA2D_CMode = DMA2D_RGB565; - DMA2D_InitStruct.DMA2D_OutputMemoryAdd = CONVERT_PTR_UINT(dest) + 2*(destw*y + x); + DMA2D_InitStruct.DMA2D_OutputMemoryAdd = CONVERT_PTR_UINT(dest + y*destw + x); DMA2D_InitStruct.DMA2D_OutputGreen = 0; DMA2D_InitStruct.DMA2D_OutputBlue = 0; DMA2D_InitStruct.DMA2D_OutputRed = 0; @@ -495,27 +495,27 @@ void DMACopyBitmap(uint16_t * dest, uint16_t destw, uint16_t x, uint16_t y, cons while (DMA2D_GetFlagStatus(DMA2D_FLAG_TC) == RESET); } -void DMACopyAlphaBitmap(uint16_t * dest, uint16_t destw, uint16_t x, uint16_t y, const uint16_t * src, uint16_t srcw, uint16_t h) +void DMACopyAlphaBitmap(uint16_t * dest, uint16_t destw, uint16_t x, uint16_t y, const uint16_t * src, uint16_t srcw, uint16_t srcx, uint16_t srcy, uint16_t w, uint16_t h) { DMA2D_DeInit(); DMA2D_InitTypeDef DMA2D_InitStruct; DMA2D_InitStruct.DMA2D_Mode = DMA2D_M2M_BLEND; DMA2D_InitStruct.DMA2D_CMode = DMA2D_RGB565; - DMA2D_InitStruct.DMA2D_OutputMemoryAdd = CONVERT_PTR_UINT(dest) + 2*(destw*y + x); + DMA2D_InitStruct.DMA2D_OutputMemoryAdd = CONVERT_PTR_UINT(dest + y*destw + x); DMA2D_InitStruct.DMA2D_OutputGreen = 0; DMA2D_InitStruct.DMA2D_OutputBlue = 0; DMA2D_InitStruct.DMA2D_OutputRed = 0; DMA2D_InitStruct.DMA2D_OutputAlpha = 0; - DMA2D_InitStruct.DMA2D_OutputOffset = destw - srcw; + DMA2D_InitStruct.DMA2D_OutputOffset = destw - w; DMA2D_InitStruct.DMA2D_NumberOfLine = h; - DMA2D_InitStruct.DMA2D_PixelPerLine = srcw; + DMA2D_InitStruct.DMA2D_PixelPerLine = w; DMA2D_Init(&DMA2D_InitStruct); DMA2D_FG_InitTypeDef DMA2D_FG_InitStruct; DMA2D_FG_StructInit(&DMA2D_FG_InitStruct); - DMA2D_FG_InitStruct.DMA2D_FGMA = CONVERT_PTR_UINT(src); - DMA2D_FG_InitStruct.DMA2D_FGO = 0; + DMA2D_FG_InitStruct.DMA2D_FGMA = CONVERT_PTR_UINT(src + srcy*srcw + srcx); + DMA2D_FG_InitStruct.DMA2D_FGO = srcw - w; DMA2D_FG_InitStruct.DMA2D_FGCM = CM_ARGB4444; DMA2D_FG_InitStruct.DMA2D_FGPFC_ALPHA_MODE = NO_MODIF_ALPHA_VALUE; DMA2D_FG_InitStruct.DMA2D_FGPFC_ALPHA_VALUE = 0; @@ -523,8 +523,8 @@ void DMACopyAlphaBitmap(uint16_t * dest, uint16_t destw, uint16_t x, uint16_t y, DMA2D_BG_InitTypeDef DMA2D_BG_InitStruct; DMA2D_BG_StructInit(&DMA2D_BG_InitStruct); - DMA2D_BG_InitStruct.DMA2D_BGMA = CONVERT_PTR_UINT(dest) + 2*(destw*y + x); - DMA2D_BG_InitStruct.DMA2D_BGO = destw - srcw; + DMA2D_BG_InitStruct.DMA2D_BGMA = CONVERT_PTR_UINT(dest + y*destw + x); + DMA2D_BG_InitStruct.DMA2D_BGO = destw - w; DMA2D_BG_InitStruct.DMA2D_BGCM = CM_RGB565; DMA2D_BG_InitStruct.DMA2D_BGPFC_ALPHA_MODE = NO_MODIF_ALPHA_VALUE; DMA2D_BG_InitStruct.DMA2D_BGPFC_ALPHA_VALUE = 0; @@ -537,6 +537,39 @@ void DMACopyAlphaBitmap(uint16_t * dest, uint16_t destw, uint16_t x, uint16_t y, while (DMA2D_GetFlagStatus(DMA2D_FLAG_TC) == RESET); } +void DMABitmapConvert(uint16_t * dest, const uint8_t * src, uint16_t w, uint16_t h, uint32_t format) +{ + DMA2D_DeInit(); + + DMA2D_InitTypeDef DMA2D_InitStruct; + DMA2D_InitStruct.DMA2D_Mode = DMA2D_M2M_PFC; + DMA2D_InitStruct.DMA2D_CMode = format; + DMA2D_InitStruct.DMA2D_OutputMemoryAdd = CONVERT_PTR_UINT(dest); + DMA2D_InitStruct.DMA2D_OutputGreen = 0; + DMA2D_InitStruct.DMA2D_OutputBlue = 0; + DMA2D_InitStruct.DMA2D_OutputRed = 0; + DMA2D_InitStruct.DMA2D_OutputAlpha = 0; + DMA2D_InitStruct.DMA2D_OutputOffset = 0; + DMA2D_InitStruct.DMA2D_NumberOfLine = h; + DMA2D_InitStruct.DMA2D_PixelPerLine = w; + DMA2D_Init(&DMA2D_InitStruct); + + DMA2D_FG_InitTypeDef DMA2D_FG_InitStruct; + DMA2D_FG_StructInit(&DMA2D_FG_InitStruct); + DMA2D_FG_InitStruct.DMA2D_FGMA = CONVERT_PTR_UINT(src); + DMA2D_FG_InitStruct.DMA2D_FGO = 0; + DMA2D_FG_InitStruct.DMA2D_FGCM = CM_ARGB8888; + DMA2D_FG_InitStruct.DMA2D_FGPFC_ALPHA_MODE = REPLACE_ALPHA_VALUE; + DMA2D_FG_InitStruct.DMA2D_FGPFC_ALPHA_VALUE = 0; + DMA2D_FGConfig(&DMA2D_FG_InitStruct); + + /* Start Transfer */ + DMA2D_StartTransfer(); + + /* Wait for CTC Flag activation */ + while (DMA2D_GetFlagStatus(DMA2D_FLAG_TC) == RESET); +} + void DMAcopy(void * src, void * dest, int len) { DMA2D_DeInit(); @@ -572,12 +605,12 @@ void DMAcopy(void * src, void * dest, int len) void lcdStoreBackupBuffer() { - DMAcopy(lcd->data, LCD_BACKUP_FRAME_BUFFER, DISPLAY_BUFFER_SIZE); + DMAcopy(lcd->getData(), LCD_BACKUP_FRAME_BUFFER, DISPLAY_BUFFER_SIZE); } int lcdRestoreBackupBuffer() { - DMAcopy(LCD_BACKUP_FRAME_BUFFER, lcd->data, DISPLAY_BUFFER_SIZE); + DMAcopy(LCD_BACKUP_FRAME_BUFFER, lcd->getData(), DISPLAY_BUFFER_SIZE); return 1; } diff --git a/radio/util/img2lbm.py b/radio/util/img2lbm.py index b23b15a6e..a5e0b24ef 100755 --- a/radio/util/img2lbm.py +++ b/radio/util/img2lbm.py @@ -49,7 +49,7 @@ with open(sys.argv[2], "w") as f: val = ((Qt.qAlpha(pixel) // 16) << 12) + ((Qt.qRed(pixel) // 16) << 8) + ((Qt.qGreen(pixel) // 16) << 4) + ((Qt.qBlue(pixel) // 16) << 0) values.append(str(val)) f.write("const uint16_t __%s[] __ALIGNED = { %s };\n" % (constant, ",".join(values))) - f.write("const Bitmap %s(%d, %d, __%s);\n" % (constant, width, height, constant)) + f.write("const Bitmap %s(BMP_ARGB4444, %d, %d, __%s);\n" % (constant, width, height, constant)) elif what == "5/6/5": constant = sys.argv[2].upper()[:-4] values = [] @@ -59,7 +59,7 @@ with open(sys.argv[2], "w") as f: val = ((Qt.qRed(pixel) >> 3) << 11) + ((Qt.qGreen(pixel) >> 2) << 5) + ((Qt.qBlue(pixel) >> 3) << 0) values.append(str(val)) f.write("const uint16_t __%s[] __ALIGNED = { %s };\n" % (constant, ",".join(values))) - f.write("const Bitmap %s(%d, %d, __%s);\n" % (constant, width, height, constant)) + f.write("const Bitmap %s(BMP_RGB565, %d, %d, __%s);\n" % (constant, width, height, constant)) elif what == "5/6/5/8": colors = [] writeSize(f, width, height)