Scratching out layout
This commit is contained in:
4
source/UI/UI.cpp
Normal file
4
source/UI/UI.cpp
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
#include "UI.h"
|
||||||
|
void ui_render_screen(Screen_t *screen, ScreenContext_t *context) {
|
||||||
|
// Basically switch out the handlers
|
||||||
|
}
|
||||||
45
source/UI/UI.h
Normal file
45
source/UI/UI.h
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
#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);
|
||||||
53
source/UI/UI_Elements.cpp
Normal file
53
source/UI/UI_Elements.cpp
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
#include "UI_Elements.h"
|
||||||
|
|
||||||
|
void render_Text(screen_arg_t *args);
|
||||||
|
void render_Number(screen_arg_t *args);
|
||||||
|
void render_Image(screen_arg_t *args);
|
||||||
|
void render_PowerSource(screen_arg_t *args);
|
||||||
|
void render_Temperature(screen_arg_t *args);
|
||||||
|
void render_InputVoltage(screen_arg_t *args);
|
||||||
|
void render_ScrollBar(screen_arg_t *args);
|
||||||
|
void render_CheckBox(screen_arg_t *args);
|
||||||
|
void render_TextScroller(screen_arg_t *args);
|
||||||
|
|
||||||
|
void ui_render_element(ElementTypes_t element, screen_arg_t *args) {
|
||||||
|
switch (element) {
|
||||||
|
case ElementTypes_t::Text:
|
||||||
|
render_Text(args);
|
||||||
|
break;
|
||||||
|
case ElementTypes_t::Number:
|
||||||
|
render_Number(args);
|
||||||
|
break;
|
||||||
|
case ElementTypes_t::Image:
|
||||||
|
render_Image(args);
|
||||||
|
break;
|
||||||
|
case ElementTypes_t::PowerSource:
|
||||||
|
render_PowerSource(args);
|
||||||
|
break;
|
||||||
|
case ElementTypes_t::Temperature:
|
||||||
|
render_Temperature(args);
|
||||||
|
break;
|
||||||
|
case ElementTypes_t::InputVoltage:
|
||||||
|
render_InputVoltage(args);
|
||||||
|
break;
|
||||||
|
case ElementTypes_t::ScrollBar:
|
||||||
|
render_ScrollBar(args);
|
||||||
|
break;
|
||||||
|
case ElementTypes_t::CheckBox:
|
||||||
|
render_CheckBox(args);
|
||||||
|
break;
|
||||||
|
case ElementTypes_t::TextScroller:
|
||||||
|
render_TextScroller(args);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_Text(screen_arg_t *args) {}
|
||||||
|
void render_Number(screen_arg_t *args) {}
|
||||||
|
void render_Image(screen_arg_t *args) {}
|
||||||
|
void render_PowerSource(screen_arg_t *args) {}
|
||||||
|
void render_Temperature(screen_arg_t *args) {}
|
||||||
|
void render_InputVoltage(screen_arg_t *args) {}
|
||||||
|
void render_ScrollBar(screen_arg_t *args) {}
|
||||||
|
void render_CheckBox(screen_arg_t *args) {}
|
||||||
|
void render_TextScroller(screen_arg_t *args) {}
|
||||||
28
source/UI/UI_Elements.h
Normal file
28
source/UI/UI_Elements.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "UI.h"
|
||||||
|
typedef enum {
|
||||||
|
Text, // Basic text splat, using re-encoded strings
|
||||||
|
Number, // Draws numbers using best size for the height (always one line)
|
||||||
|
Image, // Pre-rendered bitmap that can be memcpy'ed in
|
||||||
|
PowerSource, // Draws a battery icon, or text for voltage, or DC power plug
|
||||||
|
Temperature, // Draws the number with temperature symbol following (height picks font)
|
||||||
|
InputVoltage, // Draws the number with V following and also 1 dp(height picks font)
|
||||||
|
ScrollBar, // Draws a vertical scrollbar, number sets percentage 0-100
|
||||||
|
CheckBox, // Draws checkbox, ticked = number!=0
|
||||||
|
TextScroller, // Renders text, scrolling with time
|
||||||
|
} ElementTypes_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
struct {
|
||||||
|
uint8_t x;
|
||||||
|
uint8_t y;
|
||||||
|
} position;
|
||||||
|
struct {
|
||||||
|
uint8_t w;
|
||||||
|
uint8_t h;
|
||||||
|
} size;
|
||||||
|
|
||||||
|
|
||||||
|
} ElementSettings_t;
|
||||||
|
|
||||||
|
void ui_render_element(ElementTypes_t element, screen_arg_t *args);
|
||||||
246
source/UI/layout_96x16.yaml
Normal file
246
source/UI/layout_96x16.yaml
Normal file
@@ -0,0 +1,246 @@
|
|||||||
|
layouts:
|
||||||
|
simplifiedHome:
|
||||||
|
mirrorOnRotate: true
|
||||||
|
elements:
|
||||||
|
- type: image
|
||||||
|
position:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 42
|
||||||
|
h: 16
|
||||||
|
- type: image
|
||||||
|
position:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 42
|
||||||
|
h: 16
|
||||||
|
- type: powerSource
|
||||||
|
position:
|
||||||
|
x: 84
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 12
|
||||||
|
h: 16
|
||||||
|
|
||||||
|
simplifiedHomeWarning:
|
||||||
|
mirrorOnRotate: true
|
||||||
|
elements:
|
||||||
|
- type: text
|
||||||
|
position:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 42
|
||||||
|
h: 16
|
||||||
|
- type: image
|
||||||
|
position:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 42
|
||||||
|
h: 16
|
||||||
|
- type: powerSource
|
||||||
|
position:
|
||||||
|
x: 84
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 12
|
||||||
|
h: 16
|
||||||
|
detailedHome:
|
||||||
|
elements:
|
||||||
|
- type: temperature
|
||||||
|
position:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 48
|
||||||
|
h: 16
|
||||||
|
- type: temperature
|
||||||
|
position:
|
||||||
|
x: 48
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 32
|
||||||
|
h: 8
|
||||||
|
- type: inputVoltage
|
||||||
|
position:
|
||||||
|
x: 48
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 32
|
||||||
|
h: 8
|
||||||
|
detailedHomeWarning:
|
||||||
|
elements:
|
||||||
|
- type: temperature
|
||||||
|
position:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 48
|
||||||
|
h: 16
|
||||||
|
- type: inputVoltage
|
||||||
|
position:
|
||||||
|
x: 48
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 32
|
||||||
|
h: 8
|
||||||
|
|
||||||
|
SebugMenu:
|
||||||
|
elements:
|
||||||
|
- type: text
|
||||||
|
position:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 96
|
||||||
|
h: 8
|
||||||
|
- type: text
|
||||||
|
position:
|
||||||
|
x: 0
|
||||||
|
y: 8
|
||||||
|
size:
|
||||||
|
w: 48
|
||||||
|
h: 8
|
||||||
|
- type: number
|
||||||
|
position:
|
||||||
|
x: 48
|
||||||
|
y: 8
|
||||||
|
size:
|
||||||
|
w: 48
|
||||||
|
h: 8
|
||||||
|
SettingsCategory:
|
||||||
|
elements:
|
||||||
|
- type: text
|
||||||
|
position:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 78
|
||||||
|
h: 16
|
||||||
|
- type: image
|
||||||
|
position:
|
||||||
|
x: 79
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 16
|
||||||
|
h: 16
|
||||||
|
- type: scrollBar
|
||||||
|
x: 95
|
||||||
|
h: 16
|
||||||
|
SettingsEntryBool:
|
||||||
|
elements:
|
||||||
|
- type: text
|
||||||
|
position:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 78
|
||||||
|
h: 16
|
||||||
|
- type: checkbox
|
||||||
|
position:
|
||||||
|
x: 79
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 16
|
||||||
|
h: 16
|
||||||
|
- type: scrollBar
|
||||||
|
x: 95
|
||||||
|
h: 16
|
||||||
|
|
||||||
|
SettingsEntry3Number:
|
||||||
|
elements:
|
||||||
|
- type: text
|
||||||
|
position:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 78
|
||||||
|
h: 16
|
||||||
|
- type: number
|
||||||
|
position:
|
||||||
|
x: 79
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 36
|
||||||
|
h: 16
|
||||||
|
- type: scrollBar
|
||||||
|
x: 95
|
||||||
|
h: 16
|
||||||
|
|
||||||
|
SettingsEntry2Number:
|
||||||
|
elements:
|
||||||
|
- type: text
|
||||||
|
position:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 78
|
||||||
|
h: 16
|
||||||
|
- type: number
|
||||||
|
position:
|
||||||
|
x: 79
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 36
|
||||||
|
h: 16
|
||||||
|
- type: scrollBar
|
||||||
|
x: 95
|
||||||
|
h: 16
|
||||||
|
SettingsEntry1Number:
|
||||||
|
elements:
|
||||||
|
- type: text
|
||||||
|
position:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 78
|
||||||
|
h: 16
|
||||||
|
- type: number
|
||||||
|
position:
|
||||||
|
x: 79
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 36
|
||||||
|
h: 16
|
||||||
|
- type: scrollBar
|
||||||
|
x: 95
|
||||||
|
h: 16
|
||||||
|
SettingsEntry1Text:
|
||||||
|
elements:
|
||||||
|
- type: text
|
||||||
|
position:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 78
|
||||||
|
h: 16
|
||||||
|
- type: number
|
||||||
|
position:
|
||||||
|
x: 79
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 36
|
||||||
|
h: 16
|
||||||
|
- type: scrollBar
|
||||||
|
x: 95
|
||||||
|
h: 16
|
||||||
|
ScrollingText:
|
||||||
|
elements:
|
||||||
|
- type: textScroller
|
||||||
|
position:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
size:
|
||||||
|
w: 96
|
||||||
|
h: 16
|
||||||
|
SolderingMode:
|
||||||
|
elements:
|
||||||
|
DetailedSolderingMode:
|
||||||
|
elements:
|
||||||
|
NumberAdjust:
|
||||||
|
elements:
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user