123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- /**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- *
- */
- #pragma once
-
- /**
- * lcd/e3v2/jyersui/dwin.h
- */
-
- #include "dwin_lcd.h"
- #include "../common/dwin_set.h"
- #include "../common/dwin_font.h"
- #include "../common/dwin_color.h"
- #include "../common/encoder.h"
- #include "../../../libs/BL24CXX.h"
-
- #include "../../../inc/MarlinConfigPre.h"
-
- //#define DWIN_CREALITY_LCD_CUSTOM_ICONS
-
- enum processID : uint8_t {
- Main, Print, Menu, Value, Option, File, Popup, Confirm, Wait
- };
-
- enum PopupID : uint8_t {
- Pause, Stop, Resume, SaveLevel, ETemp, ConfFilChange, PurgeMore, MeshSlot,
- Level, Home, MoveWait, Heating, FilLoad, FilChange, TempWarn, Runout, PIDWait, Resuming, ManualProbing,
- FilInsert, HeaterTime, UserInput, LevelError, InvalidMesh, UI, Complete, Custom
- };
-
- enum menuID : uint8_t {
- MainMenu,
- Prepare,
- Move,
- HomeMenu,
- ManualLevel,
- ZOffset,
- Preheat,
- ChangeFilament,
- MenuCustom,
- Control,
- TempMenu,
- PID,
- HotendPID,
- BedPID,
- #if HAS_PREHEAT
- #define _PREHEAT_ID(N) Preheat##N,
- REPEAT_1(PREHEAT_COUNT, _PREHEAT_ID)
- #endif
- Motion,
- HomeOffsets,
- MaxSpeed,
- MaxAcceleration,
- MaxJerk,
- Steps,
- Visual,
- ColorSettings,
- Advanced,
- ProbeMenu,
- Info,
- Leveling,
- LevelManual,
- LevelView,
- MeshViewer,
- LevelSettings,
- ManualMesh,
- UBLMesh,
- InfoMain,
- Tune,
- PreheatHotend
- };
-
- // Custom icons
- #if ENABLED(DWIN_CREALITY_LCD_CUSTOM_ICONS)
- // index of every custom icon should be >= CUSTOM_ICON_START
- #define CUSTOM_ICON_START ICON_Checkbox_F
- #define ICON_Checkbox_F 200
- #define ICON_Checkbox_T 201
- #define ICON_Fade 202
- #define ICON_Mesh 203
- #define ICON_Tilt 204
- #define ICON_Brightness 205
- #define ICON_AxisD 249
- #define ICON_AxisBR 250
- #define ICON_AxisTR 251
- #define ICON_AxisBL 252
- #define ICON_AxisTL 253
- #define ICON_AxisC 254
- #else
- #define ICON_Fade ICON_Version
- #define ICON_Mesh ICON_Version
- #define ICON_Tilt ICON_Version
- #define ICON_Brightness ICON_Version
- #define ICON_AxisD ICON_Axis
- #define ICON_AxisBR ICON_Axis
- #define ICON_AxisTR ICON_Axis
- #define ICON_AxisBL ICON_Axis
- #define ICON_AxisTL ICON_Axis
- #define ICON_AxisC ICON_Axis
- #endif
-
- enum colorID : uint8_t {
- Default, White, Green, Cyan, Blue, Magenta, Red, Orange, Yellow, Brown, Black
- };
-
- #define Custom_Colors 10
- #define Color_Aqua RGB(0x00,0x3F,0x1F)
- #define Color_Light_White 0xBDD7
- #define Color_Green RGB(0x00,0x3F,0x00)
- #define Color_Light_Green 0x3460
- #define Color_Cyan 0x07FF
- #define Color_Light_Cyan 0x04F3
- #define Color_Blue 0x015F
- #define Color_Light_Blue 0x3A6A
- #define Color_Magenta 0xF81F
- #define Color_Light_Magenta 0x9813
- #define Color_Light_Red 0x8800
- #define Color_Orange 0xFA20
- #define Color_Light_Orange 0xFBC0
- #define Color_Light_Yellow 0x8BE0
- #define Color_Brown 0xCC27
- #define Color_Light_Brown 0x6204
- #define Color_Black 0x0000
- #define Color_Grey 0x18E3
- #define Check_Color 0x4E5C // Check-box check color
- #define Confirm_Color 0x34B9
- #define Cancel_Color 0x3186
-
- class CrealityDWINClass {
- public:
- static constexpr size_t eeprom_data_size = 48;
- static struct EEPROM_Settings { // use bit fields to save space, max 48 bytes
- bool time_format_textual : 1;
- #if ENABLED(AUTO_BED_LEVELING_UBL)
- uint8_t tilt_grid_size : 3;
- #endif
- uint16_t corner_pos : 10;
- uint8_t cursor_color : 4;
- uint8_t menu_split_line : 4;
- uint8_t menu_top_bg : 4;
- uint8_t menu_top_txt : 4;
- uint8_t highlight_box : 4;
- uint8_t progress_percent : 4;
- uint8_t progress_time : 4;
- uint8_t status_bar_text : 4;
- uint8_t status_area_text : 4;
- uint8_t coordinates_text : 4;
- uint8_t coordinates_split_line : 4;
- } eeprom_settings;
-
- static constexpr const char * const color_names[11] = { "Default", "White", "Green", "Cyan", "Blue", "Magenta", "Red", "Orange", "Yellow", "Brown", "Black" };
- static constexpr const char * const preheat_modes[3] = { "Both", "Hotend", "Bed" };
-
- static void Clear_Screen(uint8_t e=3);
- static void Draw_Float(float value, uint8_t row, bool selected=false, uint8_t minunit=10);
- static void Draw_Option(uint8_t value, const char * const * options, uint8_t row, bool selected=false, bool color=false);
- static uint16_t GetColor(uint8_t color, uint16_t original, bool light=false);
- static void Draw_Checkbox(uint8_t row, bool value);
- static void Draw_Title(const char * title);
- static void Draw_Title(FSTR_P const title);
- static void Draw_Menu_Item(uint8_t row, uint8_t icon=0, const char * const label1=nullptr, const char * const label2=nullptr, bool more=false, bool centered=false);
- static void Draw_Menu_Item(uint8_t row, uint8_t icon=0, FSTR_P const flabel1=nullptr, FSTR_P const flabel2=nullptr, bool more=false, bool centered=false);
- static void Draw_Menu(uint8_t menu, uint8_t select=0, uint8_t scroll=0);
- static void Redraw_Menu(bool lastprocess=true, bool lastselection=false, bool lastmenu=false);
- static void Redraw_Screen();
-
- static void Main_Menu_Icons();
- static void Draw_Main_Menu(uint8_t select=0);
- static void Print_Screen_Icons();
- static void Draw_Print_Screen();
- static void Draw_Print_Filename(const bool reset=false);
- static void Draw_Print_ProgressBar();
- #if ENABLED(SET_REMAINING_TIME)
- static void Draw_Print_ProgressRemain();
- #endif
- static void Draw_Print_ProgressElapsed();
- static void Draw_Print_confirm();
- static void Draw_SD_Item(uint8_t item, uint8_t row);
- static void Draw_SD_List(bool removed=false);
- static void Draw_Status_Area(bool icons=false);
- static void Draw_Popup(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, uint8_t mode, uint8_t icon=0);
- static void Popup_Select();
- static void Update_Status_Bar(bool refresh=false);
-
- #if ENABLED(AUTO_BED_LEVELING_UBL)
- static void Draw_Bed_Mesh(int16_t selected = -1, uint8_t gridline_width = 1, uint16_t padding_x = 8, uint16_t padding_y_top = 40 + 53 - 7);
- static void Set_Mesh_Viewer_Status();
- #endif
-
- static FSTR_P Get_Menu_Title(uint8_t menu);
- static uint8_t Get_Menu_Size(uint8_t menu);
- static void Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw=true);
-
- static void Popup_Handler(PopupID popupid, bool option = false);
- static void Confirm_Handler(PopupID popupid);
-
- static void Main_Menu_Control();
- static void Menu_Control();
- static void Value_Control();
- static void Option_Control();
- static void File_Control();
- static void Print_Screen_Control();
- static void Popup_Control();
- static void Confirm_Control();
-
- static void Setup_Value(float value, float min, float max, float unit, uint8_t type);
- static void Modify_Value(float &value, float min, float max, float unit, void (*f)()=nullptr);
- static void Modify_Value(uint8_t &value, float min, float max, float unit, void (*f)()=nullptr);
- static void Modify_Value(uint16_t &value, float min, float max, float unit, void (*f)()=nullptr);
- static void Modify_Value(int16_t &value, float min, float max, float unit, void (*f)()=nullptr);
- static void Modify_Value(uint32_t &value, float min, float max, float unit, void (*f)()=nullptr);
- static void Modify_Value(int8_t &value, float min, float max, float unit, void (*f)()=nullptr);
- static void Modify_Option(uint8_t value, const char * const * options, uint8_t max);
-
- static void Update_Status(const char * const text);
- static void Start_Print(bool sd);
- static void Stop_Print();
- static void Update();
- static void State_Update();
- static void Screen_Update();
- static void AudioFeedback(const bool success=true);
- static void Save_Settings(char *buff);
- static void Load_Settings(const char *buff);
- static void Reset_Settings();
- };
-
- extern CrealityDWINClass CrealityDWIN;
|