GUI: Icons and IconsAnimation refactoring. Switch assets to new Icon Api (#566)

* GUI: Icons and IconsAnimation refactoring. Switch assets to new Icon API.
* Gui: icon and animation draw now do not accept null pointer
* Format Sources
* Fix no debug build
* Furi: stricter checks in memmgr
This commit is contained in:
あく
2021-07-07 11:57:49 +03:00
committed by GitHub
parent 607e873404
commit a7283280ef
82 changed files with 1093 additions and 1053 deletions

View File

@@ -101,11 +101,11 @@ static void button_menu_view_draw_callback(Canvas* canvas, void* _model) {
ButtonMenuItemArray_it_t it;
if(active_screen > 0) {
canvas_draw_icon_name(canvas, 28, 1, I_IrdaArrowUp_4x8);
canvas_draw_icon(canvas, 28, 1, &I_IrdaArrowUp_4x8);
}
if(max_screen > active_screen) {
canvas_draw_icon_name(canvas, 28, 123, I_IrdaArrowDown_4x8);
canvas_draw_icon(canvas, 28, 123, &I_IrdaArrowDown_4x8);
}
canvas_draw_str_aligned(canvas, 32, 10, AlignCenter, AlignCenter, model->header);

View File

@@ -22,8 +22,8 @@ LIST_DEF(LabelList, LabelElement, M_POD_OPLIST)
typedef struct {
uint16_t x;
uint16_t y;
IconName name;
IconName name_selected;
const Icon* name;
const Icon* name_selected;
} IconElement;
typedef struct ButtonItem {
@@ -158,8 +158,8 @@ void button_panel_add_item(
uint16_t matrix_place_y,
uint16_t x,
uint16_t y,
IconName icon_name,
IconName icon_name_selected,
const Icon* icon_name,
const Icon* icon_name_selected,
ButtonItemCallback callback,
void* callback_context) {
furi_assert(button_panel);
@@ -199,11 +199,11 @@ static void button_panel_view_draw_callback(Canvas* canvas, void* _model) {
for(size_t x = 0; x < model->reserve_x; ++x) {
for(size_t y = 0; y < model->reserve_y; ++y) {
ButtonItem* button_item = *button_panel_get_item(model, x, y);
IconName icon_name = button_item->icon.name;
const Icon* icon_name = button_item->icon.name;
if((model->selected_item_x == x) && (model->selected_item_y == y)) {
icon_name = button_item->icon.name_selected;
}
canvas_draw_icon_name(canvas, button_item->icon.x, button_item->icon.y, icon_name);
canvas_draw_icon(canvas, button_item->icon.x, button_item->icon.y, icon_name);
}
}

View File

@@ -70,8 +70,8 @@ void button_panel_add_item(
uint16_t matrix_place_y,
uint16_t x,
uint16_t y,
IconName icon_name,
IconName icon_name_selected,
const Icon* icon_name,
const Icon* icon_name_selected,
ButtonItemCallback callback,
void* callback_context);

View File

@@ -155,8 +155,8 @@ static void byte_input_draw_input(Canvas* canvas, ByteInputModel* model) {
elements_slightly_rounded_frame(canvas, 6, 14, 116, 15);
canvas_draw_icon_name(canvas, 2, 19, I_ButtonLeftSmall_3x5);
canvas_draw_icon_name(canvas, 123, 19, I_ButtonRightSmall_3x5);
canvas_draw_icon(canvas, 2, 19, &I_ButtonLeftSmall_3x5);
canvas_draw_icon(canvas, 123, 19, &I_ButtonRightSmall_3x5);
for(uint8_t i = model->first_visible_byte;
i < model->first_visible_byte + MIN(model->bytes_count, max_drawable_bytes);
@@ -222,11 +222,11 @@ static void byte_input_draw_input(Canvas* canvas, ByteInputModel* model) {
}
if(model->bytes_count - model->first_visible_byte > max_drawable_bytes) {
canvas_draw_icon_name(canvas, 123, 21, I_ButtonRightSmall_3x5);
canvas_draw_icon(canvas, 123, 21, &I_ButtonRightSmall_3x5);
}
if(model->first_visible_byte > 0) {
canvas_draw_icon_name(canvas, 1, 21, I_ButtonLeftSmall_3x5);
canvas_draw_icon(canvas, 1, 21, &I_ButtonLeftSmall_3x5);
}
}
@@ -244,8 +244,8 @@ static void byte_input_draw_input_selected(Canvas* canvas, ByteInputModel* model
canvas_invert_color(canvas);
elements_slightly_rounded_frame(canvas, 6, 14, 115, 15);
canvas_draw_icon_name(canvas, 2, 19, I_ButtonLeftSmall_3x5);
canvas_draw_icon_name(canvas, 122, 19, I_ButtonRightSmall_3x5);
canvas_draw_icon(canvas, 2, 19, &I_ButtonLeftSmall_3x5);
canvas_draw_icon(canvas, 122, 19, &I_ButtonRightSmall_3x5);
for(uint8_t i = model->first_visible_byte;
i < model->first_visible_byte + MIN(model->bytes_count, max_drawable_bytes);
@@ -281,11 +281,11 @@ static void byte_input_draw_input_selected(Canvas* canvas, ByteInputModel* model
}
if(model->bytes_count - model->first_visible_byte > max_drawable_bytes) {
canvas_draw_icon_name(canvas, 123, 21, I_ButtonRightSmall_3x5);
canvas_draw_icon(canvas, 123, 21, &I_ButtonRightSmall_3x5);
}
if(model->first_visible_byte > 0) {
canvas_draw_icon_name(canvas, 1, 21, I_ButtonLeftSmall_3x5);
canvas_draw_icon(canvas, 1, 21, &I_ButtonLeftSmall_3x5);
}
canvas_invert_color(canvas);
@@ -542,32 +542,32 @@ static void byte_input_view_draw_callback(Canvas* canvas, void* _model) {
if(keys[column].value == enter_symbol) {
canvas_set_color(canvas, ColorBlack);
if(model->selected_row == row && model->selected_column == column) {
canvas_draw_icon_name(
canvas_draw_icon(
canvas,
keyboard_origin_x + keys[column].x,
keyboard_origin_y + keys[column].y,
I_KeySaveSelected_24x11);
&I_KeySaveSelected_24x11);
} else {
canvas_draw_icon_name(
canvas_draw_icon(
canvas,
keyboard_origin_x + keys[column].x,
keyboard_origin_y + keys[column].y,
I_KeySave_24x11);
&I_KeySave_24x11);
}
} else if(keys[column].value == backspace_symbol) {
canvas_set_color(canvas, ColorBlack);
if(model->selected_row == row && model->selected_column == column) {
canvas_draw_icon_name(
canvas_draw_icon(
canvas,
keyboard_origin_x + keys[column].x,
keyboard_origin_y + keys[column].y,
I_KeyBackspaceSelected_16x9);
&I_KeyBackspaceSelected_16x9);
} else {
canvas_draw_icon_name(
canvas_draw_icon(
canvas,
keyboard_origin_x + keys[column].x,
keyboard_origin_y + keys[column].y,
I_KeyBackspace_16x9);
&I_KeyBackspace_16x9);
}
} else {
if(model->selected_row == row && model->selected_column == column) {

View File

@@ -19,7 +19,7 @@ typedef struct {
typedef struct {
int8_t x;
int8_t y;
IconName name;
const Icon* icon;
} IconElement;
typedef struct {
@@ -39,8 +39,8 @@ static void dialog_ex_view_draw_callback(Canvas* canvas, void* _model) {
canvas_clear(canvas);
canvas_set_color(canvas, ColorBlack);
if(model->icon.name != I_Empty_1x1) {
canvas_draw_icon_name(canvas, model->icon.x, model->icon.y, model->icon.name);
if(model->icon.icon != NULL) {
canvas_draw_icon(canvas, model->icon.x, model->icon.y, model->icon.icon);
}
// Draw header
@@ -136,7 +136,7 @@ DialogEx* dialog_ex_alloc() {
model->icon.x = 0;
model->icon.y = 0;
model->icon.name = I_Empty_1x1;
model->icon.icon = NULL;
model->left_text = NULL;
model->center_text = NULL;
@@ -206,13 +206,13 @@ void dialog_ex_set_text(
});
}
void dialog_ex_set_icon(DialogEx* dialog_ex, uint8_t x, uint8_t y, IconName name) {
void dialog_ex_set_icon(DialogEx* dialog_ex, uint8_t x, uint8_t y, const Icon* icon) {
furi_assert(dialog_ex);
with_view_model(
dialog_ex->view, (DialogExModel * model) {
model->icon.x = x;
model->icon.y = y;
model->icon.name = name;
model->icon.icon = icon;
return true;
});
}

View File

@@ -84,7 +84,7 @@ void dialog_ex_set_text(
* @param x, y - icon position
* @param name - icon to be shown
*/
void dialog_ex_set_icon(DialogEx* dialog_ex, uint8_t x, uint8_t y, IconName name);
void dialog_ex_set_icon(DialogEx* dialog_ex, uint8_t x, uint8_t y, const Icon* icon);
/* Set left button text
* If text is null, left button will not be rendered and processed

View File

@@ -23,7 +23,7 @@ typedef struct {
typedef struct {
uint8_t x;
uint8_t y;
IconName name;
const Icon* icon;
} IconElement;
typedef struct {
@@ -39,8 +39,8 @@ static void popup_view_draw_callback(Canvas* canvas, void* _model) {
canvas_clear(canvas);
canvas_set_color(canvas, ColorBlack);
if(model->icon.name != I_Empty_1x1) {
canvas_draw_icon_name(canvas, model->icon.x, model->icon.y, model->icon.name);
if(model->icon.icon != NULL) {
canvas_draw_icon(canvas, model->icon.x, model->icon.y, model->icon.icon);
}
// Draw header
@@ -138,7 +138,7 @@ Popup* popup_alloc() {
model->icon.x = 0;
model->icon.y = 0;
model->icon.name = I_Empty_1x1;
model->icon.icon = NULL;
return true;
});
return popup;
@@ -204,13 +204,13 @@ void popup_set_text(
});
}
void popup_set_icon(Popup* popup, uint8_t x, uint8_t y, IconName name) {
void popup_set_icon(Popup* popup, uint8_t x, uint8_t y, const Icon* icon) {
furi_assert(popup);
with_view_model(
popup->view, (PopupModel * model) {
model->icon.x = x;
model->icon.y = y;
model->icon.name = name;
model->icon.icon = icon;
return true;
});
}

View File

@@ -77,7 +77,7 @@ void popup_set_text(
* @param x, y - icon position
* @param name - icon to be shown
*/
void popup_set_icon(Popup* popup, uint8_t x, uint8_t y, IconName name);
void popup_set_icon(Popup* popup, uint8_t x, uint8_t y, const Icon* icon);
/* Set popup timeout
* @param popup - Popup instance

View File

@@ -173,32 +173,32 @@ static void text_input_view_draw_callback(Canvas* canvas, void* _model) {
if(keys[column].text == ENTER_KEY) {
canvas_set_color(canvas, ColorBlack);
if(model->selected_row == row && model->selected_column == column) {
canvas_draw_icon_name(
canvas_draw_icon(
canvas,
keyboard_origin_x + keys[column].x,
keyboard_origin_y + keys[column].y,
I_KeySaveSelected_24x11);
&I_KeySaveSelected_24x11);
} else {
canvas_draw_icon_name(
canvas_draw_icon(
canvas,
keyboard_origin_x + keys[column].x,
keyboard_origin_y + keys[column].y,
I_KeySave_24x11);
&I_KeySave_24x11);
}
} else if(keys[column].text == BACKSPACE_KEY) {
canvas_set_color(canvas, ColorBlack);
if(model->selected_row == row && model->selected_column == column) {
canvas_draw_icon_name(
canvas_draw_icon(
canvas,
keyboard_origin_x + keys[column].x,
keyboard_origin_y + keys[column].y,
I_KeyBackspaceSelected_16x9);
&I_KeyBackspaceSelected_16x9);
} else {
canvas_draw_icon_name(
canvas_draw_icon(
canvas,
keyboard_origin_x + keys[column].x,
keyboard_origin_y + keys[column].y,
I_KeyBackspace_16x9);
&I_KeyBackspace_16x9);
}
} else {
if(model->selected_row == row && model->selected_column == column) {