From aaf5def3e23fcfca4aba1169e221b675585c9a3b Mon Sep 17 00:00:00 2001 From: radry Date: Tue, 14 Dec 2021 11:46:50 +0100 Subject: [PATCH] Implement Vertical GUI (Portrait Mode) (#2273) --- .github/workflows/buildBinary.yml | 4 +- .github/workflows/buildTest.yml | 4 +- TFT/src/User/API/FlashStore.c | 2 +- TFT/src/User/API/HW_Init.c | 1 + TFT/src/User/API/Settings.c | 6 +- TFT/src/User/API/UI/ui_draw.h | 16 +- TFT/src/User/API/config.c | 10 +- TFT/src/User/API/menu.c | 375 +++++++++++++++--- TFT/src/User/API/menu.h | 10 +- TFT/src/User/Hal/HD44780.c | 2 +- TFT/src/User/Hal/LCD_Driver/ILI9341.c | 18 +- TFT/src/User/Hal/LCD_Driver/ILI9341.h | 2 + TFT/src/User/Menu/Move.c | 18 +- TFT/src/User/Menu/Print.c | 43 +- TFT/src/User/Menu/PrintingMenu.c | 65 ++- TFT/src/User/Menu/ScreenSettings.c | 5 +- TFT/src/User/Menu/StatusScreen.c | 31 +- .../User/Variants/Resolution/TFT_240X320.h | 86 ++++ TFT/src/User/Variants/pin_TFT24_V1_1_P.h | 144 +++++++ TFT/src/User/Variants/variants.h | 2 + platformio.ini | 21 +- 21 files changed, 758 insertions(+), 107 deletions(-) create mode 100644 TFT/src/User/Variants/Resolution/TFT_240X320.h create mode 100644 TFT/src/User/Variants/pin_TFT24_V1_1_P.h diff --git a/.github/workflows/buildBinary.yml b/.github/workflows/buildBinary.yml index f2b610cffa..066be24003 100644 --- a/.github/workflows/buildBinary.yml +++ b/.github/workflows/buildBinary.yml @@ -54,6 +54,8 @@ jobs: run: platformio run --environment BIGTREE_TFT28_V3_0 - name: Build TFT24 V1.1 run: platformio run --environment BIGTREE_TFT24_V1_1 + - name: Build TFT24 V1.1 P + run: platformio run --environment BIGTREE_TFT24_V1_1_P - name: Build GD_TFT24 V1.1 run: platformio run --environment BIGTREE_GD_TFT24_V1_1 - name: Build MKS TFT32 V1.3 @@ -84,4 +86,4 @@ jobs: uses: actions-x/commit@v2 with: message: Update prebuilt binaries and config - token: ${{ secrets.MY_SECRET_TOKEN }} \ No newline at end of file + token: ${{ secrets.MY_SECRET_TOKEN }} diff --git a/.github/workflows/buildTest.yml b/.github/workflows/buildTest.yml index b24a116b06..543a883038 100644 --- a/.github/workflows/buildTest.yml +++ b/.github/workflows/buildTest.yml @@ -58,8 +58,8 @@ jobs: run: platformio run --environment BIGTREE_TFT28_V3_0 - name: Build TFT24 V1.1 run: platformio run --environment BIGTREE_TFT24_V1_1 - - name: Build TFT24 V1.1 - run: platformio run --environment BIGTREE_TFT24_V1_1 + - name: Build TFT24 V1.1 P + run: platformio run --environment BIGTREE_TFT24_V1_1_P - name: Build MKS TFT32 V1.3 run: platformio run --environment MKS_TFT32_V1_3 - name: Build MKS TFT32 V1.4 diff --git a/TFT/src/User/API/FlashStore.c b/TFT/src/User/API/FlashStore.c index b5ecde0c23..8dbdd88ef6 100644 --- a/TFT/src/User/API/FlashStore.c +++ b/TFT/src/User/API/FlashStore.c @@ -68,7 +68,7 @@ void readStoredPara(void) else { memcpy(&infoSettings, data + (index += 4), sizeof(SETTINGS)); - if ((paraStatus & PARA_TSC_EXIST) == 0) infoSettings.rotated_ui = DISABLED; + // if ((paraStatus & PARA_TSC_EXIST) == 0) infoSettings.rotated_ui = DISABLED; // Unecessarily rotates UI to Default?? } } diff --git a/TFT/src/User/API/HW_Init.c b/TFT/src/User/API/HW_Init.c index 9ad17051c4..20fe7377f3 100644 --- a/TFT/src/User/API/HW_Init.c +++ b/TFT/src/User/API/HW_Init.c @@ -89,6 +89,7 @@ void HW_Init(void) if (readIsTSCExist() == false) // read settings parameter { + LCD_RefreshDirection(infoSettings.rotated_ui); TSC_Calibration(); storePara(); } diff --git a/TFT/src/User/API/Settings.c b/TFT/src/User/API/Settings.c index 5ca5b76634..7f39e55bdd 100644 --- a/TFT/src/User/API/Settings.c +++ b/TFT/src/User/API/Settings.c @@ -27,7 +27,11 @@ void initSettings(void) (FILE_COMMENT_PARSING << INDEX_FILE_COMMENT_PARSING)); // UI Settings - infoSettings.rotated_ui = ROTATED_UI; + #ifdef PORTRAIT + infoSettings.rotated_ui = 3; + #else + infoSettings.rotated_ui = ROTATED_UI; + #endif infoSettings.language = LANGUAGE; infoSettings.status_screen = STATUS_SCREEN; infoSettings.title_bg_color = lcd_colors[TITLE_BACKGROUND_COLOR]; diff --git a/TFT/src/User/API/UI/ui_draw.h b/TFT/src/User/API/UI/ui_draw.h index 4aff6811b9..1bf2f39242 100644 --- a/TFT/src/User/API/UI/ui_draw.h +++ b/TFT/src/User/API/UI/ui_draw.h @@ -10,11 +10,21 @@ extern "C" { #include "variants.h" #include "GUI.h" -#define SPACE_X ((LCD_WIDTH - ICON_WIDTH * 4) / 4) +#ifdef PORTRAIT + #define SPACE_X ((LCD_WIDTH - ICON_WIDTH * 3) / 3) + #define SPACE_X_PER_ICON (LCD_WIDTH / 3) +#else + #define SPACE_X ((LCD_WIDTH - ICON_WIDTH * 4) / 4) + #define SPACE_X_PER_ICON (LCD_WIDTH / 4) +#endif #define START_X (SPACE_X / 2) -#define SPACE_X_PER_ICON (LCD_WIDTH / 4) -#define SPACE_Y ((LCD_HEIGHT - ICON_START_Y - ICON_HEIGHT * 2) / 2) + +#ifdef PORTRAIT + #define SPACE_Y ((LCD_HEIGHT - ICON_START_Y - ICON_HEIGHT * 3) / 3) +#else + #define SPACE_Y ((LCD_HEIGHT - ICON_START_Y - ICON_HEIGHT * 2) / 2) +#endif // select marlin or bigtree #define SPACE_SELEX ((LCD_WIDTH - ICON_WIDTH * 2) / 4) diff --git a/TFT/src/User/API/config.c b/TFT/src/User/API/config.c index 0e3b79aa71..e22ad05f24 100644 --- a/TFT/src/User/API/config.c +++ b/TFT/src/User/API/config.c @@ -563,11 +563,11 @@ void parseConfigKey(uint16_t index) //----------------------------UI Settings case C_INDEX_ROTATED_UI: - if (infoSettings.rotated_ui != getOnOff()) - { - scheduleRotate = true; - infoSettings.rotated_ui = getOnOff(); - } + #ifdef PORTRAIT + SET_VALID_INT_VALUE(infoSettings.rotated_ui, 2, 3); + #else + SET_VALID_INT_VALUE(infoSettings.rotated_ui, 0, 1); + #endif break; case C_INDEX_LANGUAGE: diff --git a/TFT/src/User/API/menu.c b/TFT/src/User/API/menu.c index d75d77688c..ff67800a47 100644 --- a/TFT/src/User/API/menu.c +++ b/TFT/src/User/API/menu.c @@ -3,14 +3,51 @@ #include "ListItem.h" #include "Notification.h" +#ifdef PORTRAIT +// exhibitRect is 2 ICON Space in the Lowest Row and 2 Center column. +const GUI_RECT exhibitRect = { + 0.5*ICON_WIDTH+0*SPACE_X+START_X, 0*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 2.5*ICON_WIDTH+1*SPACE_X+START_X, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y +}; +#else // exhibitRect is 2 ICON Space in the Upper Row and 2 Center column. const GUI_RECT exhibitRect = { 1*ICON_WIDTH+1*SPACE_X+START_X, 0*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y }; +#endif // MENU FOR A TEMPERATURE DISPLAY SCREEN (TOOL TEMP, PID, ETC...) const GUI_RECT rect_of_keysIN[TM_RECT_COUNT] = { - // 8 icons area + +#ifdef PORTRAIT + // 8 icons area VERTICAL GUI + {0*ICON_WIDTH+0*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 1*ICON_WIDTH+0*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, // decrease + {0.5*ICON_WIDTH+0*SPACE_X+START_X, 0*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 1.5*ICON_WIDTH+0*SPACE_X+START_X, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y}, // empty + {1.5*ICON_WIDTH+1*SPACE_X+START_X, 0*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 2.5*ICON_WIDTH+1*SPACE_X+START_X, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y}, // empty + {2*ICON_WIDTH+2*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, // increase + {0*ICON_WIDTH+0*SPACE_X+START_X, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 1*ICON_WIDTH+0*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, // type + + {1*ICON_WIDTH+1*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 2*ICON_WIDTH+1*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, // increment + {1*ICON_WIDTH+1*SPACE_X+START_X, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 2*ICON_WIDTH+1*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, // stop + {2*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, // usually back button + + // 8 labels area + {0*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 1*SPACE_X_PER_ICON, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + {0.5*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 1.5*SPACE_X_PER_ICON, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + {1.5*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 2.5*SPACE_X_PER_ICON, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + {2*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*SPACE_X_PER_ICON, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + {0*SPACE_X_PER_ICON, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 1*SPACE_X_PER_ICON, 3*ICON_HEIGHT+3*SPACE_Y+ICON_START_Y}, + + {1*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 2*SPACE_X_PER_ICON, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + {1*SPACE_X_PER_ICON, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 2*SPACE_X_PER_ICON, 3*ICON_HEIGHT+3*SPACE_Y+ICON_START_Y}, + {2*SPACE_X_PER_ICON, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 3*SPACE_X_PER_ICON, 3*ICON_HEIGHT+3*SPACE_Y+ICON_START_Y}, + + // title bar area + {0, 0, LCD_WIDTH, ICON_START_Y}, + + // display area bottom row + {0.5*ICON_WIDTH+0*SPACE_X+START_X, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 1.5*ICON_WIDTH+1*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y} +#else + // 8 icons area DEFAULT LANDSCAPE GUI {0*ICON_WIDTH+0*SPACE_X+START_X, 0*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 1*ICON_WIDTH+0*SPACE_X+START_X, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y}, {0, 0, 0, 0}, {0, 0, 0, 0}, @@ -32,12 +69,41 @@ const GUI_RECT rect_of_keysIN[TM_RECT_COUNT] = { // title bar area {0, 0, LCD_WIDTH, ICON_START_Y}, + // display area {1*ICON_WIDTH+1*SPACE_X+START_X, 0*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y} +#endif }; const GUI_RECT rect_of_key[MENU_RECT_COUNT] = { - // 8 icons area + +#ifdef PORTRAIT + //3 icons per row 2 rows last row 2 icons VERTICAL GUI + {0*ICON_WIDTH+0*SPACE_X+START_X, 0*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 1*ICON_WIDTH+0*SPACE_X+START_X, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y}, + {1*ICON_WIDTH+1*SPACE_X+START_X, 0*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 2*ICON_WIDTH+1*SPACE_X+START_X, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y}, + {2*ICON_WIDTH+2*SPACE_X+START_X, 0*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y}, + + {0*ICON_WIDTH+0*SPACE_X+START_X, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 1*ICON_WIDTH+0*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + {0*ICON_WIDTH+0*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 1*ICON_WIDTH+0*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + {1*ICON_WIDTH+1*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 2*ICON_WIDTH+1*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + + {2*ICON_WIDTH+2*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + {2*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + + // labels area + {0*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 1*SPACE_X_PER_ICON, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + {1*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 2*SPACE_X_PER_ICON, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + {2*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 3*SPACE_X_PER_ICON, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + + {0*SPACE_X_PER_ICON, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 1*SPACE_X_PER_ICON, 3*ICON_HEIGHT+3*SPACE_Y+ICON_START_Y}, + {0*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 1*SPACE_X_PER_ICON, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + {1*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 2*SPACE_X_PER_ICON, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + + {2*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*SPACE_X_PER_ICON, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + {2*SPACE_X_PER_ICON, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 3*SPACE_X_PER_ICON, 3*ICON_HEIGHT+3*SPACE_Y+ICON_START_Y}, + +#else + // 8 icons area DEFAULT LANDSCAPE GUI {0*ICON_WIDTH+0*SPACE_X+START_X, 0*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 1*ICON_WIDTH+0*SPACE_X+START_X, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y}, {1*ICON_WIDTH+1*SPACE_X+START_X, 0*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 2*ICON_WIDTH+1*SPACE_X+START_X, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y}, {2*ICON_WIDTH+2*SPACE_X+START_X, 0*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y}, @@ -56,9 +122,9 @@ const GUI_RECT rect_of_key[MENU_RECT_COUNT] = { {1*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 2*SPACE_X_PER_ICON, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, {2*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*SPACE_X_PER_ICON, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, {3*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 4*SPACE_X_PER_ICON, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, - +#endif // title bar area - {0, 0, LCD_WIDTH, ICON_START_Y}, + {0, 0, LCD_WIDTH, ICON_START_Y} }; const GUI_RECT rect_of_keySS[SS_RECT_COUNT] = { @@ -92,8 +158,37 @@ const GUI_RECT rect_of_keySS[SS_RECT_COUNT] = { // infobox area {1*ICON_WIDTH+1*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y} -#else +#elif defined PORTRAIT + // VERTICAL GUI 3 icons per row 2 rows last row status bar centered + + {0*ICON_WIDTH+0*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 1*ICON_WIDTH+0*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + {1*ICON_WIDTH+1*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 2*ICON_WIDTH+1*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + {2*ICON_WIDTH+2*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + {0*ICON_WIDTH+0*SPACE_X+START_X, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 1*ICON_WIDTH+0*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + {1*ICON_WIDTH+1*SPACE_X+START_X, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 2*ICON_WIDTH+1*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {2*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + + // labels area + {0*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 1*SPACE_X_PER_ICON, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + {1*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 2*SPACE_X_PER_ICON, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + {2*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*SPACE_X_PER_ICON, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + + {0*SPACE_X_PER_ICON, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 1*SPACE_X_PER_ICON, 3*ICON_HEIGHT+3*SPACE_Y+ICON_START_Y}, + {1*SPACE_X_PER_ICON, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 2*SPACE_X_PER_ICON, 3*ICON_HEIGHT+3*SPACE_Y+ICON_START_Y}, + {0.5*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 1.5*SPACE_X_PER_ICON, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + {1.5*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 2.5*SPACE_X_PER_ICON, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + {2*SPACE_X_PER_ICON, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 3*SPACE_X_PER_ICON, 3*ICON_HEIGHT+3*SPACE_Y+ICON_START_Y}, + + // title bar area + {0, 0, LCD_WIDTH, ICON_START_Y}, + + // infobox area + {0.5*ICON_WIDTH+0*SPACE_X+START_X, 0*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 2.5*ICON_WIDTH+1*SPACE_X+START_X, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y} +#else + //DEFAULT LANDSCAPE GUI // 8 icons area {0*ICON_WIDTH+0*SPACE_X+START_X, 0*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 1*ICON_WIDTH+0*SPACE_X+START_X, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y}, {1*ICON_WIDTH+1*SPACE_X+START_X, 0*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y, 2*ICON_WIDTH+1*SPACE_X+START_X, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y}, @@ -118,13 +213,43 @@ const GUI_RECT rect_of_keySS[SS_RECT_COUNT] = { {0, 0, LCD_WIDTH, ICON_START_Y}, // infobox area - {1*ICON_WIDTH+1*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, - + {1*ICON_WIDTH+1*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y} #endif }; -const GUI_RECT rect_of_keyPS[] = { +const GUI_RECT rect_of_keyPS[] = { //PS = PRINT SCREEN, This template is used to locate the live icons on the printing screen. + +#ifdef PORTRAIT + //VERTICAL GUI + // hotend area + {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0, + START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*0+PICON_SM_WIDTH*0, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*0}, + // bed area + {START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*1, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0, + START_X+PICON_LG_WIDTH*2+PICON_SPACE_X*1+PICON_SM_WIDTH*0, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*0}, + // fan area + {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, + START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_SM_WIDTH*1, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+PICON_HEIGHT*1}, + // timer area + {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1, + START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*0+PICON_SM_WIDTH*0, PICON_START_Y+PICON_HEIGHT*2+PICON_SPACE_Y*1}, + // layer area + {START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*1, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1, + START_X+PICON_LG_WIDTH*2+PICON_SPACE_X*1+PICON_SM_WIDTH*0, PICON_START_Y+PICON_HEIGHT*2+PICON_SPACE_Y*1}, + // speed area + {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1, + START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_SM_WIDTH*1, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+PICON_HEIGHT*2+PICON_SPACE_Y*1}, + + // 1st bottom icon area. + {0*ICON_WIDTH+0*SPACE_X+START_X, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 1*ICON_WIDTH+0*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + // 1 side icon next to layer and speed area + {2*ICON_WIDTH+2*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + // 2nd and 3rd icon bottom area + {1*ICON_WIDTH+1*SPACE_X+START_X, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 2*ICON_WIDTH+1*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + {2*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + +#else //DEFAULT LANDSCAPE GUI // hotend area {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0, START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*0+PICON_SM_WIDTH*0, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*0}, @@ -144,17 +269,84 @@ const GUI_RECT rect_of_keyPS[] = { {START_X+PICON_LG_WIDTH*2+PICON_SPACE_X*2, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1, START_X+PICON_LG_WIDTH*2+PICON_SPACE_X*2+PICON_SM_WIDTH*1, PICON_START_Y+PICON_HEIGHT*2+PICON_SPACE_Y*1}, - // 4 bottom icons area + // 4 bottom icons area. it's not used, instead rect_of_keySS is used {0*ICON_WIDTH+0*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 1*ICON_WIDTH+0*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, {1*ICON_WIDTH+1*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 2*ICON_WIDTH+1*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, {2*ICON_WIDTH+2*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, {3*ICON_WIDTH+3*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 4*ICON_WIDTH+3*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + #endif + // title bar area + {0, 0, LCD_WIDTH, ICON_START_Y} +}; + +const GUI_RECT rect_of_keyPS_draw[] = { + //VERTICAL GUI PRINT MENU FOR DRAWING UI + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + // 1st bottom icon + {0*ICON_WIDTH+0*SPACE_X+START_X, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 1*ICON_WIDTH+0*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + // 1 side icon next to layer and speed area (babystep icon) + {2*ICON_WIDTH+2*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + // 2nd and 3rd bottom icon + {1*ICON_WIDTH+1*SPACE_X+START_X, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 2*ICON_WIDTH+1*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + {2*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + + //LABELS + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + // 1st bottom icon + {0*SPACE_X_PER_ICON, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 1*SPACE_X_PER_ICON, 3*ICON_HEIGHT+3*SPACE_Y+ICON_START_Y}, + // 1 side icon next to layer and speed area + {2*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*SPACE_X_PER_ICON, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + // 2nd and 3rd bottom icon + {1*SPACE_X_PER_ICON, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 2*SPACE_X_PER_ICON, 3*ICON_HEIGHT+3*SPACE_Y+ICON_START_Y}, + {2*SPACE_X_PER_ICON, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 3*SPACE_X_PER_ICON, 3*ICON_HEIGHT+3*SPACE_Y+ICON_START_Y}, // title bar area - {0, 0, LCD_WIDTH, ICON_START_Y}, + {0, 0, LCD_WIDTH, ICON_START_Y} }; + const GUI_RECT rect_of_keyPS_end[] = { +#ifdef PORTRAIT + // VERTICAL GUI + // hotend area + {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0, + START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*0+PICON_SM_WIDTH*0, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*0}, + // bed area + {START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*1, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0, + START_X+PICON_LG_WIDTH*2+PICON_SPACE_X*1+PICON_SM_WIDTH*0, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*0}, + // fan area + {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, + START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_SM_WIDTH*1, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+PICON_HEIGHT*1}, + // timer area + {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1, + START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*0+PICON_SM_WIDTH*0, PICON_START_Y+PICON_HEIGHT*2+PICON_SPACE_Y*1}, + // layer area + {START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*1, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1, + START_X+PICON_LG_WIDTH*2+PICON_SPACE_X*1+PICON_SM_WIDTH*0, PICON_START_Y+PICON_HEIGHT*2+PICON_SPACE_Y*1}, + // speed area + {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1, + START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_SM_WIDTH*1, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+PICON_HEIGHT*2+PICON_SPACE_Y*1}, + + // 3 bottom icons area + {0*ICON_WIDTH+0*SPACE_X+START_X, 2*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 1*ICON_WIDTH+0*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y}, + {0,0,0,0}, + {0,0,0,0}, + // 1 side icon next to layer and speed area + {2*ICON_WIDTH+2*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + + // title bar area + {0, 0, LCD_WIDTH, ICON_START_Y}, + + // infobox + {1*SPACE_X_PER_ICON, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 3*ICON_HEIGHT+2*SPACE_Y+ICON_START_Y} + +#else //DEFAULT LANDSCAPE GUI // hotend area {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0, START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*0+PICON_SM_WIDTH*0, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*0}, @@ -184,21 +376,34 @@ const GUI_RECT rect_of_keyPS_end[] = { {0, 0, LCD_WIDTH, ICON_START_Y}, // infobox - {1*ICON_WIDTH+1*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y}, + {1*ICON_WIDTH+1*SPACE_X+START_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y, 3*ICON_WIDTH+2*SPACE_X+START_X, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y} +#endif }; const GUI_RECT rect_of_keyListView[ITEM_PER_PAGE + 1] = { - // 8 icons area - {START_X, 0*LISTITEM_HEIGHT+ICON_START_Y, LISTITEM_WIDTH+START_X, 1*LISTITEM_HEIGHT+ICON_START_Y}, - {START_X, 1*LISTITEM_HEIGHT+ICON_START_Y, LISTITEM_WIDTH+START_X, 2*LISTITEM_HEIGHT+ICON_START_Y}, - {START_X, 2*LISTITEM_HEIGHT+ICON_START_Y, LISTITEM_WIDTH+START_X, 3*LISTITEM_HEIGHT+ICON_START_Y}, - {START_X, 3*LISTITEM_HEIGHT+ICON_START_Y, LISTITEM_WIDTH+START_X, 4*LISTITEM_HEIGHT+ICON_START_Y}, - {START_X, 4*LISTITEM_HEIGHT+ICON_START_Y, LISTITEM_WIDTH+START_X, 5*LISTITEM_HEIGHT+ICON_START_Y}, - - {2*START_X + LISTITEM_WIDTH, 0*LIST_ICON_HEIGHT+0*LISTICON_SPACE_Y+ICON_START_Y, 2*START_X + LISTITEM_WIDTH + 1*LIST_ICON_WIDTH, 1*LIST_ICON_HEIGHT+0*LISTICON_SPACE_Y+ICON_START_Y}, - {2*START_X + LISTITEM_WIDTH, 1*LIST_ICON_HEIGHT+1*LISTICON_SPACE_Y+ICON_START_Y, 2*START_X + LISTITEM_WIDTH + 1*LIST_ICON_WIDTH, 2*LIST_ICON_HEIGHT+1*LISTICON_SPACE_Y+ICON_START_Y}, - {2*START_X + LISTITEM_WIDTH, 2*LIST_ICON_HEIGHT+2*LISTICON_SPACE_Y+ICON_START_Y, 2*START_X + LISTITEM_WIDTH + 1*LIST_ICON_WIDTH, 3*LIST_ICON_HEIGHT+2*LISTICON_SPACE_Y+ICON_START_Y}, - + #ifdef PORTRAIT + // list area VERTICAL GUI + {START_X, 0*LISTITEM_HEIGHT+ICON_START_Y, LISTITEM_WIDTH+START_X, 1*LISTITEM_HEIGHT+ICON_START_Y}, + {START_X, 1*LISTITEM_HEIGHT+ICON_START_Y, LISTITEM_WIDTH+START_X, 2*LISTITEM_HEIGHT+ICON_START_Y}, + {START_X, 2*LISTITEM_HEIGHT+ICON_START_Y, LISTITEM_WIDTH+START_X, 3*LISTITEM_HEIGHT+ICON_START_Y}, + {START_X, 3*LISTITEM_HEIGHT+ICON_START_Y, LISTITEM_WIDTH+START_X, 4*LISTITEM_HEIGHT+ICON_START_Y}, + {START_X, 4*LISTITEM_HEIGHT+ICON_START_Y, LISTITEM_WIDTH+START_X, 5*LISTITEM_HEIGHT+ICON_START_Y}, + // navigation button area + {START_X, 5*LISTITEM_HEIGHT+ICON_START_Y, START_X+1*LIST_ICON_WIDTH, 5*LISTITEM_HEIGHT+ICON_START_Y+1*LIST_ICON_HEIGHT}, + {START_X+1.5*LIST_ICON_WIDTH, 5*LISTITEM_HEIGHT+ICON_START_Y, START_X+2.5*LIST_ICON_WIDTH, 5*LISTITEM_HEIGHT+ICON_START_Y+1*LIST_ICON_HEIGHT}, + {LCD_WIDTH-START_X-1*LIST_ICON_WIDTH, 5*LISTITEM_HEIGHT+ICON_START_Y, LCD_WIDTH-START_X, 5*LISTITEM_HEIGHT+ICON_START_Y+1*LIST_ICON_HEIGHT}, + #else + // list area LANDSCAPE GUI + {START_X, 0*LISTITEM_HEIGHT+ICON_START_Y, LISTITEM_WIDTH+START_X, 1*LISTITEM_HEIGHT+ICON_START_Y}, + {START_X, 1*LISTITEM_HEIGHT+ICON_START_Y, LISTITEM_WIDTH+START_X, 2*LISTITEM_HEIGHT+ICON_START_Y}, + {START_X, 2*LISTITEM_HEIGHT+ICON_START_Y, LISTITEM_WIDTH+START_X, 3*LISTITEM_HEIGHT+ICON_START_Y}, + {START_X, 3*LISTITEM_HEIGHT+ICON_START_Y, LISTITEM_WIDTH+START_X, 4*LISTITEM_HEIGHT+ICON_START_Y}, + {START_X, 4*LISTITEM_HEIGHT+ICON_START_Y, LISTITEM_WIDTH+START_X, 5*LISTITEM_HEIGHT+ICON_START_Y}, + // navigation button area + {2*START_X + LISTITEM_WIDTH, 0*LIST_ICON_HEIGHT+0*LISTICON_SPACE_Y+ICON_START_Y, 2*START_X + LISTITEM_WIDTH + 1*LIST_ICON_WIDTH, 1*LIST_ICON_HEIGHT+0*LISTICON_SPACE_Y+ICON_START_Y}, + {2*START_X + LISTITEM_WIDTH, 1*LIST_ICON_HEIGHT+1*LISTICON_SPACE_Y+ICON_START_Y, 2*START_X + LISTITEM_WIDTH + 1*LIST_ICON_WIDTH, 2*LIST_ICON_HEIGHT+1*LISTICON_SPACE_Y+ICON_START_Y}, + {2*START_X + LISTITEM_WIDTH, 2*LIST_ICON_HEIGHT+2*LISTICON_SPACE_Y+ICON_START_Y, 2*START_X + LISTITEM_WIDTH + 1*LIST_ICON_WIDTH, 3*LIST_ICON_HEIGHT+2*LISTICON_SPACE_Y+ICON_START_Y}, + #endif // title bar area {0, 0, LCD_WIDTH, ICON_START_Y} }; @@ -210,7 +415,6 @@ const GUI_RECT rect_of_titleBar[] = { // Clean up the gaps outside icons #ifdef TFT70_V3_0 - void menuClearGaps(void) { const GUI_RECT gapsMenu[]={ @@ -262,28 +466,84 @@ void menuClearGaps(void) } } } - #else - -void menuClearGaps(void) -{ - const GUI_RECT gaps[] = { - {0, 0, LCD_WIDTH, TITLE_END_Y}, - {0, TITLE_END_Y, LCD_WIDTH, rect_of_key[0].y0}, - {0, rect_of_key[0].y0, rect_of_key[0].x0, LCD_HEIGHT}, - {rect_of_key[0].x1, rect_of_key[0].y0, rect_of_key[1].x0, LCD_HEIGHT}, - {rect_of_key[1].x1, rect_of_key[0].y0, rect_of_key[2].x0, LCD_HEIGHT}, - {rect_of_key[2].x1, rect_of_key[0].y0, rect_of_key[3].x0, LCD_HEIGHT}, - {rect_of_key[3].x1, rect_of_key[0].y0, LCD_WIDTH, LCD_HEIGHT} - }; - - GUI_SetBkColor(infoSettings.title_bg_color); - GUI_ClearPrect(gaps); - GUI_SetBkColor(infoSettings.bg_color); - for (uint8_t i = 1; i < COUNT(gaps); i++) - GUI_ClearPrect(gaps + i); -} - + #ifdef PORTRAIT // clear gaps PORTRAIT except TFT70 + void menuClearGaps(void) + { + const GUI_RECT gaps[] = { + {0, 0, LCD_WIDTH, TITLE_END_Y}, + {0, TITLE_END_Y, LCD_WIDTH, rect_of_key[0].y0}, + + {0, rect_of_key[0].y0, rect_of_key[0].x0, rect_of_key[6].y0}, + {rect_of_key[0].x1, rect_of_key[0].y0, rect_of_key[1].x0, rect_of_key[6].y0}, + {rect_of_key[1].x1, rect_of_key[0].y0, rect_of_key[2].x0, rect_of_key[6].y0}, + {rect_of_key[2].x1, rect_of_key[0].y0, LCD_WIDTH, rect_of_key[6].y0}, + + {0, rect_of_key[6].y0, rect_of_key[6].x0, LCD_HEIGHT}, + {rect_of_key[6].x1, rect_of_key[6].y0, rect_of_key[7].x0, LCD_HEIGHT}, + {rect_of_key[7].x1, rect_of_key[6].y0, LCD_WIDTH, LCD_HEIGHT} + }; + + const GUI_RECT gapsSS[] = { + {0, 0, LCD_WIDTH, TITLE_END_Y}, + {0, TITLE_END_Y, LCD_WIDTH, rect_of_keySS[0].y0}, + + {0, rect_of_keySS[17].y0, rect_of_keySS[0].x0, rect_of_keySS[0].y0}, + {rect_of_keySS[17].x1, rect_of_keySS[17].y0, LCD_WIDTH, rect_of_keySS[0].y0}, + + {0, rect_of_keySS[0].y0, rect_of_keySS[0].x0, LCD_HEIGHT}, + {rect_of_keySS[0].x1, rect_of_keySS[0].y0, rect_of_keySS[1].x0, LCD_HEIGHT}, + {rect_of_keySS[1].x1, rect_of_keySS[0].y0, rect_of_keySS[2].x0, LCD_HEIGHT}, + {rect_of_keySS[2].x1, rect_of_keySS[0].y0, LCD_WIDTH, LCD_HEIGHT}, + }; + + if ((MENU_IS(menuHeat)) || + (MENU_IS(menuLoadUnload)) || + (MENU_IS(menuPid)) || + (MENU_IS(menuTuneExtruder)) || + (MENU_IS(menuFan)) || + (MENU_IS(menuExtrude)) || + (MENU_IS(menuSpeed)) || + (MENU_IS(menuZOffset)) || + (MENU_IS(menuMBL)) || + (MENU_IS(menuStatus)) || + (MENU_IS(menuBabystep))) + { + GUI_ClearPrect(gapsSS); + GUI_SetBkColor(infoSettings.bg_color); + for (uint8_t i = 1; i < COUNT(gapsSS); i++) + GUI_ClearPrect(gapsSS + i); + } + else if (MENU_IS(menuPrinting)) + GUI_Clear(MENU_BACKGROUND_COLOR); + else + { + GUI_ClearPrect(gaps); + GUI_SetBkColor(infoSettings.bg_color); + for (uint8_t i = 1; i < COUNT(gaps); i++) + GUI_ClearPrect(gaps + i); + } + } + #else // clear gaps on Landscape Mode except TFT70 + void menuClearGaps(void) + { + const GUI_RECT gaps[] = { + {0, 0, LCD_WIDTH, TITLE_END_Y}, + {0, TITLE_END_Y, LCD_WIDTH, rect_of_key[0].y0}, + {0, rect_of_key[0].y0, rect_of_key[0].x0, LCD_HEIGHT}, + {rect_of_key[0].x1, rect_of_key[0].y0, rect_of_key[1].x0, LCD_HEIGHT}, + {rect_of_key[1].x1, rect_of_key[0].y0, rect_of_key[2].x0, LCD_HEIGHT}, + {rect_of_key[2].x1, rect_of_key[0].y0, rect_of_key[3].x0, LCD_HEIGHT}, + {rect_of_key[3].x1, rect_of_key[0].y0, LCD_WIDTH, LCD_HEIGHT} + }; + + GUI_SetBkColor(infoSettings.title_bg_color); + GUI_ClearPrect(gaps); + GUI_SetBkColor(infoSettings.bg_color); + for (uint8_t i = 1; i < COUNT(gaps); i++) + GUI_ClearPrect(gaps + i); + } + #endif #endif void GUI_RestoreColorDefault(void) @@ -609,9 +869,29 @@ void menuDrawPage(const MENUITEMS *menuItems) TSC_ReDrawIcon = (MENU_IS(menuPrinting)) ? itemDrawIconPress_PS : itemDrawIconPress; curMenuRedrawHandle = NULL; - curRect = (MENU_IS(menuStatus)) ? rect_of_keySS : rect_of_key; + #ifdef PORTRAIT + if (MENU_IS(menuPrinting)) + curRect = rect_of_keyPS_draw; + else if (MENU_IS(menuStatus)) + curRect = rect_of_keySS; + else if ((MENU_IS(menuHeat)) || + (MENU_IS(menuLoadUnload)) || + (MENU_IS(menuPid)) || + (MENU_IS(menuTuneExtruder)) || + (MENU_IS(menuFan)) || + (MENU_IS(menuExtrude)) || + (MENU_IS(menuSpeed)) || + (MENU_IS(menuZOffset)) || + (MENU_IS(menuMBL)) || + (MENU_IS(menuBabystep))) + curRect = rect_of_keysIN; + else + curRect = rect_of_key; + #else + curRect = (MENU_IS(menuStatus)) ? rect_of_keySS : rect_of_key; + #endif - menuClearGaps(); // Use this function instead of GUI_Clear to eliminate the splash screen when clearing the screen. + menuClearGaps(); menuDrawTitle(labelGetAddress(&menuItems->title)); for (i = 0; i < ITEM_PER_PAGE; i++) @@ -826,7 +1106,8 @@ KEY_VALUES menuKeyGetValue(void) (MENU_IS(menuExtrude)) || (MENU_IS(menuSpeed)) || (MENU_IS(menuZOffset)) || - (MENU_IS(menuMBL))) + (MENU_IS(menuMBL)) || + (MENU_IS(menuBabystep))) { tempkey = (KEY_VALUES)KEY_GetValue(COUNT(rect_of_keysIN), rect_of_keysIN); } diff --git a/TFT/src/User/API/menu.h b/TFT/src/User/API/menu.h index a6716926ab..7314274511 100644 --- a/TFT/src/User/API/menu.h +++ b/TFT/src/User/API/menu.h @@ -21,8 +21,13 @@ extern "C" { #define CENTER_Y ((exhibitRect.y1 - exhibitRect.y0) / 2 + exhibitRect.y0) #define CENTER_X ((exhibitRect.x1 - exhibitRect.x0 - BYTE_WIDTH) / 2 + exhibitRect.x0) -#define LISTITEM_WIDTH (LCD_WIDTH - (3 * START_X) - LIST_ICON_WIDTH) -#define LISTITEM_HEIGHT ((LCD_HEIGHT - ICON_START_Y - START_X) / 5) +#ifdef PORTRAIT + #define LISTITEM_WIDTH (LCD_WIDTH - (3 * START_X)) + #define LISTITEM_HEIGHT ((LCD_HEIGHT - ICON_START_Y - START_X) / 6) +#else + #define LISTITEM_WIDTH (LCD_WIDTH - (3 * START_X) - LIST_ICON_WIDTH) + #define LISTITEM_HEIGHT ((LCD_HEIGHT - ICON_START_Y - START_X) / 5) +#endif #define LISTICON_SPACE_Y ((LCD_HEIGHT - ICON_START_Y - START_X - (3 * LIST_ICON_HEIGHT)) / 2) typedef enum @@ -166,6 +171,7 @@ extern const GUI_RECT rect_of_key[MENU_RECT_COUNT]; extern const GUI_RECT rect_of_keySS[SS_RECT_COUNT]; extern const GUI_RECT rect_of_keyPS[]; extern const GUI_RECT rect_of_keyPS_end[]; +extern const GUI_RECT rect_of_keyPS_draw[]; // Used to draw VERTICAL GUI printing menu extern const GUI_RECT rect_of_titleBar[1]; diff --git a/TFT/src/User/Hal/HD44780.c b/TFT/src/User/Hal/HD44780.c index 807d1b537b..0d04427571 100644 --- a/TFT/src/User/Hal/HD44780.c +++ b/TFT/src/User/Hal/HD44780.c @@ -49,7 +49,7 @@ void HD44780_Config(CIRCULAR_QUEUE *queue) NVIC_InitTypeDef NVIC_InitStructure; // Connect GPIOB15 to the interrupt line - #if !defined(TFT24_V1_1) + #if !defined(TFT24_V1_1) && !defined(TFT24_V1_1_P) RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); // Enable SYSCFG clock SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource15); // PB15 is connected to interrupt line 15 #else diff --git a/TFT/src/User/Hal/LCD_Driver/ILI9341.c b/TFT/src/User/Hal/LCD_Driver/ILI9341.c index 61135861e5..16f818a617 100644 --- a/TFT/src/User/Hal/LCD_Driver/ILI9341.c +++ b/TFT/src/User/Hal/LCD_Driver/ILI9341.c @@ -125,7 +125,23 @@ void ILI9341_SetDirection(uint8_t rotate) { LCD_WR_REG(0X36); - LCD_WR_DATA(rotate ? ILI9341_180_DEGREE_REG_VALUE : ILI9341_0_DEGREE_REG_VALUE); + switch (rotate) + { + case 0: + LCD_WR_DATA(ILI9341_180_DEGREE_REG_VALUE); + break; + case 1: + LCD_WR_DATA(ILI9341_0_DEGREE_REG_VALUE); + break; + case 2: + LCD_WR_DATA(ILI9341_90_DEGREE_REG_VALUE); + break; + case 3: + LCD_WR_DATA(ILI9341_270_DEGREE_REG_VALUE); + break; + default: + LCD_WR_DATA(ILI9341_180_DEGREE_REG_VALUE); + } } void ILI9341_SetWindow(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey) diff --git a/TFT/src/User/Hal/LCD_Driver/ILI9341.h b/TFT/src/User/Hal/LCD_Driver/ILI9341.h index af6292983d..1820d31b27 100644 --- a/TFT/src/User/Hal/LCD_Driver/ILI9341.h +++ b/TFT/src/User/Hal/LCD_Driver/ILI9341.h @@ -7,6 +7,8 @@ extern "C" { #define ILI9341_0_DEGREE_REG_VALUE 0X68 #define ILI9341_180_DEGREE_REG_VALUE 0XA8 +#define ILI9341_90_DEGREE_REG_VALUE 0XC8 +#define ILI9341_270_DEGREE_REG_VALUE 0X8 uint8_t LCD_DriveIsILI9341(void); void ILI9341_Init_Sequential(void); diff --git a/TFT/src/User/Menu/Move.c b/TFT/src/User/Menu/Move.c index 68538d2b57..bd14ab77ee 100644 --- a/TFT/src/User/Menu/Move.c +++ b/TFT/src/User/Menu/Move.c @@ -31,14 +31,20 @@ void drawXYZ(void) char tempstr[20]; GUI_SetColor(infoSettings.status_color); - sprintf(tempstr, "X:%.2f ", coordinateGetAxisActual(X_AXIS)); - GUI_DispString(START_X + 1 * SPACE_X + 1 * ICON_WIDTH, (ICON_START_Y - BYTE_HEIGHT) / 2, (uint8_t *)tempstr); + #ifdef PORTRAIT + sprintf(tempstr, "X:%.2f Y:%.2f Z:%2.f", coordinateGetAxisActual(X_AXIS), coordinateGetAxisActual(Y_AXIS), + coordinateGetAxisActual(Z_AXIS)); + GUI_DispString(START_X + 1 * SPACE_X + 1 * ICON_WIDTH, (ICON_START_Y - BYTE_HEIGHT) / 2, (uint8_t *)tempstr); + #else + sprintf(tempstr, "X:%.2f ", coordinateGetAxisActual(X_AXIS)); + GUI_DispString(START_X + 1 * SPACE_X + 1 * ICON_WIDTH, (ICON_START_Y - BYTE_HEIGHT) / 2, (uint8_t *)tempstr); - sprintf(tempstr, "Y:%.2f ", coordinateGetAxisActual(Y_AXIS)); - GUI_DispString(START_X + 2 * SPACE_X + 2 * ICON_WIDTH, (ICON_START_Y - BYTE_HEIGHT) / 2, (uint8_t *)tempstr); + sprintf(tempstr, "Y:%.2f ", coordinateGetAxisActual(Y_AXIS)); + GUI_DispString(START_X + 2 * SPACE_X + 2 * ICON_WIDTH, (ICON_START_Y - BYTE_HEIGHT) / 2, (uint8_t *)tempstr); - sprintf(tempstr, "Z:%.2f ", coordinateGetAxisActual(Z_AXIS)); - GUI_DispString(START_X + 3 * SPACE_X + 3 * ICON_WIDTH, (ICON_START_Y - BYTE_HEIGHT) / 2, (uint8_t *)tempstr); + sprintf(tempstr, "Z:%.2f ", coordinateGetAxisActual(Z_AXIS)); + GUI_DispString(START_X + 3 * SPACE_X + 3 * ICON_WIDTH, (ICON_START_Y - BYTE_HEIGHT) / 2, (uint8_t *)tempstr); + #endif GUI_SetColor(infoSettings.font_color); } diff --git a/TFT/src/User/Menu/Print.c b/TFT/src/User/Menu/Print.c index e61e6ab4a4..429e9870e3 100644 --- a/TFT/src/User/Menu/Print.c +++ b/TFT/src/User/Menu/Print.c @@ -9,22 +9,41 @@ static bool list_mode = true; const GUI_RECT titleRect = {10, (TITLE_END_Y - BYTE_HEIGHT) / 2, LCD_WIDTH - 10, (TITLE_END_Y - BYTE_HEIGHT) / 2 + BYTE_HEIGHT}; -const GUI_RECT gcodeRect[NUM_PER_PAGE] = { - {BYTE_WIDTH/2+0*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2, - 1*SPACE_X_PER_ICON-BYTE_WIDTH/2, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2+BYTE_HEIGHT}, +#ifdef PORTRAIT + const GUI_RECT gcodeRect[NUM_PER_PAGE] = { + {BYTE_WIDTH/2+0*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2, + 1*SPACE_X_PER_ICON-BYTE_WIDTH/2, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2+BYTE_HEIGHT}, - {BYTE_WIDTH/2+1*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2, - 2*SPACE_X_PER_ICON-BYTE_WIDTH/2, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2+BYTE_HEIGHT}, + {BYTE_WIDTH/2+1*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2, + 2*SPACE_X_PER_ICON-BYTE_WIDTH/2, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2+BYTE_HEIGHT}, - {BYTE_WIDTH/2+2*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2, - 3*SPACE_X_PER_ICON-BYTE_WIDTH/2, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2+BYTE_HEIGHT}, + {BYTE_WIDTH/2+2*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2, + 3*SPACE_X_PER_ICON-BYTE_WIDTH/2, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2+BYTE_HEIGHT}, - {BYTE_WIDTH/2+3*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2, - 4*SPACE_X_PER_ICON-BYTE_WIDTH/2, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2+BYTE_HEIGHT}, + {BYTE_WIDTH/2+0*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2, + 1*SPACE_X_PER_ICON-BYTE_WIDTH/2, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2+BYTE_HEIGHT}, - {BYTE_WIDTH/2+0*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2, - 1*SPACE_X_PER_ICON-BYTE_WIDTH/2, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2+BYTE_HEIGHT}, -}; + {BYTE_WIDTH/2+1*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2, + 2*SPACE_X_PER_ICON-BYTE_WIDTH/2, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2+BYTE_HEIGHT}, + }; +#else + const GUI_RECT gcodeRect[NUM_PER_PAGE] = { + {BYTE_WIDTH/2+0*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2, + 1*SPACE_X_PER_ICON-BYTE_WIDTH/2, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2+BYTE_HEIGHT}, + + {BYTE_WIDTH/2+1*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2, + 2*SPACE_X_PER_ICON-BYTE_WIDTH/2, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2+BYTE_HEIGHT}, + + {BYTE_WIDTH/2+2*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2, + 3*SPACE_X_PER_ICON-BYTE_WIDTH/2, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2+BYTE_HEIGHT}, + + {BYTE_WIDTH/2+3*SPACE_X_PER_ICON, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2, + 4*SPACE_X_PER_ICON-BYTE_WIDTH/2, 1*ICON_HEIGHT+0*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2+BYTE_HEIGHT}, + + {BYTE_WIDTH/2+0*SPACE_X_PER_ICON, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2, + 1*SPACE_X_PER_ICON-BYTE_WIDTH/2, 2*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+(SPACE_Y-BYTE_HEIGHT)/2+BYTE_HEIGHT}, + }; +#endif void normalNameDisp(const GUI_RECT *rect, uint8_t *name) { diff --git a/TFT/src/User/Menu/PrintingMenu.c b/TFT/src/User/Menu/PrintingMenu.c index 416d070b22..dff4baa232 100644 --- a/TFT/src/User/Menu/PrintingMenu.c +++ b/TFT/src/User/Menu/PrintingMenu.c @@ -1,28 +1,54 @@ #include "Printing.h" #include "includes.h" -const GUI_RECT printinfo_val_rect[6] = { - {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_VAL_X, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0+PICON_VAL_Y, - START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_VAL_LG_EX, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0+PICON_VAL_Y+BYTE_HEIGHT}, +#ifdef PORTRAIT + const GUI_RECT printinfo_val_rect[6] = { //LABELS + {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_VAL_X, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0+PICON_VAL_Y, + START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_VAL_LG_EX, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0+PICON_VAL_Y+BYTE_HEIGHT}, - {START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*1+PICON_VAL_X, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0+PICON_VAL_Y, - START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*1+PICON_VAL_LG_EX, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0+PICON_VAL_Y+BYTE_HEIGHT}, + {START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*1+PICON_VAL_X, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0+PICON_VAL_Y, + START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*1+PICON_VAL_LG_EX, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0+PICON_VAL_Y+BYTE_HEIGHT}, - {START_X+PICON_LG_WIDTH*2+PICON_SPACE_X*2+PICON_VAL_X, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0+PICON_VAL_Y, - START_X+PICON_LG_WIDTH*2+PICON_SPACE_X*2+PICON_VAL_SM_EX, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0+PICON_VAL_Y+BYTE_HEIGHT}, + {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_VAL_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+PICON_VAL_Y, + START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_VAL_SM_EX, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+PICON_VAL_Y+BYTE_HEIGHT}, - {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_VAL_X, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y, - START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_VAL_LG_EX, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y+BYTE_HEIGHT}, + {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_VAL_X, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y, + START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_VAL_LG_EX, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y+BYTE_HEIGHT}, - {START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*1+PICON_VAL_X, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y, - START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*1+PICON_VAL_LG_EX, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y+BYTE_HEIGHT}, + {START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*1+PICON_VAL_X, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y, + START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*1+PICON_VAL_LG_EX, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y+BYTE_HEIGHT}, + + {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_VAL_X, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y, + START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_VAL_SM_EX, 1*ICON_HEIGHT+1*SPACE_Y+ICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y+BYTE_HEIGHT}, + }; +#else + const GUI_RECT printinfo_val_rect[6] = { //LABELS + {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_VAL_X, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0+PICON_VAL_Y, + START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_VAL_LG_EX, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0+PICON_VAL_Y+BYTE_HEIGHT}, - {START_X+PICON_LG_WIDTH*2+PICON_SPACE_X*2+PICON_VAL_X, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y, - START_X+PICON_LG_WIDTH*2+PICON_SPACE_X*2+PICON_VAL_SM_EX, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y+BYTE_HEIGHT}, -}; + {START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*1+PICON_VAL_X, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0+PICON_VAL_Y, + START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*1+PICON_VAL_LG_EX, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0+PICON_VAL_Y+BYTE_HEIGHT}, + + {START_X+PICON_LG_WIDTH*2+PICON_SPACE_X*2+PICON_VAL_X, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0+PICON_VAL_Y, + START_X+PICON_LG_WIDTH*2+PICON_SPACE_X*2+PICON_VAL_SM_EX, PICON_START_Y+PICON_HEIGHT*0+PICON_SPACE_Y*0+PICON_VAL_Y+BYTE_HEIGHT}, + + {START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_VAL_X, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y, + START_X+PICON_LG_WIDTH*0+PICON_SPACE_X*0+PICON_VAL_LG_EX, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y+BYTE_HEIGHT}, + + {START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*1+PICON_VAL_X, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y, + START_X+PICON_LG_WIDTH*1+PICON_SPACE_X*1+PICON_VAL_LG_EX, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y+BYTE_HEIGHT}, + + {START_X+PICON_LG_WIDTH*2+PICON_SPACE_X*2+PICON_VAL_X, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y, + START_X+PICON_LG_WIDTH*2+PICON_SPACE_X*2+PICON_VAL_SM_EX, PICON_START_Y+PICON_HEIGHT*1+PICON_SPACE_Y*1+PICON_VAL_Y+BYTE_HEIGHT}, + }; +#endif #define PROGRESS_BAR_RAW_X0 (START_X) // X0 aligned to first icon -#define PROGRESS_BAR_RAW_X1 (START_X + 4*ICON_WIDTH + 3*SPACE_X) // X1 aligned to last icon +#ifdef PORTRAIT + #define PROGRESS_BAR_RAW_X1 (START_X + 3*ICON_WIDTH + 2*SPACE_X) // X1 aligned to last icon +#else + #define PROGRESS_BAR_RAW_X1 (START_X + 4*ICON_WIDTH + 3*SPACE_X) // X1 aligned to last icon +#endif #ifdef MARKED_PROGRESS_BAR #define PROGRESS_BAR_DELTA_X ((PROGRESS_BAR_RAW_X1 - PROGRESS_BAR_RAW_X0) % 10) // use marked progress bar. Width rounding factor multiple of 10 slices @@ -37,8 +63,13 @@ const GUI_RECT printinfo_val_rect[6] = { #define PROGRESS_BAR_FULL_WIDTH (PROGRESS_BAR_X1 - PROGRESS_BAR_X0) // 100% progress bar width #define PROGRESS_BAR_SLICE_WIDTH (PROGRESS_BAR_FULL_WIDTH / 10) // 10% progress bar width -const GUI_RECT progressBar = {PROGRESS_BAR_X0, PICON_START_Y + PICON_HEIGHT * 2 + PICON_SPACE_Y * 2 + 1, - PROGRESS_BAR_X1, ICON_START_Y + ICON_HEIGHT + SPACE_Y - PICON_SPACE_Y - 1}; +#ifdef PORTRAIT + const GUI_RECT progressBar = {PROGRESS_BAR_X0, TITLE_END_Y + 1, + PROGRESS_BAR_X1, PICON_START_Y - PICON_SPACE_Y - 1}; +#else + const GUI_RECT progressBar = {PROGRESS_BAR_X0, PICON_START_Y + PICON_HEIGHT * 2 + PICON_SPACE_Y * 2 + 1, + PROGRESS_BAR_X1, ICON_START_Y + ICON_HEIGHT + SPACE_Y - PICON_SPACE_Y - 1}; +#endif enum { diff --git a/TFT/src/User/Menu/ScreenSettings.c b/TFT/src/User/Menu/ScreenSettings.c index 9b5f52ef58..7327d171ae 100644 --- a/TFT/src/User/Menu/ScreenSettings.c +++ b/TFT/src/User/Menu/ScreenSettings.c @@ -567,7 +567,10 @@ void menuScreenSettings(void) switch (curIndex) { case KEY_ICON_0: - infoSettings.rotated_ui = !infoSettings.rotated_ui; + if (infoSettings.rotated_ui == 0 || infoSettings.rotated_ui == 2) //support VERTICAL GUI + infoSettings.rotated_ui++; + else + infoSettings.rotated_ui--; LCD_RefreshDirection(infoSettings.rotated_ui); TSC_Calibration(); menuDrawPage(&screenSettingsItems); diff --git a/TFT/src/User/Menu/StatusScreen.c b/TFT/src/User/Menu/StatusScreen.c index d1a27e915a..f78a2ec81f 100644 --- a/TFT/src/User/Menu/StatusScreen.c +++ b/TFT/src/User/Menu/StatusScreen.c @@ -14,6 +14,12 @@ #define UPDATE_TOOL_TIME 2000 // 1 seconds is 1000 +#ifdef PORTRAIT + #define XYZ_STATUS " X: %.2f Y: %.2f Z: %.2f " +#else + #define XYZ_STATUS " X: %.2f Y: %.2f Z: %.2f " +#endif + const MENUITEMS StatusItems = { // title LABEL_READY, @@ -63,11 +69,19 @@ const GUI_POINT ss_val_point = {SSICON_WIDTH / 2, SSICON_VAL_Y0}; #endif // info box msg area -const GUI_RECT msgRect = {START_X + 1 * ICON_WIDTH + 1 * SPACE_X + 2, ICON_START_Y + 1 * ICON_HEIGHT + 1 * SPACE_Y + STATUS_MSG_BODY_YOFFSET, - START_X + 3 * ICON_WIDTH + 2 * SPACE_X - 2, ICON_START_Y + 2 * ICON_HEIGHT + 1 * SPACE_Y - STATUS_MSG_BODY_BOTTOM}; +#ifdef PORTRAIT + const GUI_RECT msgRect = {START_X + 0.5 * ICON_WIDTH + 0 * SPACE_X + 2, ICON_START_Y + 0 * ICON_HEIGHT + 0 * SPACE_Y + STATUS_MSG_BODY_YOFFSET, + START_X + 2.5 * ICON_WIDTH + 1 * SPACE_X - 2, ICON_START_Y + 1 * ICON_HEIGHT + 0 * SPACE_Y - STATUS_MSG_BODY_BOTTOM}; -const GUI_RECT RecGantry = {START_X, SSICON_HEIGHT + ICON_START_Y + STATUS_GANTRY_YOFFSET, - START_X + 4 * ICON_WIDTH + 3 * SPACE_X, ICON_HEIGHT + SPACE_Y + ICON_START_Y - STATUS_GANTRY_YOFFSET}; + const GUI_RECT RecGantry = {START_X-2, SSICON_HEIGHT + ICON_START_Y + STATUS_GANTRY_YOFFSET, + START_X+2 + 3 * ICON_WIDTH + 2 * SPACE_X, ICON_HEIGHT + SPACE_Y + ICON_START_Y - STATUS_GANTRY_YOFFSET}; +#else + const GUI_RECT msgRect = {START_X + 1 * ICON_WIDTH + 1 * SPACE_X + 2, ICON_START_Y + 1 * ICON_HEIGHT + 1 * SPACE_Y + STATUS_MSG_BODY_YOFFSET, + START_X + 3 * ICON_WIDTH + 2 * SPACE_X - 2, ICON_START_Y + 2 * ICON_HEIGHT + 1 * SPACE_Y - STATUS_MSG_BODY_BOTTOM}; + + const GUI_RECT RecGantry = {START_X, SSICON_HEIGHT + ICON_START_Y + STATUS_GANTRY_YOFFSET, + START_X + 4 * ICON_WIDTH + 3 * SPACE_X, ICON_HEIGHT + SPACE_Y + ICON_START_Y - STATUS_GANTRY_YOFFSET}; +#endif void drawLiveText(uint8_t index, LIVE_INFO *lvIcon, const ITEM *lvItem) { @@ -326,10 +340,9 @@ void drawStatus(void) GUI_SetTextMode(GUI_TEXTMODE_NORMAL); GUI_SetColor(GANTRY_XYZ_FONT_COLOR); GUI_SetBkColor(GANTRY_XYZ_BG_COLOR); - sprintf(tempstr, " X: %.2f Y: %.2f Z: %.2f ", coordinateGetAxisActual(X_AXIS), coordinateGetAxisActual(Y_AXIS), + sprintf(tempstr, XYZ_STATUS, coordinateGetAxisActual(X_AXIS), coordinateGetAxisActual(Y_AXIS), coordinateGetAxisActual(Z_AXIS)); GUI_DispStringInPrect(&RecGantry, (uint8_t *)tempstr); - GUI_RestoreColorDefault(); } @@ -476,6 +489,12 @@ void menuStatus(void) case KEY_MAINMENU: OPEN_MENU(menuMain); break; + + #ifdef PORTRAIT + case KEY_ICON_5: + OPEN_MENU(menuPrint); + break; + #endif case KEY_ICON_7: OPEN_MENU(menuPrint); diff --git a/TFT/src/User/Variants/Resolution/TFT_240X320.h b/TFT/src/User/Variants/Resolution/TFT_240X320.h new file mode 100644 index 0000000000..e4f6c214bd --- /dev/null +++ b/TFT/src/User/Variants/Resolution/TFT_240X320.h @@ -0,0 +1,86 @@ +#ifndef _TFT_240_320_H_ +#define _TFT_240_320_H_ + +#define LCD_WIDTH 240 +#define LCD_HEIGHT 320 + +#ifndef BYTE_HEIGHT + #define BYTE_HEIGHT 16 +#endif +#ifndef BYTE_WIDTH + #define BYTE_WIDTH (BYTE_HEIGHT/2) +#endif + +#ifndef LARGE_BYTE_HEIGHT + #define LARGE_BYTE_HEIGHT 24 +#endif +#ifndef LARGE_BYTE_WIDTH + #define LARGE_BYTE_WIDTH (LARGE_BYTE_HEIGHT/2) +#endif + +#define ICON_WIDTH 70 +#define ICON_HEIGHT 70 +#define TITLE_END_Y 25 //title height +#define ICON_START_Y (TITLE_END_Y+4) //top margin + +#define LIST_ICON_WIDTH 55 +#define LIST_ICON_HEIGHT 50 + +#define INFOBOX_WIDTH 150 +#define INFOBOX_HEIGHT 70 + +#define SMALLICON_WIDTH 45 +#define SMALLICON_HEIGHT 40 + +// Status screen menu +#define SSICON_COUNT 2 +#define SSICON_WIDTH ICON_WIDTH +#define SSICON_HEIGHT ICON_HEIGHT +#define SSICON_VAL_Y0 55 +#define SSICON_VAL_COLOR BLACK +#define SSICON_NAME_Y0 5 +#define SSICON_NAME_COLOR WHITE +#define STATUS_MSG_ICON_XOFFSET 3 +#define STATUS_MSG_ICON_YOFFSET 3 +#define STATUS_MSG_TITLE_XOFFSET 3 +#define STATUS_MSG_BODY_XOFFSET 0 +#define STATUS_MSG_BODY_YOFFSET 45 +#define STATUS_MSG_BODY_BOTTOM 4 +#define STATUS_GANTRY_YOFFSET 4 + +#define NAME_LARGE_FONT FONT_SIZE_NORMAL +#define VAL_LARGE_FONT FONT_SIZE_NORMAL + +// Heating Menu +#define PREHEAT_TITLE_Y 3 +#define PREHEAT_TOOL_Y 32 +#define PREHEAT_BED_Y 55 + +// Printing menu +#define PICON_LG_WIDTH 106 +#define PICON_SM_WIDTH 87 +#define PICON_HEIGHT 36 +#define PICON_SPACE_X (LCD_WIDTH - PICON_LG_WIDTH*2 - SPACE_X) +#define PICON_SPACE_Y (ICON_HEIGHT + SPACE_Y - PICON_HEIGHT*2)/4 +#define PICON_START_Y (TITLE_END_Y + 4 + (ICON_HEIGHT + SPACE_Y - PICON_HEIGHT*2 - PICON_SPACE_Y*2)) +#define PICON_TITLE_X 37 +#define PICON_TITLE_Y 1 +#define PICON_VAL_X PICON_TITLE_X +#define PICON_VAL_Y PICON_HEIGHT - BYTE_HEIGHT - 2 +#define PICON_VAL_LG_EX 104 +#define PICON_VAL_SM_EX 85 + +// Popup menu +#define POPUP_RECT_WINDOW {SPACE_X*2, TITLE_END_Y, LCD_WIDTH - SPACE_X*2, LCD_HEIGHT-SPACE_Y} +#define POPUP_TITLE_HEIGHT 30 +#define POPUP_BOTTOM_HEIGHT 50 +#define POPUP_BUTTON_HEIGHT 40 +#define POPUP_BUTTON_WIDTH (LCD_WIDTH - SPACE_X*7)/2 +#define POPUP_RECT_SINGLE_CONFIRM {110, LCD_HEIGHT- SPACE_Y - 5 - POPUP_BUTTON_HEIGHT, 210, LCD_HEIGHT - SPACE_Y - 5} +#define POPUP_RECT_DOUBLE_CONFIRM {SPACE_X*3, LCD_HEIGHT- SPACE_Y - 5 - POPUP_BUTTON_HEIGHT, SPACE_X*3 + POPUP_BUTTON_WIDTH, LCD_HEIGHT - SPACE_Y - 5} +#define POPUP_RECT_DOUBLE_CANCEL {SPACE_X*4 + POPUP_BUTTON_WIDTH*1, LCD_HEIGHT- SPACE_Y - 5 - POPUP_BUTTON_HEIGHT, SPACE_X*4 + POPUP_BUTTON_WIDTH*2, LCD_HEIGHT - SPACE_Y - 5} + +// The offset of the model preview icon in the gcode file +#define MODEL_PREVIEW_OFFSET 0x01 + +#endif diff --git a/TFT/src/User/Variants/pin_TFT24_V1_1_P.h b/TFT/src/User/Variants/pin_TFT24_V1_1_P.h new file mode 100644 index 0000000000..62fd6f374b --- /dev/null +++ b/TFT/src/User/Variants/pin_TFT24_V1_1_P.h @@ -0,0 +1,144 @@ +#ifndef _PIN_TFT24_V1_1_P_H_ // modify to actual filename !!! +#define _PIN_TFT24_V1_1_P_H_ // modify to actual filename !!! + +// MCU type (STM32F10x, STM32F2xx) +#include "stm32f10x.h" + +// LCD resolution, font and icon size +#ifndef TFT_RESOLUTION + #define TFT_RESOLUTION + #include "./Resolution/TFT_240X320.h" +#endif + +//Global Variable to query if Portrait mode is used +#define PORTRAIT + +#ifndef ROOT_DIR + #define ROOT_DIR "TFT24" +#endif + +// Hardware manufacturer +#ifndef HARDWARE_MANUFACTURER + #define HARDWARE_MANUFACTURER "BIGTREETECH_" +#endif + +// Hardware version config +#ifndef HARDWARE_VERSION + #define HARDWARE_VERSION "TFT24_V1.1_P" +#endif + +// Software manufacturer +#ifndef SOFTWARE_MANUFACTURER + #define SOFTWARE_MANUFACTURER HARDWARE_VERSION"." +#endif + +// LCD interface +#ifndef TFTLCD_DRIVER + #define TFTLCD_DRIVER ILI9341 // Type of LCD driver, now support[RM68042, ILI9488, ILI9341, ST7789, HX8558]. + #define TFTLCD_DRIVER_SPEED 0x03 +#endif +//#define STM32_HAS_FSMC // FSMC 8080 interface(high speed), or normal IO interface(low speed) +#ifndef LCD_DATA_16BIT + #define LCD_DATA_16BIT 1 // LCD data 16bit or 8bit +#endif + +// Debug disable, free pins for other function +//#define DISABLE_JTAG // free JTAG(PB3/PB4) for SPI3 +#define DISABLE_DEBUG // free all pins + +// LCD Backlight pin (PWM can adjust brightness) +#define LCD_LED_PIN PA8 +#define LCD_LED_PIN_ALTERNATE 0 +#define LCD_LED_PWM_CHANNEL _TIM1_CH1 + +// SERIAL_PORT: communicating with host(Marlin, smoothieware, etc...) +// SERIAL_PORT_X: communicating with other controller(Octoprint, ESP3D, other UART Touch Screen, etc...) +#define SERIAL_PORT _USART1 // default usart port +//#define SERIAL_PORT_2 _USART2 +//#define SERIAL_PORT_3 _USART3 +//#define SERIAL_PORT_4 _UART4 + +// XPT2046 Software SPI Pins (touch screen ic) +// need CS/SCK/MISO/MOSI for Software SPI, and TPEN for pen interrupt +#define XPT2046_CS PA3 +#define XPT2046_SCK PA2 +#define XPT2046_MISO PA1 +#define XPT2046_MOSI PA0 +#define XPT2046_TPEN PA15 + +// SD Card SPI pins +#define SD_SPI_SUPPORT +//#define SD_SDIO_SUPPORT +#ifdef SD_SPI_SUPPORT + #define SD_LOW_SPEED 7 // 2^(SPEED+1) = 256 frequency division + #define SD_HIGH_SPEED 1 // 2 frequency division + #define SD_SPI _SPI1 + #define SD_CS_PIN PA4 +#endif + +// SD Card CD detect pin +#define SD_CD_PIN PA13 + +// W25Qxx SPI pins +#define W25Qxx_SPEED 0 +#define W25Qxx_SPI _SPI3 +#define W25Qxx_CS_PIN PD2 + +// ST7920 Emulator SPI pins +#define ST7920_EMULATOR // uncomment to enable Marlin mode +#ifdef ST7920_EMULATOR + #define ST7920_SPI _SPI2 +#endif + +// HD44780 Emulator pins +#define LCD2004_EMULATOR +#ifdef LCD2004_EMULATOR + #define LCD_EN PB15 + #define LCD_RS PB12 + #define LCD_D4 PB13 + #define LCD_D5 PB14 + #define LCD_D6 PB10 + #define LCD_D7 PB11 + #define LCD_EN_PIN GPIO_Pin_15 + #define LCD_RS_PIN GPIO_Pin_12 + #define LCD_D4_PIN GPIO_Pin_13 + #define LCD_D5_PIN GPIO_Pin_14 + #define LCD_D6_PIN GPIO_Pin_10 + #define LCD_D7_PIN GPIO_Pin_11 + #define LCD_EN_PORT GPIOB + #define LCD_RS_PORT GPIOB + #define LCD_D4_PORT GPIOB + #define LCD_D5_PORT GPIOB + #define LCD_D6_PORT GPIOB + #define LCD_D7_PORT GPIOB +#endif + +#if defined(ST7920_EMULATOR) || defined(LCD2004_EMULATOR) + #define HAS_EMULATOR +#endif + +// Buzzer support +#define BUZZER_PIN PA14 + +// LCD Encoder support +#define LCD_ENCA_PIN PB0 +#define LCD_ENCB_PIN PB1 +#define LCD_BTN_PIN PB2 +#define LCD_ENC_EN_PIN PB11 + +// U disk support +#define U_DISK_SUPPORT +#define USE_USB_OTG_FS + +// Extend function(PS_ON, filament_detect) +#ifndef PS_ON_PIN + //#define PS_ON_PIN PD12 +#endif + +#ifndef FIL_RUNOUT_PIN + //#define FIL_RUNOUT_PIN PD11 +#endif + +//#define LED_COLOR_PIN PC7 + +#endif diff --git a/TFT/src/User/Variants/variants.h b/TFT/src/User/Variants/variants.h index 216686f272..b01d5142fd 100644 --- a/TFT/src/User/Variants/variants.h +++ b/TFT/src/User/Variants/variants.h @@ -22,6 +22,8 @@ #if defined(TFT24_V1_1) #include "pin_TFT24_V1_1.h" +#elif defined(TFT24_V1_1_P) + #include "pin_TFT24_V1_1_P.h" #elif defined(TFT28_V1_0) #include "pin_TFT28_V1_0.h" #elif defined(TFT28_V3_0) diff --git a/platformio.ini b/platformio.ini index 75602b8e3f..dd7695169d 100644 --- a/platformio.ini +++ b/platformio.ini @@ -22,6 +22,7 @@ ;BIGTREE_TFT28_V1_0 ;BIGTREE_TFT28_V3_0 ;BIGTREE_TFT24_V1_1 +;BIGTREE_TFT24_V1_1_P ;BIGTREE_GD_TFT24_V1_1 ;MKS_TFT32_V1_3 ;MKS_TFT32_V1_4 @@ -34,7 +35,7 @@ src_dir = TFT boards_dir = buildroot/boards ;Build only Target - BIGTREE_TFT35_V3_0 -default_envs = BIGTREE_TFT35_V3_0 +default_envs = BIGTREE_TFT24_V1_1_P ;Build all Targets ;default_envs = BIGTREE_TFT35_V1_0, BIGTREE_TFT35_V1_1, BIGTREE_TFT35_V1_2, BIGTREE_TFT35_V2_0, BIGTREE_GD_TFT35_V2_0, BIGTREE_TFT35_V3_0, BIGTREE_TFT35_E3_V3_0, BIGTREE_TFT35_B1_V3_0, BIGTREE_TFT43_V3_0, BIGTREE_TFT50_V3_0, BIGTREE_TFT70_V3_0, BIGTREE_TFT28_V1_0, BIGTREE_TFT28_V3_0, BIGTREE_TFT24_V1_1, BIGTREE_GD_TFT24_V1_1, MKS_TFT32_V1_3, MKS_TFT32_V1_4, MKS_TFT32_V1_4_NOBL, MKS_TFT28_V3_0, MKS_TFT28_V4_0, MKS_TFT28_NEW_GENIUS @@ -333,6 +334,24 @@ build_flags = ${stm32f10x.build_flags} -DHARDWARE_SHORT="B24V11" -DTFT24_V1_1= +# +# BIGTREE TFT24 V1.1 Portrait Mode +# +[env:BIGTREE_TFT24_V1_1_P] +extends = common_stm32 +board = STM32F105RC_0x6000 +src_filter = ${stm32f10x.default_src_filter} + +extra_scripts = ${common.extra_scripts} + buildroot/scripts/stm32f105xC_0x6000_iap.py +build_flags = ${stm32f10x.build_flags} + -DSTM32F10X_CL= + -DHSE_VALUE=8000000ul + -DVECT_TAB_FLASH=0x08006000 + -DRAM_SIZE=64 ; Available RAM size in kbytes + -DHARDWARE="BIGTREE_TFT24_V1.1_P" + -DHARDWARE_SHORT="B24V11" + -DTFT24_V1_1_P= + # # BIGTREE TFT24 V1.1 #