diff --git a/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp b/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp index 1543e2c..22ea562 100644 --- a/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp +++ b/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp @@ -1,6 +1,10 @@ #ifdef CYD_SCREEN_DRIVER_ESP32_2432S028R #include "../screen_driver.h" +#ifdef CYD_SCREEN_VERTICAL + #error "Vertical screen not supported with the ESP32_2432S028R driver" +#endif + #include #include #include "../../conf/global_config.h" diff --git a/CYD-Klipper/src/core/device/ESP32-3248S035C.cpp b/CYD-Klipper/src/core/device/ESP32-3248S035C.cpp index 630107f..b66b236 100644 --- a/CYD-Klipper/src/core/device/ESP32-3248S035C.cpp +++ b/CYD-Klipper/src/core/device/ESP32-3248S035C.cpp @@ -1,4 +1,9 @@ #ifdef CYD_SCREEN_DRIVER_ESP32_3248S035C +#include "../screen_driver.h" + +#ifdef CYD_SCREEN_VERTICAL + #error "Vertical screen not supported with the ESP32_3248S035C driver" +#endif #include "lvgl.h" #include diff --git a/CYD-Klipper/src/core/device/ESP32-smartdisplay.cpp b/CYD-Klipper/src/core/device/ESP32-smartdisplay.cpp index e338982..39f692c 100644 --- a/CYD-Klipper/src/core/device/ESP32-smartdisplay.cpp +++ b/CYD-Klipper/src/core/device/ESP32-smartdisplay.cpp @@ -33,6 +33,14 @@ void lv_screen_intercept(_lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_col original_screen_driver(disp_drv, area, color_p); } +#ifdef CYD_SCREEN_VERTICAL +#define ROTATION_INVERTED LV_DISP_ROT_180 +#define ROTATION_NORMAL LV_DISP_ROT_NONE +#else +#define ROTATION_INVERTED LV_DISP_ROT_270 +#define ROTATION_NORMAL LV_DISP_ROT_90 +#endif + void screen_setup() { smartdisplay_init(); @@ -44,7 +52,7 @@ void screen_setup() } #endif // CYD_SCREEN_DISABLE_INVERT_COLORS - lv_disp_set_rotation(lv_disp_get_default(), (global_config.rotateScreen) ? LV_DISP_ROT_270 : LV_DISP_ROT_90); + lv_disp_set_rotation(lv_disp_get_default(), (global_config.rotateScreen) ? ROTATION_INVERTED : ROTATION_NORMAL); } #endif // CYD_SCREEN_DRIVER_ESP32_SMARTDISPLAY \ No newline at end of file diff --git a/CYD-Klipper/src/ui/nav_buttons.cpp b/CYD-Klipper/src/ui/nav_buttons.cpp index 3bfc6ec..3a489ae 100644 --- a/CYD-Klipper/src/ui/nav_buttons.cpp +++ b/CYD-Klipper/src/ui/nav_buttons.cpp @@ -79,7 +79,13 @@ static void btn_click_macros(lv_event_t * e){ void create_button(const char* icon, const char* name, lv_event_cb_t button_click, lv_event_cb_t label_update, lv_obj_t * root){ lv_obj_t* btn = lv_btn_create(root); lv_obj_set_flex_grow(btn, 1); + +#ifdef CYD_SCREEN_VERTICAL + lv_obj_set_height(btn, CYD_SCREEN_SIDEBAR_SIZE_PX); +#else lv_obj_set_width(btn, CYD_SCREEN_SIDEBAR_SIZE_PX); +#endif + lv_obj_add_style(btn, &nav_button_style, 0); if (button_click != NULL) lv_obj_add_event_cb(btn, button_click, LV_EVENT_CLICKED, NULL); @@ -101,10 +107,18 @@ void nav_buttons_setup(unsigned char active_panel){ lv_obj_clear_flag(lv_scr_act(), LV_OBJ_FLAG_SCROLLABLE); lv_obj_t * root_panel = lv_create_empty_panel(lv_scr_act()); + +#ifdef CYD_SCREEN_VERTICAL + lv_obj_set_size(root_panel, CYD_SCREEN_WIDTH_PX, CYD_SCREEN_SIDEBAR_SIZE_PX); + lv_obj_align(root_panel, LV_ALIGN_BOTTOM_LEFT, 0, 0); + lv_layout_flex_row(root_panel, LV_FLEX_ALIGN_START, 0, 0); +#else lv_obj_set_size(root_panel, CYD_SCREEN_SIDEBAR_SIZE_PX, CYD_SCREEN_HEIGHT_PX); lv_obj_align(root_panel, LV_ALIGN_TOP_LEFT, 0, 0); lv_layout_flex_column(root_panel, LV_FLEX_ALIGN_START, 0, 0); +#endif + // Files/Print create_button(LV_SYMBOL_COPY, "Idle", btn_click_files, update_printer_data_time, root_panel); @@ -118,7 +132,7 @@ void nav_buttons_setup(unsigned char active_panel){ create_button(LV_SYMBOL_GPS, "Macro", btn_click_macros, NULL, root_panel); lv_obj_t * panel = lv_create_empty_panel(lv_scr_act()); - lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX); + lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_PANEL_HEIGHT_PX); lv_obj_align(panel, LV_ALIGN_TOP_RIGHT, 0, 0); switch (active_panel){ diff --git a/CYD-Klipper/src/ui/panels/macros_panel.cpp b/CYD-Klipper/src/ui/panels/macros_panel.cpp index 7d61744..0481f6c 100644 --- a/CYD-Klipper/src/ui/panels/macros_panel.cpp +++ b/CYD-Klipper/src/ui/panels/macros_panel.cpp @@ -105,7 +105,7 @@ void macros_panel_init(lv_obj_t* panel) { lv_obj_t * root_panel = lv_create_empty_panel(panel); lv_obj_set_scrollbar_mode(root_panel, LV_SCROLLBAR_MODE_OFF); - lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2); + lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_PANEL_HEIGHT_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2); lv_obj_align(root_panel, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_GAP_PX * 2); lv_layout_flex_column(root_panel); diff --git a/CYD-Klipper/src/ui/panels/move_panel.cpp b/CYD-Klipper/src/ui/panels/move_panel.cpp index 2f19873..2ffc264 100644 --- a/CYD-Klipper/src/ui/panels/move_panel.cpp +++ b/CYD-Klipper/src/ui/panels/move_panel.cpp @@ -92,7 +92,7 @@ inline void root_panel_steppers_locked(lv_obj_t * root_panel){ const auto width = CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 2; lv_obj_t * panel = lv_create_empty_panel(root_panel); - lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX); + lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_PANEL_HEIGHT_PX); lv_obj_set_style_pad_all(panel, CYD_SCREEN_GAP_PX, 0); lv_layout_flex_column(panel, LV_FLEX_ALIGN_SPACE_BETWEEN, 0, 0); @@ -155,7 +155,7 @@ inline void root_panel_steppers_locked(lv_obj_t * root_panel){ inline void root_panel_steppers_unlocked(lv_obj_t * root_panel){ lv_obj_t * panel = lv_create_empty_panel(root_panel); - lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX); + lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_PANEL_HEIGHT_PX); lv_obj_set_style_pad_all(panel, CYD_SCREEN_GAP_PX, 0); lv_layout_flex_column(panel, LV_FLEX_ALIGN_CENTER); diff --git a/CYD-Klipper/src/ui/panels/print_panel.cpp b/CYD-Klipper/src/ui/panels/print_panel.cpp index 83819f9..e51d88f 100644 --- a/CYD-Klipper/src/ui/panels/print_panel.cpp +++ b/CYD-Klipper/src/ui/panels/print_panel.cpp @@ -95,7 +95,7 @@ void print_panel_init(lv_obj_t* panel){ lv_obj_set_style_radius(list, 0, 0); lv_obj_set_style_border_width(list, 0, 0); lv_obj_set_style_bg_opa(list, LV_OPA_TRANSP, 0); - lv_obj_set_size(list, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX); + lv_obj_set_size(list, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_PANEL_HEIGHT_PX); lv_obj_align(list, LV_ALIGN_CENTER, 0, 0); FILESYSTEM_FILE* files = get_files(25); diff --git a/CYD-Klipper/src/ui/panels/stats_panel.cpp b/CYD-Klipper/src/ui/panels/stats_panel.cpp index 8ef4687..b55793b 100644 --- a/CYD-Klipper/src/ui/panels/stats_panel.cpp +++ b/CYD-Klipper/src/ui/panels/stats_panel.cpp @@ -228,7 +228,7 @@ void stats_panel_init(lv_obj_t* panel) { auto panel_width = CYD_SCREEN_PANEL_WIDTH_PX / 2 - CYD_SCREEN_GAP_PX * 3; lv_obj_t * left_panel = lv_create_empty_panel(panel); - lv_obj_set_size(left_panel, panel_width, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2); + lv_obj_set_size(left_panel, panel_width, CYD_SCREEN_PANEL_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2); lv_layout_flex_column(left_panel); lv_obj_set_flex_align(left_panel, LV_FLEX_ALIGN_SPACE_BETWEEN, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START); lv_obj_align(left_panel, LV_ALIGN_TOP_LEFT, CYD_SCREEN_GAP_PX, CYD_SCREEN_GAP_PX); @@ -244,7 +244,7 @@ void stats_panel_init(lv_obj_t* panel) { create_stat_text_block(left_panel, "Feedrate:", label_feedrate); lv_obj_t * right_panel = lv_create_empty_panel(panel); - lv_obj_set_size(right_panel, panel_width, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2); + lv_obj_set_size(right_panel, panel_width, CYD_SCREEN_PANEL_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2); lv_layout_flex_column(right_panel, LV_FLEX_ALIGN_CENTER); lv_obj_align(right_panel, LV_ALIGN_TOP_RIGHT, -1 * CYD_SCREEN_GAP_PX, CYD_SCREEN_GAP_PX); diff --git a/CYD-Klipper/src/ui/panels/temp_panel.cpp b/CYD-Klipper/src/ui/panels/temp_panel.cpp index 7f4042f..7a866f1 100644 --- a/CYD-Klipper/src/ui/panels/temp_panel.cpp +++ b/CYD-Klipper/src/ui/panels/temp_panel.cpp @@ -126,7 +126,7 @@ static void keyboard_callback(lv_event_t * e){ static void show_keyboard(lv_event_t * e){ lv_obj_t * parent = lv_create_empty_panel(root_panel); lv_obj_set_style_bg_opa(parent, LV_OPA_50, 0); - lv_obj_set_size(parent, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX); + lv_obj_set_size(parent, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_PANEL_HEIGHT_PX); lv_layout_flex_column(parent, LV_FLEX_ALIGN_SPACE_BETWEEN); lv_obj_t * empty_panel = lv_create_empty_panel(parent); @@ -261,7 +261,7 @@ void temp_panel_init(lv_obj_t * panel){ edit_mode = false; lv_obj_t * root_temp_panel = lv_create_empty_panel(panel); - lv_obj_set_size(root_temp_panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX); + lv_obj_set_size(root_temp_panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_PANEL_HEIGHT_PX); lv_obj_align(root_temp_panel, LV_ALIGN_TOP_RIGHT, 0, 0); lv_obj_set_style_pad_all(root_temp_panel, CYD_SCREEN_GAP_PX, 0); lv_layout_flex_column(root_temp_panel); @@ -293,7 +293,7 @@ void temp_panel_init(lv_obj_t * panel){ lv_msg_subscribe_obj(DATA_PRINTER_DATA, chart, NULL); lv_obj_t * single_screen_panel = lv_create_empty_panel(root_temp_panel); - lv_obj_set_size(single_screen_panel, element_width, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2 - CYD_SCREEN_GAP_PX / 2); + lv_obj_set_size(single_screen_panel, element_width, CYD_SCREEN_PANEL_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2 - CYD_SCREEN_GAP_PX / 2); lv_layout_flex_column(single_screen_panel); lv_obj_t * temp_rows[2] = {0}; diff --git a/CYD-Klipper/src/ui/ui_utils.h b/CYD-Klipper/src/ui/ui_utils.h index bd437e3..d58ecc2 100644 --- a/CYD-Klipper/src/ui/ui_utils.h +++ b/CYD-Klipper/src/ui/ui_utils.h @@ -1,15 +1,30 @@ #pragma once -#ifndef CYD_SCREEN_WIDTH_PX -#define CYD_SCREEN_WIDTH_PX LCD_HEIGHT -#endif +#ifdef CYD_SCREEN_VERTICAL + #ifndef CYD_SCREEN_WIDTH_PX + #define CYD_SCREEN_WIDTH_PX LCD_WIDTH + #endif -#ifndef CYD_SCREEN_HEIGHT_PX -#define CYD_SCREEN_HEIGHT_PX LCD_WIDTH -#endif + #ifndef CYD_SCREEN_HEIGHT_PX + #define CYD_SCREEN_HEIGHT_PX LCD_HEIGHT + #endif -#define CYD_SCREEN_PANEL_WIDTH_PX \ - (CYD_SCREEN_WIDTH_PX - CYD_SCREEN_SIDEBAR_SIZE_PX) + #define CYD_SCREEN_PANEL_HEIGHT_PX \ + (CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_SIDEBAR_SIZE_PX) + #define CYD_SCREEN_PANEL_WIDTH_PX CYD_SCREEN_WIDTH_PX +#else + #ifndef CYD_SCREEN_WIDTH_PX + #define CYD_SCREEN_WIDTH_PX LCD_HEIGHT + #endif + + #ifndef CYD_SCREEN_HEIGHT_PX + #define CYD_SCREEN_HEIGHT_PX LCD_WIDTH + #endif + + #define CYD_SCREEN_PANEL_HEIGHT_PX CYD_SCREEN_HEIGHT_PX + #define CYD_SCREEN_PANEL_WIDTH_PX \ + (CYD_SCREEN_WIDTH_PX - CYD_SCREEN_SIDEBAR_SIZE_PX) +#endif typedef struct { lv_event_cb_t event;