From 61d918751e3e0b47f159e42a84cd9ee051c1df8c Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Sat, 17 May 2025 15:07:46 -0500 Subject: [PATCH] Unify the native display config between legacy display and MUI --- src/graphics/TFTDisplay.cpp | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/graphics/TFTDisplay.cpp b/src/graphics/TFTDisplay.cpp index 14787baff..cb3c9c395 100644 --- a/src/graphics/TFTDisplay.cpp +++ b/src/graphics/TFTDisplay.cpp @@ -666,6 +666,8 @@ class LGFX : public lgfx::LGFX_Device public: LGFX(void) { + int _width = 0; + int _height = 0; if (settingsMap[displayPanel] == st7789) _panel_instance = new lgfx::Panel_ST7789; else if (settingsMap[displayPanel] == st7735) @@ -686,7 +688,13 @@ class LGFX : public lgfx::LGFX_Device _panel_instance = new lgfx::Panel_NULL; LOG_ERROR("Unknown display panel configured!"); } - + if (settingsMap[displayRotate]) { + _width = settingsMap[displayHeight]; + _height = settingsMap[displayWidth]; + } else { + _width = settingsMap[displayWidth]; + _height = settingsMap[displayHeight]; + } auto buscfg = _bus_instance.config(); buscfg.spi_mode = 0; buscfg.spi_host = settingsMap[displayspidev]; @@ -700,11 +708,17 @@ class LGFX : public lgfx::LGFX_Device LOG_DEBUG("Height: %d, Width: %d ", settingsMap[displayHeight], settingsMap[displayWidth]); cfg.pin_cs = settingsMap[displayCS]; // Pin number where CS is connected (-1 = disable) cfg.pin_rst = settingsMap[displayReset]; - cfg.panel_width = settingsMap[displayWidth]; // actual displayable width - cfg.panel_height = settingsMap[displayHeight]; // actual displayable height + cfg.panel_width = _width; // actual displayable width + cfg.panel_height = _height; // actual displayable height cfg.offset_x = settingsMap[displayOffsetX]; // Panel offset amount in X direction cfg.offset_y = settingsMap[displayOffsetY]; // Panel offset amount in Y direction - cfg.offset_rotation = settingsMap[displayOffsetRotate]; // Rotation direction value offset 0~7 (4~7 is mirrored) + if (settingsMap[displayOffsetRotate] = 3) { + cfg.offset_rotation = 0; + } else if (settingsMap[displayOffsetRotate] = 7) { + cfg.offset_rotation = 4; + } else { + cfg.offset_rotation = settingsMap[displayOffsetRotate] + 1; // Rotation direction value offset 0~7 (4~7 is mirrored) + } cfg.invert = settingsMap[displayInvert]; // Set to true if the light/darkness of the panel is reversed _panel_instance->config(cfg); @@ -977,11 +991,7 @@ TFTDisplay::TFTDisplay(uint8_t address, int sda, int scl, OLEDDISPLAY_GEOMETRY g backlightEnable = p; #if ARCH_PORTDUINO - if (settingsMap[displayRotate]) { - setGeometry(GEOMETRY_RAWMODE, settingsMap[configNames::displayHeight], settingsMap[configNames::displayWidth]); - } else { - setGeometry(GEOMETRY_RAWMODE, settingsMap[configNames::displayWidth], settingsMap[configNames::displayHeight]); - } + setGeometry(GEOMETRY_RAWMODE, settingsMap[configNames::displayWidth], settingsMap[configNames::displayHeight]); #elif defined(SCREEN_ROTATE) setGeometry(GEOMETRY_RAWMODE, TFT_HEIGHT, TFT_WIDTH);