[FL-1371][FL-1502] Lfrfid app: fixes. (#555)

* Gui module byte-input: changed api
* Gui: changed font height in multiline text according to guideline
* Apps lrfid, nfc: changed send and receive icon
* App lfrfid: fix text, fix scene switсh
* Elements: multiline text framed, fix paddings
* Gui: remove duplicate definition of elements_multiline_text_framed
* App NFC: update byte_input callback signature
* App subghz: fix text lines in capture scene
* App subghz: position of the text is aligned with the guidelines and other scenes
* App subghz: removed mockup

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
SG 2021-07-05 02:01:16 +10:00 committed by GitHub
parent f82a4a2260
commit 7734fb4018
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
33 changed files with 725 additions and 726 deletions

View file

@ -181,7 +181,7 @@ void dolphin_view_hw_mismatch_draw(Canvas* canvas, void* model) {
canvas_set_font(canvas, FontSecondary);
snprintf(buffer, 64, "HW target: F%d", api_hal_version_get_hw_target());
canvas_draw_str(canvas, 5, 27, buffer);
canvas_draw_str(canvas, 5, 37, "FW target: " TARGET);
canvas_draw_str(canvas, 5, 38, "FW target: " TARGET);
}
uint32_t dolphin_view_idle_back(void* context) {

View file

@ -122,7 +122,7 @@ static void text_input_callback(void* context) {
next_view(context);
}
static void byte_input_callback(void* context, uint8_t* bytes, uint8_t bytes_count) {
static void byte_input_callback(void* context) {
next_view(context);
}

View file

@ -81,7 +81,13 @@ uint8_t canvas_height(Canvas* canvas) {
uint8_t canvas_current_font_height(Canvas* canvas) {
furi_assert(canvas);
return u8g2_GetMaxCharHeight(&canvas->fb);
uint8_t font_height = u8g2_GetMaxCharHeight(&canvas->fb);
if(canvas->fb.font == u8g2_font_haxrcorp4089_tr) {
font_height += 1;
}
return font_height;
}
void canvas_clear(Canvas* canvas) {

View file

@ -196,7 +196,7 @@ void elements_multiline_text_aligned(
furi_assert(canvas);
furi_assert(text);
uint8_t font_height = canvas_current_font_height(canvas) + 2;
uint8_t font_height = canvas_current_font_height(canvas);
string_t str;
string_init(str);
const char* start = text;
@ -298,10 +298,10 @@ void elements_multiline_text_framed(Canvas* canvas, uint8_t x, uint8_t y, const
}
canvas_set_color(canvas, ColorWhite);
canvas_draw_box(canvas, x, y - font_y, str_width + 8, font_y * lines + 6);
canvas_draw_box(canvas, x, y - font_y, str_width + 8, font_y * lines + 4);
canvas_set_color(canvas, ColorBlack);
elements_multiline_text(canvas, x + 4, y + 1, text);
elements_frame(canvas, x, y - font_y, str_width + 8, font_y * lines + 6);
elements_multiline_text(canvas, x + 4, y - 1, text);
elements_frame(canvas, x, y - font_y, str_width + 8, font_y * lines + 4);
}
void elements_slightly_rounded_frame(

View file

@ -101,14 +101,6 @@ void elements_multiline_text(Canvas* canvas, uint8_t x, uint8_t y, const char* t
*/
void elements_multiline_text_framed(Canvas* canvas, uint8_t x, uint8_t y, const char* text);
/*
* Draw framed multiline text
* @param x, y - top left corner coordinates
* @param text - string (possible multiline)
*/
void elements_multiline_text_framed(Canvas* canvas, uint8_t x, uint8_t y, const char* text);
/*
* Draw slightly rounded frame
* @param x, y - top left corner coordinates

View file

@ -397,7 +397,7 @@ static void byte_input_dec_selected_byte(ByteInputModel* model) {
*/
static void byte_input_call_input_callback(ByteInputModel* model) {
if(model->input_callback != NULL) {
model->input_callback(model->callback_context, model->bytes, model->bytes_count);
model->input_callback(model->callback_context);
}
}
@ -408,7 +408,7 @@ static void byte_input_call_input_callback(ByteInputModel* model) {
*/
static void byte_input_call_changed_callback(ByteInputModel* model) {
if(model->changed_callback != NULL) {
model->changed_callback(model->callback_context, model->bytes, model->bytes_count);
model->changed_callback(model->callback_context);
}
}

View file

@ -15,13 +15,13 @@ typedef struct ByteInput ByteInput;
* @brief callback that is executed on save button press
*
*/
typedef void (*ByteInputCallback)(void* context, uint8_t* bytes, uint8_t bytes_count);
typedef void (*ByteInputCallback)(void* context);
/**
* @brief callback that is executed when byte buffer is changed
*
*/
typedef void (*ByteChangedCallback)(void* context, uint8_t* bytes, uint8_t bytes_count);
typedef void (*ByteChangedCallback)(void* context);
/**
* @brief Allocate and initialize byte input. This byte input is used to enter bytes.

View file

@ -40,7 +40,7 @@ void iButtonSceneAddValue::on_exit(iButtonApp* app) {
byte_input_set_header_text(byte_input, {0});
}
void iButtonSceneAddValue::byte_input_callback(void* context, uint8_t* bytes, uint8_t bytes_count) {
void iButtonSceneAddValue::byte_input_callback(void* context) {
iButtonApp* app = static_cast<iButtonApp*>(context);
iButtonEvent event;

View file

@ -8,5 +8,5 @@ public:
void on_exit(iButtonApp* app) final;
private:
void byte_input_callback(void* context, uint8_t* bytes, uint8_t bytes_count);
void byte_input_callback(void* context);
};

View file

@ -11,13 +11,13 @@ void LfRfidAppSceneEmulate::on_enter(LfRfidApp* app, bool need_restore) {
auto popup = app->view_controller.get<PopupVM>();
popup->set_header("LF emulating", 89, 30, AlignCenter, AlignTop);
popup->set_header("Emulating", 89, 30, AlignCenter, AlignTop);
if(strlen(app->worker.key.get_name())) {
popup->set_text(app->worker.key.get_name(), 89, 43, AlignCenter, AlignTop);
} else {
popup->set_text(string_get_cstr(data_string), 89, 43, AlignCenter, AlignTop);
}
popup->set_icon(0, 4, I_RFIDDolphinSend_98x60);
popup->set_icon(0, 3, I_RFIDDolphinSend_97x61);
app->view_controller.switch_to<PopupVM>();
app->worker.start_emulate();

View file

@ -3,8 +3,8 @@
void LfRfidAppSceneRead::on_enter(LfRfidApp* app, bool need_restore) {
auto popup = app->view_controller.get<PopupVM>();
popup->set_header("Reading\nLF RFID", 70, 34, AlignLeft, AlignTop);
popup->set_icon(0, 4, I_RFIDDolphinReceive_98x60);
popup->set_header("Reading\nLF RFID", 89, 34, AlignCenter, AlignTop);
popup->set_icon(0, 3, I_RFIDDolphinReceive_97x61);
app->view_controller.switch_to<PopupVM>();
app->worker.start_read();

View file

@ -50,7 +50,7 @@ void LfRfidAppSceneSaveData::on_exit(LfRfidApp* app) {
app->view_controller.get<ByteInputVM>()->clean();
}
void LfRfidAppSceneSaveData::save_callback(void* context, uint8_t* bytes, uint8_t bytes_count) {
void LfRfidAppSceneSaveData::save_callback(void* context) {
LfRfidApp* app = static_cast<LfRfidApp*>(context);
LfRfidApp::Event event;
event.type = LfRfidApp::EventType::Next;

View file

@ -8,7 +8,7 @@ public:
void on_exit(LfRfidApp* app) final;
private:
static void save_callback(void* context, uint8_t* bytes, uint8_t bytes_count);
static void save_callback(void* context);
uint8_t old_key_data[LFRFID_KEY_SIZE] = {
0xAA,
0xAA,

View file

@ -18,7 +18,7 @@ bool LfRfidAppSceneWriteSuccess::on_event(LfRfidApp* app, LfRfidApp::Event* even
if(event->type == LfRfidApp::EventType::Back) {
app->scene_controller.search_and_switch_to_previous_scene(
{LfRfidApp::SceneType::ReadedMenu});
{LfRfidApp::SceneType::ReadedMenu, LfRfidApp::SceneType::SelectKey});
consumed = true;
}

View file

@ -12,13 +12,13 @@ void LfRfidAppSceneWrite::on_enter(LfRfidApp* app, bool need_restore) {
auto popup = app->view_controller.get<PopupVM>();
popup->set_header("LF writing", 89, 30, AlignCenter, AlignTop);
popup->set_header("Writing", 89, 30, AlignCenter, AlignTop);
if(strlen(app->worker.key.get_name())) {
popup->set_text(app->worker.key.get_name(), 89, 43, AlignCenter, AlignTop);
} else {
popup->set_text(string_get_cstr(data_string), 89, 43, AlignCenter, AlignTop);
}
popup->set_icon(0, 4, I_RFIDDolphinSend_98x60);
popup->set_icon(0, 3, I_RFIDDolphinSend_97x61);
app->view_controller.switch_to<PopupVM>();
app->worker.start_write();

View file

@ -1,4 +1,5 @@
#include "string-element.h"
#include <gui/elements.h>
StringElement::StringElement() {
}
@ -9,7 +10,7 @@ StringElement::~StringElement() {
void StringElement::draw(Canvas* canvas) {
if(text) {
canvas_set_font(canvas, font);
canvas_draw_str_aligned(canvas, x, y, horizontal, vertical, text);
elements_multiline_text_aligned(canvas, x, y, horizontal, vertical, text);
}
}

View file

@ -29,7 +29,7 @@ const void nfc_scene_emulate_uid_on_enter(void* context) {
data->uid[6]);
}
popup_set_icon(popup, 0, 4, I_RFIDDolphinSend_98x60);
popup_set_icon(popup, 0, 3, I_RFIDDolphinSend_97x61);
popup_set_header(popup, "Emulating UID", 56, 31, AlignLeft, AlignTop);
popup_set_text(popup, nfc->text_store, 56, 43, AlignLeft, AlignTop);

View file

@ -18,7 +18,7 @@ const void nfc_scene_read_card_on_enter(void* context) {
// Setup view
Popup* popup = nfc->popup;
popup_set_header(popup, "Detecting\nNFC card", 70, 34, AlignLeft, AlignTop);
popup_set_icon(popup, 0, 4, I_RFIDDolphinReceive_98x60);
popup_set_icon(popup, 0, 3, I_RFIDDolphinReceive_97x61);
// Start worker
nfc_worker_start(

View file

@ -8,7 +8,7 @@
#define SCENE_SET_ATQA_CUSTOM_EVENT (0UL)
void nfc_scene_set_atqa_byte_input_callback(void* context, uint8_t* bytes, uint8_t bytes_count) {
void nfc_scene_set_atqa_byte_input_callback(void* context) {
Nfc* nfc = (Nfc*)context;
view_dispatcher_send_custom_event(

View file

@ -8,7 +8,7 @@
#define SCENE_SET_SAK_CUSTOM_EVENT (0UL)
void nfc_scene_set_sak_byte_input_callback(void* context, uint8_t* bytes, uint8_t bytes_count) {
void nfc_scene_set_sak_byte_input_callback(void* context) {
Nfc* nfc = (Nfc*)context;
view_dispatcher_send_custom_event(nfc->nfc_common.view_dispatcher, SCENE_SET_SAK_CUSTOM_EVENT);

View file

@ -8,7 +8,7 @@
#define SCENE_SET_UID_CUSTOM_EVENT (0UL)
void nfc_scene_set_uid_byte_input_callback(void* context, uint8_t* bytes, uint8_t bytes_count) {
void nfc_scene_set_uid_byte_input_callback(void* context) {
Nfc* nfc = (Nfc*)context;
view_dispatcher_send_custom_event(nfc->nfc_common.view_dispatcher, SCENE_SET_UID_CUSTOM_EVENT);

View file

@ -25,7 +25,7 @@ void ScenedAppSceneByteInput::on_exit(ScenedApp* app) {
app->view_controller.get<ByteInputVM>()->clean();
}
void ScenedAppSceneByteInput::result_callback(void* context, uint8_t* bytes, uint8_t bytes_count) {
void ScenedAppSceneByteInput::result_callback(void* context) {
ScenedApp* app = static_cast<ScenedApp*>(context);
ScenedApp::Event event;

View file

@ -8,7 +8,7 @@ public:
void on_exit(ScenedApp* app) final;
private:
void result_callback(void* context, uint8_t* bytes, uint8_t bytes_count);
void result_callback(void* context);
uint8_t data[4] = {
0x01,

View file

@ -39,10 +39,10 @@ void subghz_capture_draw(Canvas* canvas, SubghzCaptureModel* model) {
model->real_frequency / 1000000 % 1000,
model->real_frequency / 1000 % 1000,
subghz_symbols[model->counter % 4]);
canvas_draw_str(canvas, 2, 12, buffer);
canvas_draw_str(canvas, 0, 8, buffer);
canvas_set_font(canvas, FontSecondary);
elements_multiline_text(canvas, 0, 24, string_get_cstr(model->text));
elements_multiline_text(canvas, 0, 20, string_get_cstr(model->text));
}
bool subghz_capture_input(InputEvent* event, void* context) {

View file

@ -38,7 +38,7 @@ void subghz_static_draw(Canvas* canvas, SubghzStaticModel* model) {
canvas_set_color(canvas, ColorBlack);
canvas_set_font(canvas, FontPrimary);
canvas_draw_str(canvas, 2, 12, "CC1101 Static");
canvas_draw_str(canvas, 0, 8, "CC1101 Static");
canvas_set_font(canvas, FontSecondary);
// Frequency
@ -49,9 +49,9 @@ void subghz_static_draw(Canvas* canvas, SubghzStaticModel* model) {
model->real_frequency / 1000000 % 1000,
model->real_frequency / 1000 % 1000,
model->real_frequency % 1000);
canvas_draw_str(canvas, 2, 24, buffer);
canvas_draw_str(canvas, 0, 20, buffer);
snprintf(buffer, sizeof(buffer), "Key: %d", model->button);
canvas_draw_str(canvas, 2, 36, buffer);
canvas_draw_str(canvas, 0, 31, buffer);
}
bool subghz_static_input(InputEvent* event, void* context) {

View file

@ -29,7 +29,7 @@ void subghz_test_basic_draw(Canvas* canvas, SubghzTestBasicModel* model) {
canvas_set_color(canvas, ColorBlack);
canvas_set_font(canvas, FontPrimary);
canvas_draw_str(canvas, 2, 12, "CC1101 Basic Test");
canvas_draw_str(canvas, 0, 8, "CC1101 Basic Test");
canvas_set_font(canvas, FontSecondary);
// Frequency
@ -40,7 +40,7 @@ void subghz_test_basic_draw(Canvas* canvas, SubghzTestBasicModel* model) {
model->real_frequency / 1000000 % 1000,
model->real_frequency / 1000 % 1000,
model->real_frequency % 1000);
canvas_draw_str(canvas, 2, 24, buffer);
canvas_draw_str(canvas, 0, 20, buffer);
// Path
char* path_name = "Unknown";
if(model->path == ApiHalSubGhzPathIsolate) {
@ -53,7 +53,7 @@ void subghz_test_basic_draw(Canvas* canvas, SubghzTestBasicModel* model) {
path_name = "868MHz";
}
snprintf(buffer, sizeof(buffer), "Path: %d - %s", model->path, path_name);
canvas_draw_str(canvas, 2, 36, buffer);
canvas_draw_str(canvas, 0, 31, buffer);
if(model->status == SubghzTestBasicModelStatusRx) {
snprintf(
buffer,
@ -61,9 +61,9 @@ void subghz_test_basic_draw(Canvas* canvas, SubghzTestBasicModel* model) {
"RSSI: %ld.%ld dBm",
(int32_t)(model->rssi),
(int32_t)fabs(model->rssi * 10) % 10);
canvas_draw_str(canvas, 2, 48, buffer);
canvas_draw_str(canvas, 0, 42, buffer);
} else {
canvas_draw_str(canvas, 2, 48, "TX");
canvas_draw_str(canvas, 0, 42, "TX");
}
}

View file

@ -37,7 +37,7 @@ void subghz_test_packet_draw(Canvas* canvas, SubghzTestPacketModel* model) {
canvas_set_color(canvas, ColorBlack);
canvas_set_font(canvas, FontPrimary);
canvas_draw_str(canvas, 2, 12, "CC1101 Packet Test");
canvas_draw_str(canvas, 0, 8, "CC1101 Packet Test");
canvas_set_font(canvas, FontSecondary);
// Frequency
@ -48,7 +48,7 @@ void subghz_test_packet_draw(Canvas* canvas, SubghzTestPacketModel* model) {
model->real_frequency / 1000000 % 1000,
model->real_frequency / 1000 % 1000,
model->real_frequency % 1000);
canvas_draw_str(canvas, 2, 24, buffer);
canvas_draw_str(canvas, 0, 20, buffer);
// Path
char* path_name = "Unknown";
if(model->path == ApiHalSubGhzPathIsolate) {
@ -61,7 +61,7 @@ void subghz_test_packet_draw(Canvas* canvas, SubghzTestPacketModel* model) {
path_name = "868MHz";
}
snprintf(buffer, sizeof(buffer), "Path: %d - %s", model->path, path_name);
canvas_draw_str(canvas, 2, 36, buffer);
canvas_draw_str(canvas, 0, 31, buffer);
if(model->status == SubghzTestPacketModelStatusRx) {
snprintf(
buffer,
@ -69,9 +69,9 @@ void subghz_test_packet_draw(Canvas* canvas, SubghzTestPacketModel* model) {
"RSSI: %ld.%ld dBm",
(int32_t)(model->rssi),
(int32_t)fabs(model->rssi * 10) % 10);
canvas_draw_str(canvas, 2, 48, buffer);
canvas_draw_str(canvas, 0, 42, buffer);
} else {
canvas_draw_str(canvas, 2, 48, "TX");
canvas_draw_str(canvas, 0, 42, "TX");
}
}

File diff suppressed because one or more lines are too long

View file

@ -3,150 +3,150 @@
#include <gui/icon.h>
typedef enum {
I_KeyBackspaceSelected_16x9,
I_KeySave_24x11,
I_KeySaveSelected_24x11,
I_KeyBackspace_16x9,
I_Battery_26x8,
I_PlaceholderL_11x13,
I_Bluetooth_5x8,
I_BadUsb_9x8,
I_PlaceholderR_30x13,
I_USBConnected_15x8,
I_Battery_19x8,
I_Lock_8x8,
I_Background_128x11,
I_Background_128x8,
I_SDcardFail_11x8,
I_SDcardMounted_11x8,
I_Nfc_10px,
I_ir_10px,
I_ble_10px,
I_sub1_10px,
I_dir_10px,
I_unknown_10px,
I_ibutt_10px,
A_FX_Sitting_40x27,
A_MDIB_32x32,
A_MDI_32x32,
A_MDWLB_32x32,
A_MDWL_32x32,
A_MDWRB_32x32,
A_MDWR_32x32,
A_WatchingTV_128x64,
A_Wink_128x64,
I_125_10px,
A_iButton_14,
A_Plugins_14,
A_Bluetooth_14,
A_Games_14,
A_Infrared_14,
A_NFC_14,
A_FileManager_14,
A_Passport_14,
A_Settings_14,
A_Power_14,
A_125khz_14,
A_GPIO_14,
A_Tamagotchi_14,
A_U2F_14,
A_Sub1ghz_14,
I_ButtonLeft_4x7,
I_ButtonRight_4x7,
I_ButtonRightSmall_3x5,
I_Empty_1x1,
I_ble_10px,
I_dir_10px,
I_ibutt_10px,
I_ir_10px,
I_Nfc_10px,
I_sub1_10px,
I_unknown_10px,
I_ButtonCenter_7x7,
I_ButtonLeftSmall_3x5,
I_Vol_up_25x27,
I_Fill_marker_7x7,
I_IrdaArrowUp_4x8,
I_Down_hvr_25x27,
I_Vol_up_hvr_25x27,
I_Power_25x27,
I_Vol_down_25x27,
I_IrdaSend_128x64,
I_Up_hvr_25x27,
I_Back_15x10,
I_IrdaSendShort_128x34,
I_Mute_hvr_25x27,
I_IrdaLearnShort_128x31,
I_Down_25x27,
I_Up_25x27,
I_Mute_25x27,
I_Vol_down_hvr_25x27,
I_Power_hvr_25x27,
I_IrdaLearn_128x64,
I_IrdaArrowDown_4x8,
A_MDWRB_32x32,
A_MDWL_32x32,
A_WatchingTV_128x64,
A_MDWR_32x32,
A_FX_Sitting_40x27,
A_MDI_32x32,
A_Wink_128x64,
A_MDIB_32x32,
A_MDWLB_32x32,
I_RFIDBigChip_37x36,
I_RFIDDolphinReceive_98x60,
I_RFIDDolphinSuccess_108x57,
I_RFIDDolphinSend_98x60,
I_DoorRight_70x55,
I_DoorLocked_10x56,
I_ButtonLeft_4x7,
I_ButtonRightSmall_3x5,
I_ButtonRight_4x7,
I_Empty_1x1,
I_BigBurger_24x24,
I_BigGames_24x24,
I_BigProfile_24x24,
I_DolphinFirstStart0_70x53,
I_DolphinFirstStart1_59x53,
I_DolphinFirstStart2_59x51,
I_DolphinFirstStart3_57x48,
I_DolphinFirstStart4_67x53,
I_DolphinFirstStart5_45x53,
I_DolphinFirstStart6_58x54,
I_DolphinFirstStart7_61x51,
I_DolphinFirstStart8_56x51,
I_DolphinOkay_41x43,
I_Flipper_young_80x60,
I_FX_Bang_32x6,
I_FX_SittingB_40x27,
I_DolphinExcited_64x63,
I_DolphinMafia_115x62,
I_DolphinNice_96x59,
I_DolphinWait_61x59,
I_iButtonDolphinSuccess_109x60,
I_iButtonDolphinVerySuccess_108x52,
I_iButtonKey_49x44,
I_DoorLeft_70x55,
I_PassportLeft_6x47,
I_DoorRight_8x56,
I_DoorLeft_8x56,
I_DoorLocked_10x56,
I_DoorRight_70x55,
I_DoorRight_8x56,
I_LockPopup_100x49,
I_PassportBottom_128x17,
I_Medium_chip_22x21,
I_PassportLeft_6x47,
I_Back_15x10,
I_Down_25x27,
I_Down_hvr_25x27,
I_Fill_marker_7x7,
I_IrdaArrowDown_4x8,
I_IrdaArrowUp_4x8,
I_IrdaLearnShort_128x31,
I_IrdaLearn_128x64,
I_IrdaSendShort_128x34,
I_IrdaSend_128x64,
I_Mute_25x27,
I_Mute_hvr_25x27,
I_Power_25x27,
I_Power_hvr_25x27,
I_Up_25x27,
I_Up_hvr_25x27,
I_Vol_down_25x27,
I_Vol_down_hvr_25x27,
I_Vol_up_25x27,
I_Vol_up_hvr_25x27,
I_KeyBackspaceSelected_16x9,
I_KeyBackspace_16x9,
I_KeySaveSelected_24x11,
I_KeySave_24x11,
A_125khz_14,
A_Bluetooth_14,
A_FileManager_14,
A_Games_14,
A_GPIO_14,
A_iButton_14,
A_Infrared_14,
A_NFC_14,
A_Passport_14,
A_Plugins_14,
A_Power_14,
A_Settings_14,
A_Sub1ghz_14,
A_Tamagotchi_14,
A_U2F_14,
I_EMV_Chip_14x11,
I_iButtonDolphinVerySuccess_108x52,
I_DolphinMafia_115x62,
I_iButtonDolphinSuccess_109x60,
I_DolphinExcited_64x63,
I_DolphinNice_96x59,
I_iButtonKey_49x44,
I_DolphinWait_61x59,
I_passport_bad2_43x45,
I_passport_okay1_43x45,
I_passport_happy3_43x45,
I_Medium_chip_22x21,
I_passport_bad1_43x45,
I_passport_happy2_43x45,
I_passport_okay2_43x45,
I_passport_happy1_43x45,
I_passport_okay3_43x45,
I_passport_bad2_43x45,
I_passport_bad3_43x45,
I_SDQuestion_35x43,
I_SDError_43x35,
I_WalkLB1_32x32,
I_PC_22x29,
I_Home_painting_17x20,
I_Sofa_40x13,
I_WalkRB1_32x32,
I_WalkL1_32x32,
I_WalkR1_32x32,
I_WalkL2_32x32,
I_WalkR2_32x32,
I_TV_20x24,
I_WalkLB2_32x32,
I_TV_20x20,
I_WalkRB2_32x32,
I_Health_16x16,
I_FaceNopower_29x14,
I_Battery_16x16,
I_passport_happy1_43x45,
I_passport_happy2_43x45,
I_passport_happy3_43x45,
I_passport_okay1_43x45,
I_passport_okay2_43x45,
I_passport_okay3_43x45,
I_BatteryBody_52x28,
I_FaceConfused_29x14,
I_Battery_16x16,
I_FaceCharging_29x14,
I_FaceConfused_29x14,
I_FaceNopower_29x14,
I_FaceNormal_29x14,
I_Voltage_16x16,
I_Health_16x16,
I_Temperature_16x16,
I_DolphinOkay_41x43,
I_DolphinFirstStart7_61x51,
I_DolphinFirstStart4_67x53,
I_DolphinFirstStart3_57x48,
I_FX_Bang_32x6,
I_Flipper_young_80x60,
I_DolphinFirstStart0_70x53,
I_DolphinFirstStart2_59x51,
I_DolphinFirstStart6_58x54,
I_FX_SittingB_40x27,
I_BigProfile_24x24,
I_DolphinFirstStart5_45x53,
I_BigGames_24x24,
I_DolphinFirstStart8_56x51,
I_BigBurger_24x24,
I_DolphinFirstStart1_59x53,
I_Voltage_16x16,
I_RFIDBigChip_37x36,
I_RFIDDolphinReceive_97x61,
I_RFIDDolphinSend_97x61,
I_RFIDDolphinSuccess_108x57,
I_Home_painting_17x20,
I_PC_22x29,
I_Sofa_40x13,
I_TV_20x20,
I_TV_20x24,
I_WalkL1_32x32,
I_WalkL2_32x32,
I_WalkLB1_32x32,
I_WalkLB2_32x32,
I_WalkR1_32x32,
I_WalkR2_32x32,
I_WalkRB1_32x32,
I_WalkRB2_32x32,
I_SDError_43x35,
I_SDQuestion_35x43,
I_Background_128x11,
I_Background_128x8,
I_BadUsb_9x8,
I_Battery_19x8,
I_Battery_26x8,
I_Bluetooth_5x8,
I_Lock_8x8,
I_PlaceholderL_11x13,
I_PlaceholderR_30x13,
I_SDcardFail_11x8,
I_SDcardMounted_11x8,
I_USBConnected_15x8,
} IconName;
Icon * assets_icons_get(IconName name);

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3 KiB