From b0f9d69f7c1f7ce71f4d98e4e86d0f4df940ab15 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 25 Jun 2016 19:39:29 +0200 Subject: [PATCH] [Horus] New model selection menu started --- .../horus/THEMES/Default/mask_library.png | Bin 1052 -> 0 bytes .../default.png => modelsel/icon_default.png} | Bin .../icon_favorites.png} | Bin .../mask_iconback.png} | Bin .../mask_modelqty.png} | Bin .../mask_moveback.png} | Bin .../mask_moveico.png} | Bin .../mask_sdfree.png} | Bin .../horus/mask_library_category_index.png | Bin 293 -> 0 bytes radio/src/gui/horus/bitmaps.cpp | 6 +- radio/src/gui/horus/bitmaps.h | 3 +- radio/src/gui/horus/menu_model_select.cpp | 218 ++++++++---------- radio/src/gui/horus/menus.h | 1 - radio/src/gui/horus/themes/default.cpp | 34 ++- 14 files changed, 122 insertions(+), 140 deletions(-) delete mode 100644 radio/sdcard/horus/THEMES/Default/mask_library.png rename radio/sdcard/horus/THEMES/Default/{mask_mlib/catico/default.png => modelsel/icon_default.png} (100%) rename radio/sdcard/horus/THEMES/Default/{mask_mlib/catico/favorites.png => modelsel/icon_favorites.png} (100%) rename radio/sdcard/horus/THEMES/Default/{mask_mlib/mask_mlib_catimgback.png => modelsel/mask_iconback.png} (100%) rename radio/sdcard/horus/THEMES/Default/{mask_mlib/mask_mlib_modelqty.png => modelsel/mask_modelqty.png} (100%) rename radio/sdcard/horus/THEMES/Default/{mask_mlib/mask_mlib_moveback.png => modelsel/mask_moveback.png} (100%) rename radio/sdcard/horus/THEMES/Default/{mask_mlib/mask_mlib_moveico.png => modelsel/mask_moveico.png} (100%) rename radio/sdcard/horus/THEMES/Default/{mask_mlib/mask_mlib_sdfree.png => modelsel/mask_sdfree.png} (100%) delete mode 100644 radio/src/bitmaps/horus/mask_library_category_index.png diff --git a/radio/sdcard/horus/THEMES/Default/mask_library.png b/radio/sdcard/horus/THEMES/Default/mask_library.png deleted file mode 100644 index 237883fc5ac1488cab0953fbc7ee6190bfeb505a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1052 zcmV+%1mpXOP)a zgUe`9K~akdgK8oD7r`{Nmp0*|1RN-VViDpDr2L_E(EfNuxS z^CU?U>AF5>TN?YyW5Y0Tc6NrNqa)PobpU|N(Baukh_E8kYN-{)5V}(M2g25nME*ErNhuiJ$ zJL%=+C9bcphw|3c^71lPS6BON&1MtR)6*~v1BF5XztZV603aHT+Mu;s4UdnHn3|dz z3HZr@yks1e!t(g!OF@CCMG5@KR-VbIF(A_{QTS& zFD66Nw0E$Xdrft_U1TyD6pKZ8z21?)l}ZJHKmgrt7Y>KRvYQM|(=h(kVu!;4pU;PK zxjYgS0LtYud_G?v^rOaEmIctOG9MKVhmp(WMh53{IfTPuo84rvEc*^Fl}fgWp->3< ze12qbKA%S@6tdY(2FtP-7X$%7FCd!DX5Yj=>2b5!L@Jd600@GB@jxH|p66j029n9- ze+Et_lQ0YeJkR%9BqAb7lB}xqyHr&rr_)KDPG^W()KjO^A*a)6D}!d0k|gOpSJ!Ga z1cO1;>vhPojJ35j>!g#Dli1ta8#;-+yu2VDkE79OShkCc3#_lNgJBpH3I%vP9tFFte0cDZs=No~)-};#PE6tv%pJ;FYUk&~5`teVg&-5oh+WrB1 WXAvi_r33c>0000Ealo zF|l^yLf%#f0hi}8OtrI^1WFoQl?qH67I3aQc#&-$m&0Pe2?9t1{-nK7uR@-BXM-x=K z7A4#^yR+LM^!nCC({F8iYIFYod%MreKB{<19KYCip!&Sc`7*!Cd7Ia*o?8(b+9L4g j-LHMm_vH&S{9xQ@;^D?}W!X-kYZ*LU{an^LB{Ts5AV6@Y diff --git a/radio/src/gui/horus/bitmaps.cpp b/radio/src/gui/horus/bitmaps.cpp index 8b2fcb18f..04c6cb5fc 100644 --- a/radio/src/gui/horus/bitmaps.cpp +++ b/radio/src/gui/horus/bitmaps.cpp @@ -100,10 +100,6 @@ const uint8_t LBM_ACTIVE_MODEL[] = { #include "mask_library_active_model.lbm" }; -const uint8_t LBM_LIBRARY_CURSOR[] = { -#include "mask_library_category_index.lbm" -}; - const uint8_t LBM_SCORE0[] = { #include "mask_library_score_0.lbm" }; @@ -183,3 +179,5 @@ const uint8_t LBM_SWIPE_LEFT[] = { const uint8_t LBM_SWIPE_RIGHT[] = { #include "mask_swipe_right.lbm" }; + +BitmapBuffer * modelselIconBitmap = NULL; diff --git a/radio/src/gui/horus/bitmaps.h b/radio/src/gui/horus/bitmaps.h index 78180ca4e..6411f2e7a 100644 --- a/radio/src/gui/horus/bitmaps.h +++ b/radio/src/gui/horus/bitmaps.h @@ -43,7 +43,6 @@ extern const uint8_t LBM_RSCALE[]; // Model selection icons 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[]; extern const uint8_t LBM_STAR0[]; @@ -72,4 +71,6 @@ extern const uint8_t LBM_SWIPE_CIRCLE[]; extern const uint8_t LBM_SWIPE_LEFT[]; extern const uint8_t LBM_SWIPE_RIGHT[]; +extern BitmapBuffer * modelselIconBitmap; + #endif // _BITMAPS_H_ diff --git a/radio/src/gui/horus/menu_model_select.cpp b/radio/src/gui/horus/menu_model_select.cpp index 2dd50fc6b..cbbf537c7 100644 --- a/radio/src/gui/horus/menu_model_select.cpp +++ b/radio/src/gui/horus/menu_model_select.cpp @@ -21,10 +21,11 @@ #include "opentx.h" #include "storage/modelslist.h" -#define CATEGORIES_WIDTH 140 +#define CATEGORIES_WIDTH 127 +#define MODELS_LEFT 147 +#define MODELS_COLUMN_WIDTH 162 enum ModelSelectMode { - MODE_SELECT_CATEGORY, MODE_SELECT_MODEL, MODE_RENAME_CATEGORY, }; @@ -39,13 +40,12 @@ ModelCell * currentModel; void drawCategory(coord_t y, const char * name, bool selected) { if (selected) { - lcdDrawSolidFilledRect(0, y-INVERT_VERT_MARGIN, CATEGORIES_WIDTH-1, INVERT_LINE_HEIGHT+2, HEADER_BGCOLOR); - lcdDrawBitmapPattern(CATEGORIES_WIDTH-14, y+2, LBM_LIBRARY_CURSOR, MENU_TITLE_COLOR); - if (selectMode == MODE_SELECT_CATEGORY) { - drawShadow(0, y-INVERT_VERT_MARGIN, CATEGORIES_WIDTH-2, INVERT_LINE_HEIGHT+2); - } + lcdDrawSolidFilledRect(5, y-INVERT_VERT_MARGIN, CATEGORIES_WIDTH-10, INVERT_LINE_HEIGHT+2, TEXT_INVERTED_BGCOLOR); + lcdDrawText(10, y, name, TEXT_COLOR | INVERS); + } + else { + lcdDrawText(10, y, name, TEXT_COLOR); } - lcdDrawText(MENUS_MARGIN_LEFT, y, name, MENU_TITLE_COLOR); } void drawModel(coord_t x, coord_t y, ModelCell * model, bool current, bool selected) @@ -62,10 +62,17 @@ void drawModel(coord_t x, coord_t y, ModelCell * model, bool current, bool selec uint16_t categoriesVerticalOffset = 0; uint16_t categoriesVerticalPosition = 0; -uint16_t modelsVerticalOffset = 0; -uint16_t modelsVerticalPosition = 0; -uint16_t modelsHorizontalPosition = 0; -#define MODEL_INDEX() (modelsVerticalPosition*2+modelsHorizontalPosition) +#define MODEL_INDEX() (menuVerticalPosition*2+menuHorizontalPosition) + +void setCurrentModel(unsigned int index) +{ + std::list::iterator it = currentCategory->begin(); + std::advance(it, index); + currentModel = *it; + menuVerticalPosition = index / 2; + menuHorizontalPosition = index & 1; + menuVerticalOffset = limit(menuVerticalPosition-2, menuVerticalOffset, min(menuVerticalPosition, max(0, (currentCategory->size()-7)/2))); +} void setCurrentCategory(unsigned int index) { @@ -74,41 +81,11 @@ void setCurrentCategory(unsigned int index) std::advance(it, index); currentCategory = *it; categoriesVerticalPosition = index; - categoriesVerticalOffset = limit(categoriesVerticalPosition-9, categoriesVerticalOffset, min(categoriesVerticalPosition, max(0, modelslist.categories.size()-10))); -} - -void setCurrentModel(unsigned int index) -{ - std::list::iterator it = currentCategory->begin(); - std::advance(it, index); - currentModel = *it; - modelsVerticalPosition = index / 2; - modelsHorizontalPosition = index & 1; - modelsVerticalOffset = limit(modelsVerticalPosition-2, modelsVerticalOffset, min(modelsVerticalPosition, max(0, (currentCategory->size()-5)/2))); -} - -void onCategorySelectMenu(const char * result) -{ - if (result == STR_CREATE_MODEL) { - storageCheck(true); - currentModel = modelslist.addModel(currentCategory, createModel()); - selectMode = MODE_SELECT_MODEL; - setCurrentModel(currentCategory->size() - 1); - } - else if (result == STR_CREATE_CATEGORY) { - currentCategory = modelslist.createCategory(); - setCurrentCategory(modelslist.categories.size() - 1); - } - else if (result == STR_RENAME_CATEGORY) { - selectMode = MODE_RENAME_CATEGORY; - s_editMode = EDIT_MODIFY_STRING; - editNameCursorPos = 0; - } - else if (result == STR_DELETE_CATEGORY) { - modelslist.removeCategory(currentCategory); - modelslist.save(); - setCurrentCategory(currentCategoryIndex-1); - } + categoriesVerticalOffset = limit(categoriesVerticalPosition-4, categoriesVerticalOffset, min(categoriesVerticalPosition, max(0, modelslist.categories.size()-10))); + if (currentCategory->size() > 0) + setCurrentModel(0); + else + currentModel = NULL; } void onModelSelectMenu(const char * result) @@ -145,6 +122,20 @@ void onModelSelectMenu(const char * result) POPUP_WARNING("Invalid File"); } } + else if (result == STR_CREATE_CATEGORY) { + currentCategory = modelslist.createCategory(); + setCurrentCategory(modelslist.categories.size() - 1); + } + else if (result == STR_RENAME_CATEGORY) { + selectMode = MODE_RENAME_CATEGORY; + s_editMode = EDIT_MODIFY_STRING; + editNameCursorPos = 0; + } + else if (result == STR_DELETE_CATEGORY) { + modelslist.removeCategory(currentCategory); + modelslist.save(); + setCurrentCategory(currentCategoryIndex-1); + } } void initModelsList() @@ -165,7 +156,7 @@ void initModelsList() setCurrentCategory(0); } - modelsVerticalOffset = 0; + menuVerticalOffset = 0; found = false; index = 0; for (ModelsCategory::iterator it = currentCategory->begin(); it != currentCategory->end(); ++it, ++index) { @@ -206,144 +197,121 @@ bool menuModelSelect(evt_t event) case EVT_KEY_FIRST(KEY_EXIT): switch (selectMode) { - case MODE_SELECT_CATEGORY: + case MODE_SELECT_MODEL: chainMenu(menuMainView); return false; - case MODE_SELECT_MODEL: - selectMode = MODE_SELECT_CATEGORY; - break; } break; - case EVT_KEY_BREAK(KEY_ENTER): - case EVT_KEY_FIRST(KEY_RIGHT): - if (selectMode == MODE_SELECT_CATEGORY && currentCategory->size() > 0) { - selectMode = MODE_SELECT_MODEL; - setCurrentModel(0); - } + case EVT_KEY_FIRST(KEY_PGUP): + if (categoriesVerticalPosition == 0) + categoriesVerticalPosition = modelslist.categories.size() - 1; + else + categoriesVerticalPosition -= 1; + setCurrentCategory(categoriesVerticalPosition); + putEvent(EVT_REFRESH); break; - case EVT_KEY_FIRST(KEY_LEFT): - if (selectMode == MODE_SELECT_MODEL) { - selectMode = MODE_SELECT_CATEGORY; - } + case EVT_KEY_FIRST(KEY_PGDN): + categoriesVerticalPosition += 1; + if (categoriesVerticalPosition >= modelslist.categories.size()) + categoriesVerticalPosition = 0; + setCurrentCategory(categoriesVerticalPosition); + putEvent(EVT_REFRESH); break; + + /*if (selectMode == MODE_SELECT_CATEGORY) { + menuVerticalPosition = categoriesVerticalPosition; + menuVerticalOffset = categoriesVerticalOffset; + if (navigate(event, modelslist.categories.size(), 10)) { + categoriesVerticalPosition = menuVerticalPosition; + categoriesVerticalOffset = menuVerticalOffset; + putEvent(EVT_REFRESH); + setCurrentCategory(categoriesVerticalPosition); + } + }*/ + case EVT_KEY_LONG(KEY_ENTER): - if (selectMode == MODE_SELECT_CATEGORY) { + if (selectMode == MODE_SELECT_MODEL) { killEvents(event); + if (currentModel && currentModel != modelslist.currentModel) { + POPUP_MENU_ADD_ITEM(STR_SELECT_MODEL); + } POPUP_MENU_ADD_ITEM(STR_CREATE_MODEL); + if (currentModel) { + POPUP_MENU_ADD_ITEM(STR_DUPLICATE_MODEL); + } POPUP_MENU_ADD_ITEM(STR_CREATE_CATEGORY); POPUP_MENU_ADD_ITEM(STR_RENAME_CATEGORY); - if (currentCategoryIndex > 0) { + if (modelslist.categories.size() > 1) { POPUP_MENU_ADD_ITEM(STR_DELETE_CATEGORY); } - POPUP_MENU_START(onCategorySelectMenu); - } - else if (selectMode == MODE_SELECT_MODEL) { - killEvents(event); - ModelHeader header; - const char * error = readModel(currentModel->name, (uint8_t *)&header, sizeof(header)); - if (!error) { - if (currentModel != modelslist.currentModel) { - POPUP_MENU_ADD_ITEM(STR_SELECT_MODEL); - } - POPUP_MENU_ADD_ITEM(STR_CREATE_MODEL); - POPUP_MENU_ADD_ITEM(STR_DUPLICATE_MODEL); - } // POPUP_MENU_ADD_SD_ITEM(STR_BACKUP_MODEL); // POPUP_MENU_ADD_ITEM(STR_MOVE_MODEL); // POPUP_MENU_ADD_ITEM(STR_CHANGE_CATEGORY); - if (currentModel != modelslist.currentModel) { + if (currentModel && currentModel != modelslist.currentModel) { POPUP_MENU_ADD_ITEM(STR_DELETE_MODEL); } // POPUP_MENU_ADD_ITEM(STR_RESTORE_MODEL); POPUP_MENU_START(onModelSelectMenu); } break; + } - if (currentCategory && currentCategory->size() == 0) { - selectMode = MODE_SELECT_CATEGORY; - currentModel = NULL; - } - - // Header - theme->drawTopbarBackground(ICON_LIBRARY); - - // Body - lcdDrawSolidFilledRect(0, MENU_HEADER_HEIGHT, CATEGORIES_WIDTH, LCD_H-MENU_HEADER_HEIGHT-MENU_FOOTER_HEIGHT, TEXT_DISABLE_COLOR); - lcdDrawSolidFilledRect(CATEGORIES_WIDTH, MENU_HEADER_HEIGHT, LCD_W-CATEGORIES_WIDTH, LCD_H-MENU_HEADER_HEIGHT-MENU_FOOTER_HEIGHT, TEXT_BGCOLOR); - - // Footer - lcdDrawSolidFilledRect(0, MENU_FOOTER_TOP, LCD_W, MENU_FOOTER_HEIGHT, HEADER_BGCOLOR); + lcdDrawSolidFilledRect(0, 0, LCD_W, LCD_H, TEXT_BGCOLOR); + lcd->drawBitmap(0, 0, modelselIconBitmap); // Categories int index = 0; - coord_t y = MENU_HEADER_HEIGHT+3; - drawVerticalScrollbar(CATEGORIES_WIDTH-1, MENU_HEADER_HEIGHT, MENU_FOOTER_TOP-MENU_HEADER_HEIGHT, categoriesVerticalOffset, modelslist.categories.size(), 10); + coord_t y = 97; + drawVerticalScrollbar(CATEGORIES_WIDTH-1, MENU_HEADER_HEIGHT, MENU_FOOTER_TOP-MENU_HEADER_HEIGHT, categoriesVerticalOffset, modelslist.categories.size(), 5); for (std::list::iterator it = modelslist.categories.begin(); it != modelslist.categories.end(); ++it, ++index) { - if (index >= categoriesVerticalOffset && index < categoriesVerticalOffset+10) { + if (index >= categoriesVerticalOffset && index < categoriesVerticalOffset+5) { if (selectMode == MODE_RENAME_CATEGORY && currentCategory == *it) { lcdDrawSolidFilledRect(0, y-INVERT_VERT_MARGIN+1, CATEGORIES_WIDTH-2, INVERT_LINE_HEIGHT, TEXT_BGCOLOR); editName(MENUS_MARGIN_LEFT, y, currentCategory->name, LEN_MODEL_FILENAME, event, 1, 0); if (s_editMode == 0 || event == EVT_KEY_BREAK(KEY_EXIT)) { modelslist.save(); - selectMode = MODE_SELECT_CATEGORY; + selectMode = MODE_SELECT_MODEL; putEvent(EVT_REFRESH); } } else { drawCategory(y, (*it)->name, currentCategory==*it); } - y += FH; - } - } - - if (selectMode == MODE_SELECT_CATEGORY) { - menuVerticalPosition = categoriesVerticalPosition; - menuVerticalOffset = categoriesVerticalOffset; - if (navigate(event, modelslist.categories.size(), 10)) { - categoriesVerticalPosition = menuVerticalPosition; - categoriesVerticalOffset = menuVerticalOffset; - putEvent(EVT_REFRESH); - setCurrentCategory(categoriesVerticalPosition); + lcdDrawSolidHorizontalLine(5, y+FH+3, CATEGORIES_WIDTH-10, LINE_COLOR); + y += FH+7; } } // Models index = 0; - y = MENU_HEADER_HEIGHT+7; + y = 5; for (ModelsCategory::iterator it = currentCategory->begin(); it != currentCategory->end(); ++it, ++index) { - if (index >= modelsVerticalOffset*2 && index < (modelsVerticalOffset+3)*2) { - bool selected = (selectMode==MODE_SELECT_MODEL && index==modelsVerticalPosition*2+modelsHorizontalPosition); + if (index >= menuVerticalOffset*2 && index < (menuVerticalOffset+4)*2) { + bool selected = (selectMode==MODE_SELECT_MODEL && index==menuVerticalPosition*2+menuHorizontalPosition); bool current = !strncmp((*it)->name, g_eeGeneral.currModelFilename, LEN_MODEL_FILENAME); if (index & 1) { - drawModel(CATEGORIES_WIDTH+MENUS_MARGIN_LEFT+162, y, *it, current, selected); + drawModel(MODELS_LEFT + MODELS_COLUMN_WIDTH, y, *it, current, selected); y += 66; } else { - drawModel(CATEGORIES_WIDTH+MENUS_MARGIN_LEFT+1, y, *it, current, selected); + drawModel(MODELS_LEFT, y, *it, current, selected); } } } - if (selectMode == MODE_SELECT_MODEL) { - menuVerticalPosition = modelsVerticalPosition; - menuHorizontalPosition = modelsHorizontalPosition; - menuVerticalOffset = modelsVerticalOffset; - if (navigate(event, index, 3, 2)) { - modelsVerticalPosition = menuVerticalPosition; - modelsHorizontalPosition = menuHorizontalPosition; - modelsVerticalOffset = menuVerticalOffset; + + // Navigation + if (selectMode == MODE_SELECT_MODEL && currentModel) { + if (navigate(event, index, 4, 2)) { putEvent(EVT_REFRESH); setCurrentModel(MODEL_INDEX()); } - if (currentModel) { - lcd->drawText(CATEGORIES_WIDTH+MENUS_MARGIN_LEFT, MENU_FOOTER_TOP+2, currentModel->name, TEXT_INVERTED_COLOR); - } } - drawVerticalScrollbar(DEFAULT_SCROLLBAR_X, MENU_HEADER_HEIGHT+7, MENU_FOOTER_TOP-MENU_HEADER_HEIGHT-15, modelsVerticalOffset, (index+1)/2, 3); + drawVerticalScrollbar(DEFAULT_SCROLLBAR_X, 7, LCD_H-15, menuVerticalOffset, (index+1)/2, 4); return true; } diff --git a/radio/src/gui/horus/menus.h b/radio/src/gui/horus/menus.h index 41a6d8d04..5398571d6 100644 --- a/radio/src/gui/horus/menus.h +++ b/radio/src/gui/horus/menus.h @@ -81,7 +81,6 @@ enum MenuIcons { ICON_MODEL_SPECIAL_FUNCTIONS, ICON_MODEL_LUA_SCRIPTS, ICON_MODEL_TELEMETRY, - ICON_LIBRARY, ICON_THEME, ICON_THEME_SETUP, ICON_THEME_VIEW1, diff --git a/radio/src/gui/horus/themes/default.cpp b/radio/src/gui/horus/themes/default.cpp index 332243281..47c46ccd1 100644 --- a/radio/src/gui/horus/themes/default.cpp +++ b/radio/src/gui/horus/themes/default.cpp @@ -125,7 +125,6 @@ class DefaultTheme: public Theme loadMenuIcon(ICON_THEME_VIEW4, "mask_theme_view4.png"); loadMenuIcon(ICON_THEME_VIEW5, "mask_theme_view5.png"); loadMenuIcon(ICON_THEME_ADD_VIEW, "mask_theme_add_view.png"); - loadMenuIcon(ICON_LIBRARY, "mask_library.png"); loadMenuIcon(ICON_MONITOR, "mask_monitor.png"); loadMenuIcon(ICON_MONITOR_CHANNELS1, "mask_monitor_channels1.png"); loadMenuIcon(ICON_MONITOR_CHANNELS2, "mask_monitor_channels2.png"); @@ -145,14 +144,31 @@ class DefaultTheme: public Theme currentMenuBackground->drawMask(0, 0, shadow, TRIM_SHADOW_COLOR); currentMenuBackground->drawMask(10, 39, dot, MENU_TITLE_COLOR); - delete topleftBitmap; - topleftBitmap = NULL; - BitmapBuffer * mask = BitmapBuffer::loadMask(getThemePath("topleft.png")); - if (mask) { - topleftBitmap = new BitmapBuffer(BMP_RGB565, mask->getWidth(), MENU_HEADER_HEIGHT); - topleftBitmap->clear(HEADER_BGCOLOR); - topleftBitmap->drawMask(0, 0, mask, TITLE_BGCOLOR); - delete mask; + { + delete topleftBitmap; + topleftBitmap = NULL; + BitmapBuffer * mask = BitmapBuffer::loadMask(getThemePath("topleft.png")); + if (mask) { + topleftBitmap = new BitmapBuffer(BMP_RGB565, mask->getWidth(), MENU_HEADER_HEIGHT); + topleftBitmap->clear(HEADER_BGCOLOR); + topleftBitmap->drawMask(0, 0, mask, TITLE_BGCOLOR); + delete mask; + } + } + + { + delete modelselIconBitmap; + modelselIconBitmap = NULL; + BitmapBuffer * mask = BitmapBuffer::loadMask(getThemePath("modelsel/mask_iconback.png")); + if (mask) { + modelselIconBitmap = new BitmapBuffer(BMP_RGB565, mask->getWidth(), mask->getHeight()); + modelselIconBitmap->clear(TEXT_BGCOLOR); + modelselIconBitmap->drawMask(0, 0, mask, TITLE_BGCOLOR); + BitmapBuffer * bitmap = BitmapBuffer::load(getThemePath("modelsel/icon_default.png")); + modelselIconBitmap->drawBitmap(25, 8, bitmap); + delete bitmap; + delete mask; + } } delete background;