From a59879bf1befcafa38f9beb575ad552865d99035 Mon Sep 17 00:00:00 2001 From: Felix Pankratz Date: Mon, 19 Sep 2022 20:52:13 +0200 Subject: [PATCH] refactor added elements stuff into own file --- gui_extensions.c | 55 +++++++++++++++++++++++++++++++++++++++++++ gui_extensions.h | 2 ++ metronome.c | 61 ++++-------------------------------------------- 3 files changed, 62 insertions(+), 56 deletions(-) create mode 100644 gui_extensions.c create mode 100644 gui_extensions.h diff --git a/gui_extensions.c b/gui_extensions.c new file mode 100644 index 0000000..7b2aa62 --- /dev/null +++ b/gui_extensions.c @@ -0,0 +1,55 @@ +#include +#include + +//lib can only do bottom left/right +void elements_button_top_left(Canvas* canvas, const char* str) { + const uint8_t button_height = 12; + const uint8_t vertical_offset = 3; + const uint8_t horizontal_offset = 3; + const uint8_t string_width = canvas_string_width(canvas, str); + const Icon* icon = &I_ButtonUp_7x4; + const uint8_t icon_h_offset = 3; + const uint8_t icon_width_with_offset = icon->width + icon_h_offset; + const uint8_t icon_v_offset = icon->height + vertical_offset; + const uint8_t button_width = string_width + horizontal_offset * 2 + icon_width_with_offset; + + const uint8_t x = 0; + const uint8_t y = 0 + button_height; + + canvas_draw_box(canvas, x, y - button_height, button_width, button_height); + canvas_draw_line(canvas, x + button_width + 0, y - button_height, x + button_width + 0, y - 1); + canvas_draw_line(canvas, x + button_width + 1, y - button_height, x + button_width + 1, y - 2); + canvas_draw_line(canvas, x + button_width + 2, y - button_height, x + button_width + 2, y - 3); + + canvas_invert_color(canvas); + canvas_draw_icon(canvas, x + horizontal_offset, y - icon_v_offset, &I_ButtonUp_7x4); + canvas_draw_str( + canvas, x + horizontal_offset + icon_width_with_offset, y - vertical_offset, str); + canvas_invert_color(canvas); +} + +void elements_button_top_right(Canvas* canvas, const char* str) { + const uint8_t button_height = 12; + const uint8_t vertical_offset = 3; + const uint8_t horizontal_offset = 3; + const uint8_t string_width = canvas_string_width(canvas, str); + const Icon* icon = &I_ButtonUp_7x4; + const uint8_t icon_h_offset = 3; + const uint8_t icon_width_with_offset = icon->width + icon_h_offset; + const uint8_t icon_v_offset = icon->height + vertical_offset; + const uint8_t button_width = string_width + horizontal_offset * 2 + icon_width_with_offset; + + const uint8_t x = canvas_width(canvas); + const uint8_t y = 0 + button_height; + + canvas_draw_box(canvas, x - button_width, y - button_height, button_width, button_height); + canvas_draw_line(canvas, x - button_width - 1, y - button_height, x - button_width - 1, y - 1); + canvas_draw_line(canvas, x - button_width - 2, y - button_height, x - button_width - 2, y - 2); + canvas_draw_line(canvas, x - button_width - 3, y - button_height, x - button_width - 3, y - 3); + + canvas_invert_color(canvas); + canvas_draw_str(canvas, x - button_width + horizontal_offset, y - vertical_offset, str); + canvas_draw_icon( + canvas, x - horizontal_offset - icon->width, y - icon_v_offset, &I_ButtonUp_7x4); + canvas_invert_color(canvas); +} diff --git a/gui_extensions.h b/gui_extensions.h new file mode 100644 index 0000000..715f879 --- /dev/null +++ b/gui_extensions.h @@ -0,0 +1,2 @@ +void elements_button_top_right(Canvas* canvas, const char* str); +void elements_button_top_left(Canvas* canvas, const char* str); diff --git a/metronome.c b/metronome.c index 9cec724..f02757a 100644 --- a/metronome.c +++ b/metronome.c @@ -7,11 +7,12 @@ #include #include #include -#include #include #include +#include "gui_extensions.h" + #define BPM_STEP_SIZE_FINE 0.5d #define BPM_STEP_SIZE_COARSE 10.0d #define BPM_BOUNDARY_LOW 10.0d @@ -38,69 +39,18 @@ typedef struct { NotificationApp* notifications; } MetronomeState; -//lib can only do bottom left/right -static void elements_button_top_left(Canvas* canvas, const char* str) { - const uint8_t button_height = 12; - const uint8_t vertical_offset = 3; - const uint8_t horizontal_offset = 3; - const uint8_t string_width = canvas_string_width(canvas, str); - const Icon* icon = &I_ButtonUp_7x4; - const uint8_t icon_h_offset = 3; - const uint8_t icon_width_with_offset = icon->width + icon_h_offset; - const uint8_t icon_v_offset = icon->height + vertical_offset; - const uint8_t button_width = string_width + horizontal_offset * 2 + icon_width_with_offset; - - const uint8_t x = 0; - const uint8_t y = 0 + button_height; - - canvas_draw_box(canvas, x, y - button_height, button_width, button_height); - canvas_draw_line(canvas, x + button_width + 0, y - button_height, x + button_width + 0, y - 1); - canvas_draw_line(canvas, x + button_width + 1, y - button_height, x + button_width + 1, y - 2); - canvas_draw_line(canvas, x + button_width + 2, y - button_height, x + button_width + 2, y - 3); - - canvas_invert_color(canvas); - canvas_draw_icon(canvas, x + horizontal_offset, y - icon_v_offset, &I_ButtonUp_7x4); - canvas_draw_str( - canvas, x + horizontal_offset + icon_width_with_offset, y - vertical_offset, str); - canvas_invert_color(canvas); -} - -void elements_button_top_right(Canvas* canvas, const char* str) { - const uint8_t button_height = 12; - const uint8_t vertical_offset = 3; - const uint8_t horizontal_offset = 3; - const uint8_t string_width = canvas_string_width(canvas, str); - const Icon* icon = &I_ButtonUp_7x4; - const uint8_t icon_h_offset = 3; - const uint8_t icon_width_with_offset = icon->width + icon_h_offset; - const uint8_t icon_v_offset = icon->height + vertical_offset; - const uint8_t button_width = string_width + horizontal_offset * 2 + icon_width_with_offset; - - const uint8_t x = canvas_width(canvas); - const uint8_t y = 0 + button_height; - - canvas_draw_box(canvas, x - button_width, y - button_height, button_width, button_height); - canvas_draw_line(canvas, x - button_width - 1, y - button_height, x - button_width - 1, y - 1); - canvas_draw_line(canvas, x - button_width - 2, y - button_height, x - button_width - 2, y - 2); - canvas_draw_line(canvas, x - button_width - 3, y - button_height, x - button_width - 3, y - 3); - - canvas_invert_color(canvas); - canvas_draw_str(canvas, x - button_width + horizontal_offset, y - vertical_offset, str); - canvas_draw_icon( - canvas, x - horizontal_offset - icon->width, y - icon_v_offset, &I_ButtonUp_7x4); - canvas_invert_color(canvas); -} - static void render_callback(Canvas* const canvas, void* ctx) { const MetronomeState* metronome_state = acquire_mutex((ValueMutex*)ctx, 25); if(metronome_state == NULL) { return; } + string_t tempStr; string_init(tempStr); // border around the edge of the screen canvas_draw_frame(canvas, 0, 0, 128, 64); + canvas_set_font(canvas, FontPrimary); // draw bars/beat @@ -159,7 +109,6 @@ static void timer_callback(void* ctx) { release_mutex((ValueMutex*)ctx, metronome_state); } - static uint32_t state_to_sleep_ticks(MetronomeState* metronome_state) { // calculate time between beeps uint32_t tps = furi_kernel_get_tick_frequency(); @@ -316,7 +265,7 @@ int32_t metronome_app() { } } } else { - FURI_LOG_D("Hello_world", "FuriMessageQueue: event timeout"); + FURI_LOG_D("Metronome", "FuriMessageQueue: event timeout"); // event timeout }