Der Ordner hieß JC_Display_Firmware, bedient seit 1.6.0 aber auch das Waveshare 7inch DSI LCD (H) am ESP32-P4-Pico. Der Name führte in die Irre. - JC_Display_Firmware/ -> P4_Display_Firmware/ (samt Sketch, den Arduino gleichnamig zum Ordner verlangt) - Doku/JC-Display_UART-Protokoll.md -> Doku/P4-Display_UART-Protokoll.md, Verweise und Titel angepasst - Verweise in CLAUDE.md, README und Quelltextköpfen nachgezogen Nur Namen und Pfade, keine Logikänderung. Der Vendor-Ordner JC_Display_Firmware_7zoll/ behält seinen Namen, ebenso die Bezeichner JC_PANEL_TYPE/jc_board_bringup im Quelltext. Enthält außerdem die bereits im Arbeitsverzeichnis liegende, noch nicht committete Ergänzung des Git-Workflows in CLAUDE.md (PRs über die Gitea-API statt der hängenden tea-CLI). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018QoLDQeUh1dCQz7yYZVb4Y
75 lines
3.1 KiB
C
75 lines
3.1 KiB
C
// =====================================================================================
|
|
// theme.h - Farbwelt & Style-Helfer, abgestimmt auf die Web-UI
|
|
// =====================================================================================
|
|
// Palette aus Skripte/style.css:
|
|
// Accent #d89904 (Gold) BG #000000 -> #1a1a1a Text #ffffff
|
|
// Danger #dc3545 Warn #FFCC00 Border #555555
|
|
// =====================================================================================
|
|
|
|
#pragma once
|
|
|
|
#include <lvgl.h>
|
|
|
|
#define COL_BG lv_color_hex(0x0a0a0a)
|
|
#define COL_BG2 lv_color_hex(0x1a1a1a)
|
|
#define COL_CARD lv_color_hex(0x1e1e1e)
|
|
#define COL_CARD2 lv_color_hex(0x141414)
|
|
#define COL_ACCENT lv_color_hex(0xd89904)
|
|
#define COL_ACCENT_D lv_color_hex(0xb37e03)
|
|
#define COL_TEXT lv_color_hex(0xffffff)
|
|
#define COL_TEXT_DIM lv_color_hex(0xb0b0b0)
|
|
#define COL_TEXT_MUT lv_color_hex(0x808080)
|
|
#define COL_DANGER lv_color_hex(0xdc3545)
|
|
#define COL_WARN lv_color_hex(0xffcc00)
|
|
#define COL_OK lv_color_hex(0x66bb6a)
|
|
#define COL_BORDER lv_color_hex(0x555555)
|
|
#define COL_INPUT_BG lv_color_hex(0x101010)
|
|
|
|
// Style-Selektor aus Part + State. LV_PART_* und LV_STATE_* sind in LVGL 9 zwei
|
|
// verschiedene Enum-Typen; sie direkt mit | zu verknuepfen ist in C++20 deprecated
|
|
// (-Wdeprecated-enum-enum-conversion). Der Zieltyp ist ohnehin uint32_t.
|
|
#define TH_SEL(part, state) ((lv_style_selector_t)(part) | (lv_style_selector_t)(state))
|
|
|
|
// ---- Karte (dunkel, abgerundet) ----
|
|
static inline lv_obj_t* th_card(lv_obj_t* parent) {
|
|
lv_obj_t* c = lv_obj_create(parent);
|
|
lv_obj_set_style_bg_color(c, COL_CARD, 0);
|
|
lv_obj_set_style_bg_opa(c, LV_OPA_COVER, 0);
|
|
lv_obj_set_style_border_width(c, 1, 0);
|
|
lv_obj_set_style_border_color(c, lv_color_hex(0x2a2a2a), 0);
|
|
lv_obj_set_style_radius(c, 12, 0);
|
|
lv_obj_set_style_pad_all(c, 10, 0);
|
|
lv_obj_set_style_text_color(c, COL_TEXT, 0);
|
|
return c;
|
|
}
|
|
|
|
// ---- Akzent-Button (Gold, Pille) ----
|
|
static inline lv_obj_t* th_button(lv_obj_t* parent, const char* txt, lv_color_t bg, lv_color_t fg) {
|
|
lv_obj_t* b = lv_button_create(parent);
|
|
lv_obj_set_style_bg_color(b, bg, 0);
|
|
lv_obj_set_style_radius(b, 18, 0);
|
|
lv_obj_set_style_shadow_width(b, 0, 0);
|
|
lv_obj_t* l = lv_label_create(b);
|
|
lv_label_set_text(l, txt);
|
|
lv_obj_set_style_text_color(l, fg, 0);
|
|
lv_obj_center(l);
|
|
return b;
|
|
}
|
|
|
|
static inline lv_obj_t* th_accent_button(lv_obj_t* parent, const char* txt) {
|
|
return th_button(parent, txt, COL_ACCENT, lv_color_hex(0x000000));
|
|
}
|
|
|
|
// ---- Eingabefeld (Textarea) im Web-Look ----
|
|
static inline lv_obj_t* th_textarea(lv_obj_t* parent, bool oneLine) {
|
|
lv_obj_t* ta = lv_textarea_create(parent);
|
|
lv_textarea_set_one_line(ta, oneLine);
|
|
lv_obj_set_style_bg_color(ta, COL_INPUT_BG, 0);
|
|
lv_obj_set_style_border_color(ta, COL_BORDER, 0);
|
|
lv_obj_set_style_border_color(ta, COL_ACCENT, TH_SEL(LV_PART_MAIN, LV_STATE_FOCUSED));
|
|
lv_obj_set_style_border_width(ta, 1, 0);
|
|
lv_obj_set_style_radius(ta, 8, 0);
|
|
lv_obj_set_style_text_color(ta, COL_TEXT, 0);
|
|
return ta;
|
|
}
|