1
0
forked from me/IronOS
Files
IronOS/source/UI/UI.h
2023-06-28 22:49:37 +10:00

46 lines
1.4 KiB
C

#pragma once
#include <stdint.h>
typedef enum {
SimplifiedHome, // Basic home
SimplifiedHomeWarning, // Home with temp warning
DetailedHome, // Detailed home view
DetailedHomeWarning, // Home with temp warning
DebugMenu, // Debugging metrics
settingsCategory, // Settings category with icon
SettingsEntryBool, // Tickbox setting
SettingsEntry3Number, // Settings adjust with 3 number digits
SettingsEntry2Number, // Settings adjust with 2 number digits
SettingsEntry1Number, // Settings adjust with 2 number digits
SettingsEntry1Text, // Setting with single text char for state
ScrollingText, // Scrolling large text (warnings, help text)
SolderingMode, // Basic soldering mode
DetailedSolderingMode, // Detailed soldering mode
NumberAdjust, // Number adjust of number with <> either side
} screenLayout_t;
typedef void (*render_prep_fn)();
typedef void (*tick_fn)();
typedef void (*button_handler_fn)();
typedef struct {
// on_enter
// on_exit
tick_fn tick;
render_prep_fn render_prepare;
screenLayout_t layout; // Render layout used
button_handler_fn handle_button;
} Screen_t;
typedef union {
int32_t i32;
void *ptr;
} screen_arg_t;
typedef struct {
screen_arg_t args[4];
} ScreenContext_t;
//
void ui_render_screen(Screen_t *screen, ScreenContext_t *context);