|  |  |  | @ -46,10 +46,17 @@ static float marlin_z_offset   = 0.150; | 
			
		
	
		
			
				
					|  |  |  |  | // Margin defines the margin (in pixels) on each side of a button in
 | 
			
		
	
		
			
				
					|  |  |  |  | // the layout
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #if defined(LCD_800x480) | 
			
		
	
		
			
				
					|  |  |  |  | #define MARGIN_L         5 | 
			
		
	
		
			
				
					|  |  |  |  | #define MARGIN_R         5 | 
			
		
	
		
			
				
					|  |  |  |  | #define MARGIN_T         5 | 
			
		
	
		
			
				
					|  |  |  |  | #define MARGIN_B         5 | 
			
		
	
		
			
				
					|  |  |  |  | #else | 
			
		
	
		
			
				
					|  |  |  |  | #define MARGIN_L         3 | 
			
		
	
		
			
				
					|  |  |  |  | #define MARGIN_R         3 | 
			
		
	
		
			
				
					|  |  |  |  | #define MARGIN_T         3 | 
			
		
	
		
			
				
					|  |  |  |  | #define MARGIN_B         3 | 
			
		
	
		
			
				
					|  |  |  |  | #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | // EDGE_R adds some black space on the right edge of the display
 | 
			
		
	
		
			
				
					|  |  |  |  | // This shifts some of the screens left to visually center them.
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -82,8 +89,8 @@ static float marlin_z_offset   = 0.150; | 
			
		
	
		
			
				
					|  |  |  |  | #define BTX              cmd.Cmd_Draw_Button_Text | 
			
		
	
		
			
				
					|  |  |  |  | #define BTI              cmd.Cmd_Draw_Button_Icon | 
			
		
	
		
			
				
					|  |  |  |  | #define BTN_TAG(t)       cmd.Cmd_Set_Tag(t); | 
			
		
	
		
			
				
					|  |  |  |  | #define RGB(rgb)         cmd.Cmd_Set_Foreground_Color(Theme::rgb); | 
			
		
	
		
			
				
					|  |  |  |  | #define TOGGLE(val)      cmd.Cmd_Set_Foreground_Color(val ? Theme::toggle_on : Theme::toggle_off); | 
			
		
	
		
			
				
					|  |  |  |  | #define RGB(rgb)         cmd.Cmd_Set_Foreground_Color(rgb); | 
			
		
	
		
			
				
					|  |  |  |  | #define THEME(color)     cmd.Cmd_Set_Foreground_Color(Theme::color); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #define FONT_SML         Theme::font_small | 
			
		
	
		
			
				
					|  |  |  |  | #define FONT_MED         Theme::font_medium | 
			
		
	
	
		
			
				
					|  |  |  | @ -110,6 +117,17 @@ class AboutScreen : public UIScreen { | 
			
		
	
		
			
				
					|  |  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | class StatusScreen : public UIScreen { | 
			
		
	
		
			
				
					|  |  |  |  |   private: | 
			
		
	
		
			
				
					|  |  |  |  |     static void static_axis_position(); | 
			
		
	
		
			
				
					|  |  |  |  |     static void static_temperature(); | 
			
		
	
		
			
				
					|  |  |  |  |     static void static_progress(); | 
			
		
	
		
			
				
					|  |  |  |  |     static void static_interaction_buttons(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     static void dynamic_axis_position(); | 
			
		
	
		
			
				
					|  |  |  |  |     static void dynamic_temperature(); | 
			
		
	
		
			
				
					|  |  |  |  |     static void dynamic_progress(); | 
			
		
	
		
			
				
					|  |  |  |  |     static void dynamic_status_message(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   public: | 
			
		
	
		
			
				
					|  |  |  |  |     static void onRefresh(); | 
			
		
	
		
			
				
					|  |  |  |  |     static void onStartup(); | 
			
		
	
	
		
			
				
					|  |  |  | @ -143,11 +161,30 @@ class AdvancedSettingsScreen : public UIScreen { | 
			
		
	
		
			
				
					|  |  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | class ValueAdjusters : public UIScreen { | 
			
		
	
		
			
				
					|  |  |  |  |   private: | 
			
		
	
		
			
				
					|  |  |  |  |     static uint8_t increment; | 
			
		
	
		
			
				
					|  |  |  |  |     static void draw_increment_btn(const uint8_t tag, uint8_t decimals); | 
			
		
	
		
			
				
					|  |  |  |  |   protected: | 
			
		
	
		
			
				
					|  |  |  |  |     static float increment; | 
			
		
	
		
			
				
					|  |  |  |  |     static void static_heading(progmem_str heading); | 
			
		
	
		
			
				
					|  |  |  |  |     static void static_value(int line, progmem_str value); | 
			
		
	
		
			
				
					|  |  |  |  |     static void dynamic_value(int line, float value, progmem_str units); | 
			
		
	
		
			
				
					|  |  |  |  |     struct heading_t { | 
			
		
	
		
			
				
					|  |  |  |  |       const char    *label; | 
			
		
	
		
			
				
					|  |  |  |  |       uint8_t        decimals; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       void static_parts() const; | 
			
		
	
		
			
				
					|  |  |  |  |       void dynamic_parts() const; | 
			
		
	
		
			
				
					|  |  |  |  |     }; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     struct adjuster_t { | 
			
		
	
		
			
				
					|  |  |  |  |       uint8_t        line; | 
			
		
	
		
			
				
					|  |  |  |  |       const char    *label; | 
			
		
	
		
			
				
					|  |  |  |  |       const char    *units; | 
			
		
	
		
			
				
					|  |  |  |  |       uint32_t       color; | 
			
		
	
		
			
				
					|  |  |  |  |       uint8_t        decimals; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       void static_parts() const; | 
			
		
	
		
			
				
					|  |  |  |  |       void dynamic_parts(float value) const; | 
			
		
	
		
			
				
					|  |  |  |  |     }; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     static float getIncrement(); | 
			
		
	
		
			
				
					|  |  |  |  |   public: | 
			
		
	
		
			
				
					|  |  |  |  |     static void onTouchStart(uint8_t tag); | 
			
		
	
		
			
				
					|  |  |  |  | }; | 
			
		
	
	
		
			
				
					|  |  |  | @ -256,12 +293,13 @@ namespace Theme { | 
			
		
	
		
			
				
					|  |  |  |  |   const int16_t  font_small    = 27; | 
			
		
	
		
			
				
					|  |  |  |  |   const int16_t  font_medium   = 28; | 
			
		
	
		
			
				
					|  |  |  |  |   const int16_t  font_large    = 28; | 
			
		
	
		
			
				
					|  |  |  |  |   const float    icon_scale    = 0.7; | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |   const int16_t  font_small    = 28; | 
			
		
	
		
			
				
					|  |  |  |  |   const int16_t  font_medium   = 29; | 
			
		
	
		
			
				
					|  |  |  |  |   const int16_t  font_small    = 27; | 
			
		
	
		
			
				
					|  |  |  |  |   const int16_t  font_medium   = 28; | 
			
		
	
		
			
				
					|  |  |  |  |   const int16_t  font_large    = 30; | 
			
		
	
		
			
				
					|  |  |  |  |   const float    icon_scale    = 0.6; | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  |   const float    icon_scale    = 0.7; | 
			
		
	
		
			
				
					|  |  |  |  | #endif | 
			
		
	
		
			
				
					|  |  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -269,15 +307,13 @@ namespace Theme { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void BootScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Clear_Color(Theme::background); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Clear(1,1,1); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(DL_DISPLAY); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_SWAP); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Execute(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Wait_Until_Idle(); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Wait_Until_Idle(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::Turn_On_Backlight(); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | @ -288,7 +324,6 @@ void BootScreen::onIdle() { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | /******************************** ABOUT SCREEN ****************************/ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void AboutScreen::onEntry() { | 
			
		
	
		
			
				
					|  |  |  |  |   draw(false); | 
			
		
	
		
			
				
					|  |  |  |  |   playChime(); | 
			
		
	
	
		
			
				
					|  |  |  | @ -301,7 +336,6 @@ void AboutScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void AboutScreen::draw(bool showOkay) { | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Clear_Color(Theme::about_bg); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Clear(1,1,1); | 
			
		
	
	
		
			
				
					|  |  |  | @ -309,11 +343,12 @@ void AboutScreen::draw(bool showOkay) { | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS 4 | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_ROWS 6 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   BTX( BTN_POS(1,2), BTN_SIZE(4,1), F("Color LCD Interface"),                     FONT_LRG); | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(2) BTX( BTN_POS(1,3), BTN_SIZE(4,1), F("(c) 2018 Aleph Objects, Inc."), FONT_LRG); | 
			
		
	
		
			
				
					|  |  |  |  |   BTX( BTN_POS(1,2), BTN_SIZE(4,1), F("Color LCD Interface"),          FONT_LRG); | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(2) | 
			
		
	
		
			
				
					|  |  |  |  |   BTX( BTN_POS(1,3), BTN_SIZE(4,1), F("(c) 2018 Aleph Objects, Inc."), FONT_LRG); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   if(showOkay) { | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(1) RGB(about_btn) BTN( BTN_POS(2,5), BTN_SIZE(2,1), F("Okay"), MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(1) THEME(about_btn) BTN( BTN_POS(2,5), BTN_SIZE(2,1), F("Okay"), MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(DL_DISPLAY); | 
			
		
	
	
		
			
				
					|  |  |  | @ -350,229 +385,287 @@ void AboutScreen::playChime() { | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | /*********************************** STATUS SCREEN ******************************/ | 
			
		
	
		
			
				
					|  |  |  |  | #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_ROWS 9 | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS 3 | 
			
		
	
		
			
				
					|  |  |  |  | #else | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_ROWS 8 | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS 3 | 
			
		
	
		
			
				
					|  |  |  |  | #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void StatusScreen::onStartup() { | 
			
		
	
		
			
				
					|  |  |  |  |   // Load USB Thumb Drive Bitmap
 | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::Flash_Write_RGB332_Bitmap(TD_Icon_Info.RAMG_addr, TD_Icon, sizeof(TD_Icon)); | 
			
		
	
		
			
				
					|  |  |  |  | void StatusScreen::static_axis_position() { | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   // Load Extruder Bitmap
 | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::Flash_Write_RGB332_Bitmap(Extruder_Icon_Info.RAMG_addr, Extruder_Icon, sizeof(Extruder_Icon)); | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(axis_label) BTN( BTN_POS(1,5), BTN_SIZE(2,1), F(""),  FONT_LRG, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(axis_label) BTN( BTN_POS(1,6), BTN_SIZE(2,1), F(""),  FONT_LRG, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(axis_label) BTN( BTN_POS(1,7), BTN_SIZE(2,1), F(""),  FONT_LRG, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |                       BTX( BTN_POS(1,5), BTN_SIZE(1,1), F("X"), FONT_SML); | 
			
		
	
		
			
				
					|  |  |  |  |                       BTX( BTN_POS(1,6), BTN_SIZE(1,1), F("Y"), FONT_SML); | 
			
		
	
		
			
				
					|  |  |  |  |                       BTX( BTN_POS(1,7), BTN_SIZE(1,1), F("Z"), FONT_SML); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(x_axis)     BTN( BTN_POS(2,5), BTN_SIZE(2,1), F(""),  FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(y_axis)     BTN( BTN_POS(2,6), BTN_SIZE(2,1), F(""),  FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(z_axis)     BTN( BTN_POS(2,7), BTN_SIZE(2,1), F(""),  FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(axis_label) BTN( BTN_POS(1,5), BTN_SIZE(1,2), F(""),  FONT_LRG, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(axis_label) BTN( BTN_POS(2,5), BTN_SIZE(1,2), F(""),  FONT_LRG, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(axis_label) BTN( BTN_POS(3,5), BTN_SIZE(1,2), F(""),  FONT_LRG, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |                       BTX( BTN_POS(1,5), BTN_SIZE(1,1), F("X"), FONT_SML); | 
			
		
	
		
			
				
					|  |  |  |  |                       BTX( BTN_POS(2,5), BTN_SIZE(1,1), F("Y"), FONT_SML); | 
			
		
	
		
			
				
					|  |  |  |  |                       BTX( BTN_POS(3,5), BTN_SIZE(1,1), F("Z"), FONT_SML); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(x_axis)     BTN( BTN_POS(1,6), BTN_SIZE(1,1), F(""),  FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(y_axis)     BTN( BTN_POS(2,6), BTN_SIZE(1,1), F(""),  FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(z_axis)     BTN( BTN_POS(3,6), BTN_SIZE(1,1), F(""),  FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   // Load Bed Heat Bitmap
 | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::Flash_Write_RGB332_Bitmap(Bed_Heat_Icon_Info.RAMG_addr, Bed_Heat_Icon, sizeof(Bed_Heat_Icon)); | 
			
		
	
		
			
				
					|  |  |  |  | void StatusScreen::dynamic_axis_position() { | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   // Load Fan Percent Bitmap
 | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::Flash_Write_RGB332_Bitmap(Fan_Icon_Info.RAMG_addr, Fan_Icon, sizeof(Fan_Icon)); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  |   char x_str[15]; | 
			
		
	
		
			
				
					|  |  |  |  |   char y_str[15]; | 
			
		
	
		
			
				
					|  |  |  |  |   char z_str[15]; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void StatusScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  |   static CLCD::DLCache dlcache; | 
			
		
	
		
			
				
					|  |  |  |  |   dtostrf(Marlin_LCD_API::getAxisPosition_mm(Marlin_LCD_API::X), 5, 1, x_str); | 
			
		
	
		
			
				
					|  |  |  |  |   dtostrf(Marlin_LCD_API::getAxisPosition_mm(Marlin_LCD_API::Y), 5, 1, y_str); | 
			
		
	
		
			
				
					|  |  |  |  |   dtostrf(Marlin_LCD_API::getAxisPosition_mm(Marlin_LCD_API::Z), 5, 1, z_str); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   if(dlcache.hasData()) { | 
			
		
	
		
			
				
					|  |  |  |  |     dlcache.append(); | 
			
		
	
		
			
				
					|  |  |  |  |   } else { | 
			
		
	
		
			
				
					|  |  |  |  |     CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Clear_Color(Theme::background); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Clear(1,1,1); | 
			
		
	
		
			
				
					|  |  |  |  |   strcat_P(x_str, PSTR(" mm")); | 
			
		
	
		
			
				
					|  |  |  |  |   strcat_P(y_str, PSTR(" mm")); | 
			
		
	
		
			
				
					|  |  |  |  |   strcat_P(z_str, PSTR(" mm")); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_ROWS 9 | 
			
		
	
		
			
				
					|  |  |  |  |     #else | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_ROWS 8 | 
			
		
	
		
			
				
					|  |  |  |  |     #endif | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(2,5), BTN_SIZE(2,1), x_str, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(2,6), BTN_SIZE(2,1), y_str, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(2,7), BTN_SIZE(2,1), z_str, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(1,6), BTN_SIZE(1,1), x_str, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(2,6), BTN_SIZE(1,1), y_str, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(3,6), BTN_SIZE(1,1), z_str, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(0) | 
			
		
	
		
			
				
					|  |  |  |  |     #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |       #define GRID_COLS 8 | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(temp)      BTN( BTN_POS(1,1), BTN_SIZE(4,2), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(temp)      BTN( BTN_POS(1,1), BTN_SIZE(8,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(fan_speed) BTN( BTN_POS(5,2), BTN_SIZE(4,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(progress)  BTN( BTN_POS(1,3), BTN_SIZE(4,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(progress)  BTN( BTN_POS(5,3), BTN_SIZE(4,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     #else | 
			
		
	
		
			
				
					|  |  |  |  |       #define GRID_COLS 12 | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(temp)      BTN( BTN_POS(1,1), BTN_SIZE(4,2), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(temp)      BTN( BTN_POS(1,1), BTN_SIZE(8,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(fan_speed) BTN( BTN_POS(5,2), BTN_SIZE(4,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(progress)  BTN( BTN_POS(9,1), BTN_SIZE(4,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(progress)  BTN( BTN_POS(9,2), BTN_SIZE(4,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     #endif | 
			
		
	
		
			
				
					|  |  |  |  |   //#define MARGIN_T 5
 | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |       #define GRID_COLS 3 | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(axis_label) BTN( BTN_POS(1,5), BTN_SIZE(2,1), F(""), FONT_LRG, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(axis_label) BTN( BTN_POS(1,6), BTN_SIZE(2,1), F(""), FONT_LRG, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(axis_label) BTN( BTN_POS(1,7), BTN_SIZE(2,1), F(""), FONT_LRG, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       BTX( BTN_POS(1,5), BTN_SIZE(1,1), F("X"), FONT_SML); | 
			
		
	
		
			
				
					|  |  |  |  |       BTX( BTN_POS(1,6), BTN_SIZE(1,1), F("Y"), FONT_SML); | 
			
		
	
		
			
				
					|  |  |  |  |       BTX( BTN_POS(1,7), BTN_SIZE(1,1), F("Z"), FONT_SML); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(x_axis)     BTN( BTN_POS(2,5), BTN_SIZE(2,1), F(""), FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(y_axis)     BTN( BTN_POS(2,6), BTN_SIZE(2,1), F(""), FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(z_axis)     BTN( BTN_POS(2,7), BTN_SIZE(2,1), F(""), FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     #else | 
			
		
	
		
			
				
					|  |  |  |  |       #define GRID_COLS 3 | 
			
		
	
		
			
				
					|  |  |  |  |       #define MARGIN_T 10 | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(axis_label) BTN( BTN_POS(1,5), BTN_SIZE(1,2), F(""), FONT_LRG, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(axis_label) BTN( BTN_POS(2,5), BTN_SIZE(1,2), F(""), FONT_LRG, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(axis_label) BTN( BTN_POS(3,5), BTN_SIZE(1,2), F(""), FONT_LRG, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       BTX( BTN_POS(1,5), BTN_SIZE(1,1), F("X"), FONT_SML); | 
			
		
	
		
			
				
					|  |  |  |  |       BTX( BTN_POS(2,5), BTN_SIZE(1,1), F("Y"), FONT_SML); | 
			
		
	
		
			
				
					|  |  |  |  |       BTX( BTN_POS(3,5), BTN_SIZE(1,1), F("Z"), FONT_SML); | 
			
		
	
		
			
				
					|  |  |  |  |       #define MARGIN_T 0 | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(x_axis)     BTN( BTN_POS(1,6), BTN_SIZE(1,1), F(""), FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(y_axis)     BTN( BTN_POS(2,6), BTN_SIZE(1,1), F(""), FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(z_axis)     BTN( BTN_POS(3,6), BTN_SIZE(1,1), F(""), FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |       #define MARGIN_T 5 | 
			
		
	
		
			
				
					|  |  |  |  |     #endif | 
			
		
	
		
			
				
					|  |  |  |  | #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS 8 | 
			
		
	
		
			
				
					|  |  |  |  | #else | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS 12 | 
			
		
	
		
			
				
					|  |  |  |  | #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_COLS 4 | 
			
		
	
		
			
				
					|  |  |  |  |     #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(1) RGB(stop_btn) BTN( BTN_POS(1,8), BTN_SIZE(4,1), F("STOP"),  MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(3) RGB(navi_btn) BTN( BTN_POS(1,9), BTN_SIZE(2,1), F(""),      MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(4) RGB(navi_btn) BTN( BTN_POS(3,9), BTN_SIZE(2,1), F("MENU"),  MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       #else | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(1) RGB(stop_btn) BTN( BTN_POS(1,7), BTN_SIZE(2,2), F("STOP"),  MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(3) RGB(navi_btn) BTN( BTN_POS(3,7), BTN_SIZE(1,2), F(""),      MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(4) RGB(navi_btn) BTN( BTN_POS(4,7), BTN_SIZE(1,2), F("MENU"),  MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |     #endif | 
			
		
	
		
			
				
					|  |  |  |  | void StatusScreen::static_temperature() { | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     // Draw Thumb Drive Bitmap on USB Button
 | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(0) | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(temp)      BTN( BTN_POS(1,1), BTN_SIZE(4,2), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(temp)      BTN( BTN_POS(1,1), BTN_SIZE(8,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(fan_speed) BTN( BTN_POS(5,2), BTN_SIZE(4,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(progress)  BTN( BTN_POS(1,3), BTN_SIZE(4,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(progress)  BTN( BTN_POS(5,3), BTN_SIZE(4,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(temp)      BTN( BTN_POS(1,1), BTN_SIZE(4,2), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(temp)      BTN( BTN_POS(1,1), BTN_SIZE(8,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(fan_speed) BTN( BTN_POS(5,2), BTN_SIZE(4,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(progress)  BTN( BTN_POS(9,1), BTN_SIZE(4,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(progress)  BTN( BTN_POS(9,2), BTN_SIZE(4,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Bitmap_Source(TD_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Bitmap_Layout(TD_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Bitmap_Size  (TD_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |   // Draw Extruder Bitmap on Extruder Temperature Button
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(3) | 
			
		
	
		
			
				
					|  |  |  |  |     #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |       BTI(BTN_POS(1,9), BTN_SIZE(2,1), TD_Icon_Info, Theme::icon_scale); | 
			
		
	
		
			
				
					|  |  |  |  |     #else | 
			
		
	
		
			
				
					|  |  |  |  |       BTI(BTN_POS(3,7), BTN_SIZE(1,2), TD_Icon_Info, Theme::icon_scale); | 
			
		
	
		
			
				
					|  |  |  |  |     #endif | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Bitmap_Source(Extruder_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Bitmap_Layout(Extruder_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Bitmap_Size  (Extruder_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |       #define GRID_COLS 8 | 
			
		
	
		
			
				
					|  |  |  |  |     #else | 
			
		
	
		
			
				
					|  |  |  |  |       #define GRID_COLS 12 | 
			
		
	
		
			
				
					|  |  |  |  |     #endif | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(0) | 
			
		
	
		
			
				
					|  |  |  |  |   BTI(BTN_POS(1,1), BTN_SIZE(1,1),  Extruder_Icon_Info, Theme::icon_scale); | 
			
		
	
		
			
				
					|  |  |  |  |   BTI(BTN_POS(5,1), BTN_SIZE(1,1),  Extruder_Icon_Info, Theme::icon_scale); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     // Draw Extruder Bitmap on Extruder Temperature Button
 | 
			
		
	
		
			
				
					|  |  |  |  |   // Draw Bed Heat Bitmap on Bed Heat Button
 | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Bitmap_Source(Bed_Heat_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Bitmap_Layout(Bed_Heat_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Bitmap_Size  (Bed_Heat_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Bitmap_Source(Extruder_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Bitmap_Layout(Extruder_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Bitmap_Size  (Extruder_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(0) | 
			
		
	
		
			
				
					|  |  |  |  |   BTI(BTN_POS(1,2), BTN_SIZE(1,1), Bed_Heat_Icon_Info, Theme::icon_scale); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(0) | 
			
		
	
		
			
				
					|  |  |  |  |     BTI(BTN_POS(1,1), BTN_SIZE(1,1),  Extruder_Icon_Info, Theme::icon_scale); | 
			
		
	
		
			
				
					|  |  |  |  |     BTI(BTN_POS(5,1), BTN_SIZE(1,1),  Extruder_Icon_Info, Theme::icon_scale); | 
			
		
	
		
			
				
					|  |  |  |  |   // Draw Fan Percent Bitmap on Bed Heat Button
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #if EXTRUDERS == 1 | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(6,1), BTN_SIZE(2,1), F("-"), FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |     #endif | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Bitmap_Source(Fan_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Bitmap_Layout(Fan_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Bitmap_Size  (Fan_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     // Draw Bed Heat Bitmap on Bed Heat Button
 | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Bitmap_Source(Bed_Heat_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Bitmap_Layout(Bed_Heat_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Bitmap_Size  (Bed_Heat_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(0) | 
			
		
	
		
			
				
					|  |  |  |  |   BTI(BTN_POS(5,2), BTN_SIZE(1,1), Fan_Icon_Info, Theme::icon_scale); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(0) | 
			
		
	
		
			
				
					|  |  |  |  |     BTI(BTN_POS(1,2), BTN_SIZE(1,1), Bed_Heat_Icon_Info, Theme::icon_scale); | 
			
		
	
		
			
				
					|  |  |  |  | #define ROUND(val) uint16_t((val)+0.5) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     // Draw Fan Percent Bitmap on Bed Heat Button
 | 
			
		
	
		
			
				
					|  |  |  |  | void StatusScreen::dynamic_temperature() { | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Bitmap_Source(Fan_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Bitmap_Layout(Fan_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Bitmap_Size  (Fan_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |   char e0_str[15]; | 
			
		
	
		
			
				
					|  |  |  |  |   char e1_str[15]; | 
			
		
	
		
			
				
					|  |  |  |  |   char bed_str[15]; | 
			
		
	
		
			
				
					|  |  |  |  |   char fan_str[15]; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   sprintf_P( | 
			
		
	
		
			
				
					|  |  |  |  |     fan_str, | 
			
		
	
		
			
				
					|  |  |  |  |     PSTR("%-3d %%"), | 
			
		
	
		
			
				
					|  |  |  |  |     Marlin_LCD_API::getFan_percent(0) | 
			
		
	
		
			
				
					|  |  |  |  |   ); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   sprintf_P( | 
			
		
	
		
			
				
					|  |  |  |  |     bed_str, | 
			
		
	
		
			
				
					|  |  |  |  |     PSTR("%-3d / %-3d  " ), | 
			
		
	
		
			
				
					|  |  |  |  |     ROUND(Marlin_LCD_API::getActualTemp_celsius(0)), | 
			
		
	
		
			
				
					|  |  |  |  |     ROUND(Marlin_LCD_API::getTargetTemp_celsius(0)) | 
			
		
	
		
			
				
					|  |  |  |  |   ); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   sprintf_P( | 
			
		
	
		
			
				
					|  |  |  |  |     e0_str, | 
			
		
	
		
			
				
					|  |  |  |  |     PSTR("%-3d / %-3d C"), | 
			
		
	
		
			
				
					|  |  |  |  |     ROUND(Marlin_LCD_API::getActualTemp_celsius(1)), | 
			
		
	
		
			
				
					|  |  |  |  |     ROUND(Marlin_LCD_API::getTargetTemp_celsius(1)) | 
			
		
	
		
			
				
					|  |  |  |  |   ); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(0) | 
			
		
	
		
			
				
					|  |  |  |  |     BTI(BTN_POS(5,2), BTN_SIZE(1,1), Fan_Icon_Info, Theme::icon_scale); | 
			
		
	
		
			
				
					|  |  |  |  |   #if EXTRUDERS == 2 | 
			
		
	
		
			
				
					|  |  |  |  |     sprintf_P( | 
			
		
	
		
			
				
					|  |  |  |  |       e1_str, | 
			
		
	
		
			
				
					|  |  |  |  |       PSTR("%-3d / %-3d C"), | 
			
		
	
		
			
				
					|  |  |  |  |       ROUND(Marlin_LCD_API::getActualTemp_celsius(2)), | 
			
		
	
		
			
				
					|  |  |  |  |       ROUND(Marlin_LCD_API::getTargetTemp_celsius(2)) | 
			
		
	
		
			
				
					|  |  |  |  |     ); | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |     strcpy_P( | 
			
		
	
		
			
				
					|  |  |  |  |       e1_str, | 
			
		
	
		
			
				
					|  |  |  |  |       PSTR("-") | 
			
		
	
		
			
				
					|  |  |  |  |     ); | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Execute(); | 
			
		
	
		
			
				
					|  |  |  |  |     dlcache.store(); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  |   BTX( BTN_POS(2,1), BTN_SIZE(3,1), e0_str,  FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |   BTX( BTN_POS(6,1), BTN_SIZE(3,1), e1_str,  FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |   BTX( BTN_POS(2,2), BTN_SIZE(3,1), bed_str, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |   BTX( BTN_POS(6,2), BTN_SIZE(3,1), fan_str, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void StatusScreen::static_progress() { | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |   /* Dynamic content, non-cached data follows */ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_ROWS 9 | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(progress)  BTN( BTN_POS(1,3), BTN_SIZE(4,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(progress)  BTN( BTN_POS(5,3), BTN_SIZE(4,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_ROWS 8 | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(progress)  BTN( BTN_POS(9,1), BTN_SIZE(4,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(progress)  BTN( BTN_POS(9,2), BTN_SIZE(4,1), F(""), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(0) | 
			
		
	
		
			
				
					|  |  |  |  | void StatusScreen::dynamic_progress() { | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   const uint32_t elapsed = Marlin_LCD_API::getProgress_seconds_elapsed(); | 
			
		
	
		
			
				
					|  |  |  |  |   const uint8_t hrs = elapsed/3600; | 
			
		
	
		
			
				
					|  |  |  |  |   const uint8_t min = (elapsed/60)%60; | 
			
		
	
		
			
				
					|  |  |  |  |   char b[255]; | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_COLS 8 | 
			
		
	
		
			
				
					|  |  |  |  |     sprintf_P(b, PSTR(" %02d : %02d"), hrs, min); | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(1,3), BTN_SIZE(4,1), b, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     sprintf_P(b, PSTR("%-3d %%"), Marlin_LCD_API::getProgress_percent() ); | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(5,3), BTN_SIZE(4,1), b, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_COLS 12 | 
			
		
	
		
			
				
					|  |  |  |  |     sprintf_P(b, PSTR(" %02d : %02d"), hrs, min); | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(9,1), BTN_SIZE(4,1), b, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     sprintf_P(b, PSTR("%-3d %%"), Marlin_LCD_API::getProgress_percent() ); | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(9,2), BTN_SIZE(4,1), b, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  |   char time_str[10]; | 
			
		
	
		
			
				
					|  |  |  |  |   char progress_str[10]; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   sprintf_P(b, PSTR("%-3d / %-3d C"),  Marlin_LCD_API::getActualTemp_celsius(1),  Marlin_LCD_API::getActualTemp_celsius(1) ); | 
			
		
	
		
			
				
					|  |  |  |  |   BTX( BTN_POS(2,1), BTN_SIZE(3,1), b, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |   sprintf_P(time_str,     PSTR(" %02d : %02d"), hrs, min); | 
			
		
	
		
			
				
					|  |  |  |  |   sprintf_P(progress_str, PSTR("%-3d %%"),      Marlin_LCD_API::getProgress_percent() ); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #if EXTRUDERS == 2 | 
			
		
	
		
			
				
					|  |  |  |  |   sprintf_P(b, PSTR("%-3d / %-3d C"),  Marlin_LCD_API::getActualTemp_celsius(2),  Marlin_LCD_API::getTargetTemp_celsius(2) ); | 
			
		
	
		
			
				
					|  |  |  |  |   BTX( BTN_POS(6,1), BTN_SIZE(3,1), b, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(0) | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(1,3), BTN_SIZE(4,1), time_str,     FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(5,3), BTN_SIZE(4,1), progress_str, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(0) | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(9,1), BTN_SIZE(4,1), time_str,     FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(9,2), BTN_SIZE(4,1), progress_str, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   sprintf_P(b, PSTR("%-3d / %-3d  " ), Marlin_LCD_API::getActualTemp_celsius(0),  Marlin_LCD_API::getActualTemp_celsius(0) ); | 
			
		
	
		
			
				
					|  |  |  |  |   BTX( BTN_POS(2,2), BTN_SIZE(3,1), b, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  | #define GRID_COLS 4 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   sprintf_P(b, PSTR("%-3d %%"), Marlin_LCD_API::getFan_percent(0)  ); | 
			
		
	
		
			
				
					|  |  |  |  |   BTX( BTN_POS(6,2), BTN_SIZE(3,1), b, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  | void StatusScreen::static_interaction_buttons() { | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS 1 | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(status_msg) BTN( BTN_POS(1,4), BTN_SIZE(1,1), lcd_status_message, FONT_LRG, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |       RGB(status_msg) BTN( BTN_POS(1,3), BTN_SIZE(1,2), lcd_status_message, FONT_LRG, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(1) THEME(stop_btn) BTN( BTN_POS(1,8), BTN_SIZE(4,1), F("STOP"),  MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(3) THEME(navi_btn) BTN( BTN_POS(1,9), BTN_SIZE(2,1), F(""),      MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(4) THEME(navi_btn) BTN( BTN_POS(3,9), BTN_SIZE(2,1), F("MENU"),  MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |     #else | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(1) THEME(stop_btn) BTN( BTN_POS(1,7), BTN_SIZE(2,2), F("STOP"),  MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(3) THEME(navi_btn) BTN( BTN_POS(3,7), BTN_SIZE(1,2), F(""),      MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(4) THEME(navi_btn) BTN( BTN_POS(4,7), BTN_SIZE(1,2), F("MENU"),  MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS 3 | 
			
		
	
		
			
				
					|  |  |  |  |   // Draw Thumb Drive Bitmap on USB Button
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   dtostrf(Marlin_LCD_API::getAxisPosition_mm(Marlin_LCD_API::X), 5, 1, b); | 
			
		
	
		
			
				
					|  |  |  |  |   strcat_P(b, PSTR(" mm")); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Bitmap_Source(TD_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Bitmap_Layout(TD_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Bitmap_Size  (TD_Icon_Info); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(3) | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(2,5), BTN_SIZE(2,1), b, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |     BTI(BTN_POS(1,9), BTN_SIZE(2,1), TD_Icon_Info, Theme::icon_scale); | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(1,6), BTN_SIZE(1,1), b, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |     BTI(BTN_POS(3,7), BTN_SIZE(1,2), TD_Icon_Info, Theme::icon_scale); | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #define GRID_COLS 1 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   dtostrf(Marlin_LCD_API::getAxisPosition_mm(Marlin_LCD_API::Y), 5, 1, b); | 
			
		
	
		
			
				
					|  |  |  |  |   strcat_P(b, PSTR(" mm")); | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(2,6), BTN_SIZE(2,1), b, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(2,6), BTN_SIZE(1,1), b, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | void StatusScreen::dynamic_status_message() { | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   dtostrf(Marlin_LCD_API::getAxisPosition_mm(Marlin_LCD_API::Z), 5, 1, b); | 
			
		
	
		
			
				
					|  |  |  |  |   strcat_P(b, PSTR(" mm")); | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(2,7), BTN_SIZE(2,1), b, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(status_msg) BTN( BTN_POS(1,4), BTN_SIZE(1,1), lcd_status_message, FONT_LRG, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |     BTX( BTN_POS(3,6), BTN_SIZE(1,1), b, FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |     THEME(status_msg) BTN( BTN_POS(1,3), BTN_SIZE(1,2), lcd_status_message, FONT_LRG, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS 8 | 
			
		
	
		
			
				
					|  |  |  |  | #else | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS 12 | 
			
		
	
		
			
				
					|  |  |  |  | #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void StatusScreen::onStartup() { | 
			
		
	
		
			
				
					|  |  |  |  |   // Load the bitmaps for the status screen
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::Flash_Write_RGB332_Bitmap(TD_Icon_Info.RAMG_addr,       TD_Icon,       sizeof(TD_Icon)); | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::Flash_Write_RGB332_Bitmap(Extruder_Icon_Info.RAMG_addr, Extruder_Icon, sizeof(Extruder_Icon)); | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::Flash_Write_RGB332_Bitmap(Bed_Heat_Icon_Info.RAMG_addr, Bed_Heat_Icon, sizeof(Bed_Heat_Icon)); | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::Flash_Write_RGB332_Bitmap(Fan_Icon_Info.RAMG_addr,      Fan_Icon,      sizeof(Fan_Icon)); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void StatusScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  |   static CLCD::DLCache dlcache; | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   if(dlcache.hasData()) { | 
			
		
	
		
			
				
					|  |  |  |  |     dlcache.append(); | 
			
		
	
		
			
				
					|  |  |  |  |   } else { | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Clear_Color(Theme::background); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Clear(1,1,1); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     static_temperature(); | 
			
		
	
		
			
				
					|  |  |  |  |     static_progress(); | 
			
		
	
		
			
				
					|  |  |  |  |     static_axis_position(); | 
			
		
	
		
			
				
					|  |  |  |  |     static_interaction_buttons(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     dlcache.store(); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #define MARGIN_T 5 | 
			
		
	
		
			
				
					|  |  |  |  |   /* Dynamic content, non-cached data follows */ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   dynamic_temperature(); | 
			
		
	
		
			
				
					|  |  |  |  |   dynamic_progress(); | 
			
		
	
		
			
				
					|  |  |  |  |   dynamic_status_message(); | 
			
		
	
		
			
				
					|  |  |  |  |   dynamic_axis_position(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(DL_DISPLAY); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_SWAP); | 
			
		
	
	
		
			
				
					|  |  |  | @ -595,57 +688,60 @@ void StatusScreen::onTouchStart(uint8_t tag) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | /************************************ MENU SCREEN *******************************/ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_ROWS 7 | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS 2 | 
			
		
	
		
			
				
					|  |  |  |  | #else | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_ROWS 4 | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS 2 | 
			
		
	
		
			
				
					|  |  |  |  | #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void MenuScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  |   static CLCD::DLCache dlcache; | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   if(dlcache.hasData()) { | 
			
		
	
		
			
				
					|  |  |  |  |     dlcache.append(); | 
			
		
	
		
			
				
					|  |  |  |  |   } else { | 
			
		
	
		
			
				
					|  |  |  |  |     CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Clear_Color(Theme::background); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Clear(1,1,1); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |       #define GRID_ROWS 7 | 
			
		
	
		
			
				
					|  |  |  |  |       #define GRID_COLS 2 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(2) RGB(menu_btn) BTN( BTN_POS(1,1), BTN_SIZE(1,1), F("Auto Home"),          MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(3) RGB(menu_btn) BTN( BTN_POS(2,1), BTN_SIZE(1,1), F("Move Axis"),          MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       #define GRID_COLS 1 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(4) RGB(menu_btn) BTN( BTN_POS(1,2), BTN_SIZE(1,1), F("Disable Steppers"),   MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(5) RGB(menu_btn) BTN( BTN_POS(1,3), BTN_SIZE(1,1), F("Temperature"),        MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(6) RGB(menu_btn) BTN( BTN_POS(1,4), BTN_SIZE(1,1), F("Advanced Settings"),  MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(8) RGB(menu_btn) BTN( BTN_POS(1,5), BTN_SIZE(1,1), F("Recalibrate Screen"), MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(7) RGB(menu_btn) BTN( BTN_POS(1,6), BTN_SIZE(1,1), F("About Firmware"),     MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       #define MARGIN_T 15 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(1) RGB(navi_btn) BTN( BTN_POS(1,7), BTN_SIZE(1,1), F("Back"),               MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       #define MARGIN_T 5 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(2) THEME(menu_btn) BTN( BTN_POS(1,1), BTN_SIZE(1,1), F("Auto Home"),          MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(3) THEME(menu_btn) BTN( BTN_POS(2,1), BTN_SIZE(1,1), F("Move Axis"),          MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(4) THEME(menu_btn) BTN( BTN_POS(1,2), BTN_SIZE(2,1), F("Disable Steppers"),   MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(5) THEME(menu_btn) BTN( BTN_POS(1,3), BTN_SIZE(2,1), F("Temperature"),        MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(6) THEME(menu_btn) BTN( BTN_POS(1,4), BTN_SIZE(2,1), F("Advanced Settings"),  MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(8) THEME(menu_btn) BTN( BTN_POS(1,5), BTN_SIZE(2,1), F("Recalibrate Screen"), MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(7) THEME(menu_btn) BTN( BTN_POS(1,6), BTN_SIZE(2,1), F("About Firmware"),     MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |     #else | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(2) THEME(menu_btn) BTN( BTN_POS(1,1), BTN_SIZE(1,1), F("Auto Home"),          MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(3) THEME(menu_btn) BTN( BTN_POS(1,2), BTN_SIZE(1,1), F("Move Axis"),          MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(4) THEME(menu_btn) BTN( BTN_POS(1,3), BTN_SIZE(1,1), F("Disable Steppers"),   MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(5) THEME(menu_btn) BTN( BTN_POS(2,1), BTN_SIZE(1,1), F("Temperature"),        MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(6) THEME(menu_btn) BTN( BTN_POS(2,2), BTN_SIZE(1,1), F("Configuration"),      MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(7) THEME(menu_btn) BTN( BTN_POS(2,3), BTN_SIZE(1,1), F("About Firmware"),     MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |     #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #define MARGIN_T 15 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(1) THEME(navi_btn) BTN( BTN_POS(1,7), BTN_SIZE(2,1), F("Back"),               MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |     #else | 
			
		
	
		
			
				
					|  |  |  |  |       #define GRID_ROWS 4 | 
			
		
	
		
			
				
					|  |  |  |  |       #define GRID_COLS 2 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(2) RGB(menu_btn) BTN( BTN_POS(1,1), BTN_SIZE(1,1), F("Auto Home"),          MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(3) RGB(menu_btn) BTN( BTN_POS(1,2), BTN_SIZE(1,1), F("Move Axis"),          MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(4) RGB(menu_btn) BTN( BTN_POS(1,3), BTN_SIZE(1,1), F("Disable Steppers"),   MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(5) RGB(menu_btn) BTN( BTN_POS(2,1), BTN_SIZE(1,1), F("Temperature"),        MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(6) RGB(menu_btn) BTN( BTN_POS(2,2), BTN_SIZE(1,1), F("Configuration"),      MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(7) RGB(menu_btn) BTN( BTN_POS(2,3), BTN_SIZE(1,1), F("About Firmware"),     MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       #define MARGIN_T 15 | 
			
		
	
		
			
				
					|  |  |  |  |       #define GRID_COLS 1 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(1) RGB(navi_btn) BTN( BTN_POS(1,4), BTN_SIZE(1,1), F("Back"),               MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       #define MARGIN_T 5 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(1) THEME(navi_btn) BTN( BTN_POS(1,4), BTN_SIZE(2,1), F("Back"),               MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |     #endif | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd(DL_DISPLAY); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd(CMD_SWAP); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Execute(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #define MARGIN_T 5 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     dlcache.store(); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(DL_DISPLAY); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_SWAP); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Execute(); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void MenuScreen::onTouchStart(uint8_t tag) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -661,57 +757,54 @@ void MenuScreen::onTouchStart(uint8_t tag) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | /******************************* CONFIGURATION SCREEN ****************************/ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_ROWS 6 | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS 2 | 
			
		
	
		
			
				
					|  |  |  |  | #else | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_ROWS 4 | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS 2 | 
			
		
	
		
			
				
					|  |  |  |  | #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void AdvancedSettingsScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  |   static CLCD::DLCache dlcache; | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   if(dlcache.hasData()) { | 
			
		
	
		
			
				
					|  |  |  |  |     dlcache.append(); | 
			
		
	
		
			
				
					|  |  |  |  |   } else { | 
			
		
	
		
			
				
					|  |  |  |  |     CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Clear_Color(Theme::background); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Clear(1,1,1); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |       #define GRID_ROWS 6 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(3) THEME(menu_btn) BTN( BTN_POS(1,1), BTN_SIZE(1,2), F("Z Offset "),        MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(4) THEME(menu_btn) BTN( BTN_POS(1,3), BTN_SIZE(1,2), F("Steps/mm"),         MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(6) THEME(disabled) BTN( BTN_POS(2,1), BTN_SIZE(1,1), F("Velocity "),        MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(7) THEME(disabled) BTN( BTN_POS(2,2), BTN_SIZE(1,1), F("Acceleration"),     MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(8) THEME(disabled) BTN( BTN_POS(2,3), BTN_SIZE(1,1), F("Jerk"),             MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(5) THEME(menu_btn) BTN( BTN_POS(1,5), BTN_SIZE(2,1), F("Restore Failsafe"), MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(1) THEME(navi_btn) BTN( BTN_POS(1,6), BTN_SIZE(1,1), F("Save"),             MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(2) THEME(navi_btn) BTN( BTN_POS(2,6), BTN_SIZE(1,1), F("Back"),             MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |     #else | 
			
		
	
		
			
				
					|  |  |  |  |       #define GRID_ROWS 4 | 
			
		
	
		
			
				
					|  |  |  |  |     #endif | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(3) THEME(menu_btn) BTN( BTN_POS(1,1), BTN_SIZE(1,1), F("Z Offset "),        MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(4) THEME(menu_btn) BTN( BTN_POS(1,2), BTN_SIZE(1,1), F("Steps/mm"),         MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_COLS 2 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(6) THEME(disabled) BTN( BTN_POS(2,1), BTN_SIZE(1,1), F("Velocity "),        MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(7) THEME(disabled) BTN( BTN_POS(2,2), BTN_SIZE(1,1), F("Acceleration"),     MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(8) THEME(disabled) BTN( BTN_POS(2,3), BTN_SIZE(1,1), F("Jerk"),             MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(5) THEME(menu_btn) BTN( BTN_POS(1,3), BTN_SIZE(1,1), F("Restore Failsafe"), MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #define MARGIN_T 15 | 
			
		
	
		
			
				
					|  |  |  |  |     #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(3) RGB(menu_btn) BTN( BTN_POS(1,1), BTN_SIZE(1,2), F("Z Offset "),        MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(4) RGB(menu_btn) BTN( BTN_POS(1,3), BTN_SIZE(1,2), F("Steps/mm"),         MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(6) RGB(disabled) BTN( BTN_POS(2,1), BTN_SIZE(1,1), F("Velocity "),        MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(7) RGB(disabled) BTN( BTN_POS(2,2), BTN_SIZE(1,1), F("Acceleration"),     MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(8) RGB(disabled) BTN( BTN_POS(2,3), BTN_SIZE(1,1), F("Jerk"),             MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(5) RGB(menu_btn) BTN( BTN_POS(1,5), BTN_SIZE(2,1), F("Restore Failsafe"), MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(1) RGB(navi_btn) BTN( BTN_POS(1,6), BTN_SIZE(1,1), F("Save"),             MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(2) RGB(navi_btn) BTN( BTN_POS(2,6), BTN_SIZE(1,1), F("Back"),             MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |     #else | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(3) RGB(menu_btn) BTN( BTN_POS(1,1), BTN_SIZE(1,1), F("Z Offset "),        MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(4) RGB(menu_btn) BTN( BTN_POS(1,2), BTN_SIZE(1,1), F("Steps/mm"),         MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(6) RGB(disabled) BTN( BTN_POS(2,1), BTN_SIZE(1,1), F("Velocity "),        MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(7) RGB(disabled) BTN( BTN_POS(2,2), BTN_SIZE(1,1), F("Acceleration"),     MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(8) RGB(disabled) BTN( BTN_POS(2,3), BTN_SIZE(1,1), F("Jerk"),             MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(5) RGB(menu_btn) BTN( BTN_POS(1,3), BTN_SIZE(1,1), F("Restore Failsafe"), MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       #define GRID_COLS 4 | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(1) RGB(navi_btn) BTN( BTN_POS(1,4), BTN_SIZE(2,1), F("Save"),             MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(2) RGB(navi_btn) BTN( BTN_POS(3,4), BTN_SIZE(2,1), F("Back"),             MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(1) THEME(navi_btn) BTN( BTN_POS(1,4), BTN_SIZE(1,1), F("Save"),             MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |       BTN_TAG(2) THEME(navi_btn) BTN( BTN_POS(2,4), BTN_SIZE(1,1), F("Back"),             MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |     #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd(DL_DISPLAY); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd(CMD_SWAP); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Execute(); | 
			
		
	
		
			
				
					|  |  |  |  |     dlcache.store(); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(DL_DISPLAY); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_SWAP); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Execute(); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void AdvancedSettingsScreen::onTouchStart(uint8_t tag) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -725,20 +818,25 @@ void AdvancedSettingsScreen::onTouchStart(uint8_t tag) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | /******************************** CALIBRATION SCREEN ****************************/ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #define GRID_COLS 4 | 
			
		
	
		
			
				
					|  |  |  |  | #define GRID_ROWS 16 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void CalibrationScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Clear_Color(Theme::background); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Clear(1,1,1); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS 4 | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_ROWS 16 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |   BTX( BTN_POS(1,8), BTN_SIZE(4,1), F("Touch the dots"), FONT_LRG); | 
			
		
	
		
			
				
					|  |  |  |  |   BTX( BTN_POS(1,9), BTN_SIZE(4,1), F("to calibrate"), FONT_LRG); | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |   BTX( BTN_POS(1,1), BTN_SIZE(4,16), F("Touch the dots to calibrate"), FONT_LRG); | 
			
		
	
		
			
				
					|  |  |  |  |     #if defined(LCD_800x480) | 
			
		
	
		
			
				
					|  |  |  |  |       BTX( BTN_POS(1,1), BTN_SIZE(4,16), F("Touch the dots to calibrate"), FONT_LRG); | 
			
		
	
		
			
				
					|  |  |  |  |     #else | 
			
		
	
		
			
				
					|  |  |  |  |       BTX( BTN_POS(1,1), BTN_SIZE(4,16), F("Touch the dots to calibrate"), FONT_MED); | 
			
		
	
		
			
				
					|  |  |  |  |     #endif | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_CALIBRATE); | 
			
		
	
	
		
			
				
					|  |  |  | @ -748,13 +846,17 @@ void CalibrationScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void CalibrationScreen::onIdle() { | 
			
		
	
		
			
				
					|  |  |  |  |   if(CLCD::CommandFifo::Is_Idle()) { | 
			
		
	
		
			
				
					|  |  |  |  |   if(CLCD::CommandFifo::Cmd_Is_Idle()) { | 
			
		
	
		
			
				
					|  |  |  |  |     GOTO_SCREEN(StatusScreen); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | /***************************** CALIBRATION REGISTERS SCREEN ****************************/ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #define MARGIN_T 5 | 
			
		
	
		
			
				
					|  |  |  |  | #define GRID_ROWS 7 | 
			
		
	
		
			
				
					|  |  |  |  | #define GRID_COLS 2 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void CalibrationRegistersScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  |   const uint32_t T_Transform_A = CLCD::Mem_Read32(REG_TOUCH_TRANSFORM_A); | 
			
		
	
		
			
				
					|  |  |  |  |   const uint32_t T_Transform_B = CLCD::Mem_Read32(REG_TOUCH_TRANSFORM_B); | 
			
		
	
	
		
			
				
					|  |  |  | @ -765,28 +867,24 @@ void CalibrationRegistersScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  |   char b[20]; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Clear_Color(Theme::background); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Clear(1,1,1); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #define MARGIN_T 5 | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_ROWS 7 | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS 2 | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(0) | 
			
		
	
		
			
				
					|  |  |  |  |   RGB(transformA) BTN( BTN_POS(1,1), BTN_SIZE(1,1), F("TOUCH TRANSFORM_A"), 28, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |   RGB(transformB) BTN( BTN_POS(1,2), BTN_SIZE(1,1), F("TOUCH TRANSFORM_B"), 28, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |   RGB(transformC) BTN( BTN_POS(1,3), BTN_SIZE(1,1), F("TOUCH TRANSFORM_C"), 28, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |   RGB(transformD) BTN( BTN_POS(1,4), BTN_SIZE(1,1), F("TOUCH TRANSFORM_D"), 28, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |   RGB(transformE) BTN( BTN_POS(1,5), BTN_SIZE(1,1), F("TOUCH TRANSFORM_E"), 28, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |   RGB(transformF) BTN( BTN_POS(1,6), BTN_SIZE(1,1), F("TOUCH TRANSFORM_F"), 28, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   RGB(transformVal) BTN( BTN_POS(2,1), BTN_SIZE(1,1), F(""), 28, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   RGB(transformVal) BTN( BTN_POS(2,2), BTN_SIZE(1,1), F(""), 28, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   RGB(transformVal) BTN( BTN_POS(2,3), BTN_SIZE(1,1), F(""), 28, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   RGB(transformVal) BTN( BTN_POS(2,4), BTN_SIZE(1,1), F(""), 28, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   RGB(transformVal) BTN( BTN_POS(2,5), BTN_SIZE(1,1), F(""), 28, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   RGB(transformVal) BTN( BTN_POS(2,6), BTN_SIZE(1,1), F(""), 28, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   THEME(transformA) BTN( BTN_POS(1,1), BTN_SIZE(1,1), F("TOUCH TRANSFORM_A"), 28, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |   THEME(transformB) BTN( BTN_POS(1,2), BTN_SIZE(1,1), F("TOUCH TRANSFORM_B"), 28, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |   THEME(transformC) BTN( BTN_POS(1,3), BTN_SIZE(1,1), F("TOUCH TRANSFORM_C"), 28, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |   THEME(transformD) BTN( BTN_POS(1,4), BTN_SIZE(1,1), F("TOUCH TRANSFORM_D"), 28, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |   THEME(transformE) BTN( BTN_POS(1,5), BTN_SIZE(1,1), F("TOUCH TRANSFORM_E"), 28, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |   THEME(transformF) BTN( BTN_POS(1,6), BTN_SIZE(1,1), F("TOUCH TRANSFORM_F"), 28, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   THEME(transformVal) BTN( BTN_POS(2,1), BTN_SIZE(1,1), F(""), 28, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   THEME(transformVal) BTN( BTN_POS(2,2), BTN_SIZE(1,1), F(""), 28, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   THEME(transformVal) BTN( BTN_POS(2,3), BTN_SIZE(1,1), F(""), 28, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   THEME(transformVal) BTN( BTN_POS(2,4), BTN_SIZE(1,1), F(""), 28, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   THEME(transformVal) BTN( BTN_POS(2,5), BTN_SIZE(1,1), F(""), 28, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   THEME(transformVal) BTN( BTN_POS(2,6), BTN_SIZE(1,1), F(""), 28, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   sprintf(b, "0x%08lX", T_Transform_A); BTX( BTN_POS(2,1), BTN_SIZE(1,1), b, 28); | 
			
		
	
		
			
				
					|  |  |  |  |   sprintf(b, "0x%08lX", T_Transform_B); BTX( BTN_POS(2,2), BTN_SIZE(1,1), b, 28); | 
			
		
	
	
		
			
				
					|  |  |  | @ -797,7 +895,7 @@ void CalibrationRegistersScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS 3 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(1) RGB(navi_btn) BTN( BTN_POS(3,7), BTN_SIZE(1,1), F("Back"), MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(1) THEME(navi_btn) BTN( BTN_POS(3,7), BTN_SIZE(1,1), F("Back"), MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(DL_DISPLAY); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_SWAP); | 
			
		
	
	
		
			
				
					|  |  |  | @ -812,147 +910,162 @@ void CalibrationRegistersScreen::onTouchStart(uint8_t tag) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | /*************************** GENERIC VALUE ADJUSTMENT SCREEN ******************************/ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void ValueAdjusters::static_heading(progmem_str heading) { | 
			
		
	
		
			
				
					|  |  |  |  | #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS  6 | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_ROWS 10 | 
			
		
	
		
			
				
					|  |  |  |  | #else | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_COLS  9 | 
			
		
	
		
			
				
					|  |  |  |  |   #define GRID_ROWS  6 | 
			
		
	
		
			
				
					|  |  |  |  | #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void ValueAdjusters::draw_increment_btn(const uint8_t tag, uint8_t decimals) { | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo  cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   const char        *label = PSTR("?"); | 
			
		
	
		
			
				
					|  |  |  |  |   uint8_t            pos; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   switch(tag) { | 
			
		
	
		
			
				
					|  |  |  |  |     case 20: label = PSTR("0.001"); pos = decimals - 3; break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 21: label = PSTR( "0.01"); pos = decimals - 2; break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 22: label = PSTR(  "0.1"); pos = decimals - 1; break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 23: label = PSTR(  "1"  ); pos = decimals + 0; break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 24: label = PSTR( "10"  ); pos = decimals + 1; break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 25: label = PSTR("100"  ); pos = decimals + 2; break; | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(tag) | 
			
		
	
		
			
				
					|  |  |  |  |   switch(pos) { | 
			
		
	
		
			
				
					|  |  |  |  |     #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |       case 0: BTN( BTN_POS(2,8), BTN_SIZE(1,1), progmem_str(label), FONT_MED, OPT_3D); break; | 
			
		
	
		
			
				
					|  |  |  |  |       case 1: BTN( BTN_POS(3,8), BTN_SIZE(1,1), progmem_str(label), FONT_MED, OPT_3D); break; | 
			
		
	
		
			
				
					|  |  |  |  |       case 2: BTN( BTN_POS(4,8), BTN_SIZE(1,1), progmem_str(label), FONT_MED, OPT_3D); break; | 
			
		
	
		
			
				
					|  |  |  |  |     #else | 
			
		
	
		
			
				
					|  |  |  |  |       case 0: BTN( BTN_POS(8,2), BTN_SIZE(2,1), progmem_str(label), FONT_MED, OPT_3D); break; | 
			
		
	
		
			
				
					|  |  |  |  |       case 1: BTN( BTN_POS(8,3), BTN_SIZE(2,1), progmem_str(label), FONT_MED, OPT_3D); break; | 
			
		
	
		
			
				
					|  |  |  |  |       case 2: BTN( BTN_POS(8,4), BTN_SIZE(2,1), progmem_str(label), FONT_MED, OPT_3D); break; | 
			
		
	
		
			
				
					|  |  |  |  |       #endif | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void ValueAdjusters::heading_t::static_parts() const { | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Clear_Color(Theme::adjust_bg); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Clear(1,1,1); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_COLS 6 | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_ROWS 9 | 
			
		
	
		
			
				
					|  |  |  |  |     #define EDGE_R    20 | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_COLS 9 | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_ROWS 6 | 
			
		
	
		
			
				
					|  |  |  |  |     #define EDGE_R    40 | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  |   // Draw all the buttons in the off state.
 | 
			
		
	
		
			
				
					|  |  |  |  |   THEME(toggle_off); | 
			
		
	
		
			
				
					|  |  |  |  |   draw_increment_btn(23 - decimals, decimals); | 
			
		
	
		
			
				
					|  |  |  |  |   draw_increment_btn(24 - decimals, decimals); | 
			
		
	
		
			
				
					|  |  |  |  |   draw_increment_btn(25 - decimals, decimals); | 
			
		
	
		
			
				
					|  |  |  |  |   draw_increment_btn(26 - decimals, decimals); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG( 0) RGB(adjust_bg) BTN( BTN_POS(1,1), BTN_SIZE(6,1), heading, FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG( 0) RGB(adjust_bg) BTN( BTN_POS(1,7), BTN_SIZE(2,1), F("Increment:"), FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(20) TOGGLE(increment == 0.1 ) BTN( BTN_POS(3,7), BTN_SIZE(1,1), F("0.1"), FONT_MED, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(21) TOGGLE(increment == 1.  ) BTN( BTN_POS(4,7), BTN_SIZE(1,1), F("1"),   FONT_MED, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(22) TOGGLE(increment == 10. ) BTN( BTN_POS(5,7), BTN_SIZE(1,1), F("10"),  FONT_MED, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(23) TOGGLE(increment == 100.) BTN( BTN_POS(6,7), BTN_SIZE(1,1), F("100"), FONT_MED, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #define EDGE_R    0 | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_COLS 4 | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(1) RGB(navi_btn) BTN( BTN_POS(1,9), BTN_SIZE(4,1), F("Back"), MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(0) THEME(adjust_bg) BTN( BTN_POS(1,1),  BTN_SIZE(6,1), heading,             FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(0) THEME(adjust_bg) BTN( BTN_POS(1,7),  BTN_SIZE(6,1), F("Increment:"),     FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(1) THEME(navi_btn)  BTN( BTN_POS(1,10), BTN_SIZE(6,1), F("Back"),           MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG( 0) RGB(adjust_bg) BTN( BTN_POS(3,1), BTN_SIZE(4,1),   heading, FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG( 0) RGB(adjust_bg) BTN( BTN_POS(8,1), BTN_SIZE(2,1), F("Increment"), FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(20) TOGGLE(increment == 0.1 ) BTN( BTN_POS(8,2), BTN_SIZE(1,1), F("0.1"), FONT_MED, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(21) TOGGLE(increment == 1.  ) BTN( BTN_POS(9,2), BTN_SIZE(1,1), F("1"),   FONT_MED, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(22) TOGGLE(increment == 10. ) BTN( BTN_POS(8,3), BTN_SIZE(2,1), F("10"),  FONT_MED, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(23) TOGGLE(increment == 100.) BTN( BTN_POS(8,4), BTN_SIZE(2,1), F("100"), FONT_MED, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #define EDGE_R  0 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #define MARGIN_T 15 | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_COLS 4 | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(1) RGB(navi_btn) BTN( BTN_POS(1,6), BTN_SIZE(4,1), F("Back"), MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |     #define MARGIN_T 5 | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(0) THEME(adjust_bg) BTN( BTN_POS(3,1),  BTN_SIZE(4,1), (progmem_str) label, FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(0) THEME(adjust_bg) BTN( BTN_POS(8,1),  BTN_SIZE(2,1), F("Increment"),      FONT_MED, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |     BTN_TAG(1) THEME(navi_btn)  BTN( BTN_POS(7,6),  BTN_SIZE(3,1), F("Back"),           MENU_BTN_STYLE); | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Execute(); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void ValueAdjusters::static_value(int line, progmem_str label) { | 
			
		
	
		
			
				
					|  |  |  |  | void ValueAdjusters::heading_t::dynamic_parts() const { | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_COLS 6 | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_ROWS 9 | 
			
		
	
		
			
				
					|  |  |  |  |     #define EDGE_R    20 | 
			
		
	
		
			
				
					|  |  |  |  |   THEME(toggle_on); | 
			
		
	
		
			
				
					|  |  |  |  |   draw_increment_btn(increment, decimals); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_800x480) | 
			
		
	
		
			
				
					|  |  |  |  |     #define EDGE_R 20 | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |     #define EDGE_R 10 | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | #else | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_800x480) | 
			
		
	
		
			
				
					|  |  |  |  |     #define EDGE_R  40 | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_COLS 9 | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_ROWS 6 | 
			
		
	
		
			
				
					|  |  |  |  |     #define EDGE_R    40 | 
			
		
	
		
			
				
					|  |  |  |  |     #define EDGE_R  20 | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG( 0)                        BTN( BTN_POS(3,line+1), BTN_SIZE(2,1), F(""),  FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG( 0)         RGB(adjust_bg) BTN( BTN_POS(1,line+1), BTN_SIZE(2,1), label,  FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(2*line    ) RGB(incr_btn)  BTN( BTN_POS(5,line+1), BTN_SIZE(1,1), F("-"), FONT_MED, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(2*line + 1) RGB(incr_btn)  BTN( BTN_POS(6,line+1), BTN_SIZE(1,1), F("+"), FONT_MED, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  | void ValueAdjusters::adjuster_t::static_parts() const { | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   progmem_str   str  = (progmem_str) label; | 
			
		
	
		
			
				
					|  |  |  |  |   const uint8_t tag  = line * 2; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #define EDGE_R  0 | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG( 0     ) RGB(color)       BTN( BTN_POS(3,line+1), BTN_SIZE(2,1), F(""),  FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG( 0     ) THEME(adjust_bg) BTN( BTN_POS(1,line+1), BTN_SIZE(2,1), str,    FONT_SML, OPT_FLAT); | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(tag    ) THEME(incr_btn)  BTN( BTN_POS(5,line+1), BTN_SIZE(1,1), F("-"), FONT_MED, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(tag + 1) THEME(incr_btn)  BTN( BTN_POS(6,line+1), BTN_SIZE(1,1), F("+"), FONT_MED, OPT_3D); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Execute(); | 
			
		
	
		
			
				
					|  |  |  |  |   increment = 23 - decimals; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void ValueAdjusters::dynamic_value(int line, float value, progmem_str units) { | 
			
		
	
		
			
				
					|  |  |  |  | void ValueAdjusters::adjuster_t::dynamic_parts(float value) const { | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |   #define MARGIN_T  5 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #if defined(LCD_PORTRAIT) | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_COLS 6 | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_ROWS 9 | 
			
		
	
		
			
				
					|  |  |  |  |     #define EDGE_R    20 | 
			
		
	
		
			
				
					|  |  |  |  |   #else | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_COLS 9 | 
			
		
	
		
			
				
					|  |  |  |  |     #define GRID_ROWS 6 | 
			
		
	
		
			
				
					|  |  |  |  |     #define EDGE_R    40 | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG( 0) | 
			
		
	
		
			
				
					|  |  |  |  |   char b[32]; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   char b[255]; | 
			
		
	
		
			
				
					|  |  |  |  |   dtostrf(value, 5, 1, b); | 
			
		
	
		
			
				
					|  |  |  |  |   dtostrf(value, 5, decimals, b); | 
			
		
	
		
			
				
					|  |  |  |  |   strcat_P(b, PSTR(" ")); | 
			
		
	
		
			
				
					|  |  |  |  |   strcat_P(b, (const char*) units); | 
			
		
	
		
			
				
					|  |  |  |  |   BTX( BTN_POS(3,line+1), BTN_SIZE(2,1), b, FONT_SML); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #define EDGE_R  0 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Execute(); | 
			
		
	
		
			
				
					|  |  |  |  |   BTN_TAG(0) | 
			
		
	
		
			
				
					|  |  |  |  |   BTX( BTN_POS(3,line+1), BTN_SIZE(2,1), b, FONT_SML); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void ValueAdjusters::onTouchStart(uint8_t tag) { | 
			
		
	
		
			
				
					|  |  |  |  |   switch(tag) { | 
			
		
	
		
			
				
					|  |  |  |  |     case 1:        GOTO_PREVIOUS();                 return; | 
			
		
	
		
			
				
					|  |  |  |  |     case 2 ... 9:  current_screen.onTouchHeld(tag); return; | 
			
		
	
		
			
				
					|  |  |  |  |     case 20: increment = 0.1;                       break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 21: increment = 1;                         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 22: increment = 10;                        break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 23: increment = 100;                       break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 1:         GOTO_PREVIOUS();                 return; | 
			
		
	
		
			
				
					|  |  |  |  |     case 2  ... 9:  current_screen.onTouchHeld(tag); return; | 
			
		
	
		
			
				
					|  |  |  |  |     case 20 ... 25: increment = tag;                 break; | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  |   current_screen.onRefresh(); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | float ValueAdjusters::increment = 1; | 
			
		
	
		
			
				
					|  |  |  |  | float ValueAdjusters::getIncrement() { | 
			
		
	
		
			
				
					|  |  |  |  |   switch(increment) { | 
			
		
	
		
			
				
					|  |  |  |  |     case 20: return   0.001; | 
			
		
	
		
			
				
					|  |  |  |  |     case 21: return   0.01; | 
			
		
	
		
			
				
					|  |  |  |  |     case 22: return   0.1; | 
			
		
	
		
			
				
					|  |  |  |  |     case 23: return   1.0; | 
			
		
	
		
			
				
					|  |  |  |  |     case 24: return  10.0; | 
			
		
	
		
			
				
					|  |  |  |  |     case 25: return 100.0; | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | uint8_t ValueAdjusters::increment = 20; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #define EDGE_R 0 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | /******************************** MOVE AXIS SCREEN ******************************/ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void MoveAxisScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  |   static CLCD::DLCache dlcache; | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   /*                    #  Label:              Units:      Color:         Precision: */ | 
			
		
	
		
			
				
					|  |  |  |  |   const heading_t  a = {   PSTR("Move Axis"),                             1          }; | 
			
		
	
		
			
				
					|  |  |  |  |   const adjuster_t b = {1, PSTR("X:"),         PSTR("mm"), Theme::x_axis, 1          }; | 
			
		
	
		
			
				
					|  |  |  |  |   const adjuster_t c = {2, PSTR("Y:"),         PSTR("mm"), Theme::y_axis, 1          }; | 
			
		
	
		
			
				
					|  |  |  |  |   const adjuster_t d = {3, PSTR("Z:"),         PSTR("mm"), Theme::z_axis, 1          }; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   if(dlcache.hasData()) { | 
			
		
	
		
			
				
					|  |  |  |  |     dlcache.append(); | 
			
		
	
		
			
				
					|  |  |  |  |   } else { | 
			
		
	
		
			
				
					|  |  |  |  |     CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Execute(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 ValueAdjusters::static_heading(F("Move Axis")); | 
			
		
	
		
			
				
					|  |  |  |  |     RGB(x_axis) ValueAdjusters::static_value(1, F("X:")); | 
			
		
	
		
			
				
					|  |  |  |  |     RGB(y_axis) ValueAdjusters::static_value(2, F("Y:")); | 
			
		
	
		
			
				
					|  |  |  |  |     RGB(z_axis) ValueAdjusters::static_value(3, F("Z:")); | 
			
		
	
		
			
				
					|  |  |  |  |     a.static_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |     b.static_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |     c.static_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |     d.static_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |     dlcache.store(); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  |   a.dynamic_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |   b.dynamic_parts(marlin_x_axis); | 
			
		
	
		
			
				
					|  |  |  |  |   c.dynamic_parts(marlin_y_axis); | 
			
		
	
		
			
				
					|  |  |  |  |   d.dynamic_parts(marlin_z_axis); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   ValueAdjusters::dynamic_value(1, marlin_x_axis, F("mm")); | 
			
		
	
		
			
				
					|  |  |  |  |   ValueAdjusters::dynamic_value(2, marlin_y_axis, F("mm")); | 
			
		
	
		
			
				
					|  |  |  |  |   ValueAdjusters::dynamic_value(3, marlin_z_axis, F("mm")); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(DL_DISPLAY); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_SWAP); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Execute(); | 
			
		
	
	
		
			
				
					|  |  |  | @ -960,12 +1073,12 @@ void MoveAxisScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void MoveAxisScreen::onTouchHeld(uint8_t tag) { | 
			
		
	
		
			
				
					|  |  |  |  |   switch(tag) { | 
			
		
	
		
			
				
					|  |  |  |  |     case 2:  marlin_x_axis -=  increment;       break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 3:  marlin_x_axis +=  increment;       break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 4:  marlin_y_axis -=  increment;       break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 5:  marlin_y_axis +=  increment;       break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 6:  marlin_z_axis -=  increment;       break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 7:  marlin_z_axis +=  increment;       break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 2:  marlin_x_axis -= getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 3:  marlin_x_axis += getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 4:  marlin_y_axis -= getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 5:  marlin_y_axis += getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 6:  marlin_z_axis -= getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 7:  marlin_z_axis += getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  |   onRefresh(); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | @ -974,29 +1087,29 @@ void MoveAxisScreen::onTouchHeld(uint8_t tag) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void TemperatureScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  |   static CLCD::DLCache dlcache; | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   /*                    #  Label:              Units:     Color:            Precision: */ | 
			
		
	
		
			
				
					|  |  |  |  |   const heading_t  a = {   PSTR("Nozzle:"),                                 0          }; | 
			
		
	
		
			
				
					|  |  |  |  |   const adjuster_t b = {1, PSTR("Nozzle:"),    PSTR("C"), Theme::temp,      0          }; | 
			
		
	
		
			
				
					|  |  |  |  |   const adjuster_t c = {2, PSTR("Bed:"),       PSTR("C"), Theme::temp,      0          }; | 
			
		
	
		
			
				
					|  |  |  |  |   const adjuster_t d = {3, PSTR("Fan Speed:"), PSTR("%"), Theme::fan_speed, 0          }; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   if(dlcache.hasData()) { | 
			
		
	
		
			
				
					|  |  |  |  |     dlcache.append(); | 
			
		
	
		
			
				
					|  |  |  |  |   } else { | 
			
		
	
		
			
				
					|  |  |  |  |     CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 ValueAdjusters::static_heading(F("Temperature")); | 
			
		
	
		
			
				
					|  |  |  |  |     RGB(x_axis) ValueAdjusters::static_value(1, F("Nozzle:")); | 
			
		
	
		
			
				
					|  |  |  |  |     RGB(y_axis) ValueAdjusters::static_value(2, F("Bed:")); | 
			
		
	
		
			
				
					|  |  |  |  |     RGB(z_axis) ValueAdjusters::static_value(3, F("Fan Speed:")); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Execute(); | 
			
		
	
		
			
				
					|  |  |  |  |     a.static_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |     b.static_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |     c.static_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |     d.static_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |     dlcache.store(); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  |   a.dynamic_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |   b.dynamic_parts(marlin_e0_temp); | 
			
		
	
		
			
				
					|  |  |  |  |   c.dynamic_parts(marlin_bed_temp); | 
			
		
	
		
			
				
					|  |  |  |  |   d.dynamic_parts(marlin_fan_speed); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   ValueAdjusters::dynamic_value(1, marlin_e0_temp,   F("C")); | 
			
		
	
		
			
				
					|  |  |  |  |   ValueAdjusters::dynamic_value(2, marlin_bed_temp,  F("C")); | 
			
		
	
		
			
				
					|  |  |  |  |   ValueAdjusters::dynamic_value(3, marlin_fan_speed, F("%")); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(DL_DISPLAY); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_SWAP); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Execute(); | 
			
		
	
	
		
			
				
					|  |  |  | @ -1004,12 +1117,12 @@ void TemperatureScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void TemperatureScreen::onTouchHeld(uint8_t tag) { | 
			
		
	
		
			
				
					|  |  |  |  |   switch(tag) { | 
			
		
	
		
			
				
					|  |  |  |  |     case 2:  marlin_e0_temp     -=  increment;         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 3:  marlin_e0_temp     +=  increment;         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 4:  marlin_bed_temp    -=  increment;         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 5:  marlin_bed_temp    +=  increment;         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 6:  marlin_fan_speed   -=  increment;         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 7:  marlin_fan_speed   +=  increment;         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 2:  marlin_e0_temp   -= getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 3:  marlin_e0_temp   += getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 4:  marlin_bed_temp  -= getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 5:  marlin_bed_temp  += getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 6:  marlin_fan_speed -= getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 7:  marlin_fan_speed += getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  |   onRefresh(); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | @ -1018,31 +1131,32 @@ void TemperatureScreen::onTouchHeld(uint8_t tag) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void StepsScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  |   static CLCD::DLCache dlcache; | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   /*                    #  Label:      Units:             Color:            Precision: */ | 
			
		
	
		
			
				
					|  |  |  |  |   const heading_t  a = {               PSTR("Steps/mm"),                    0}; | 
			
		
	
		
			
				
					|  |  |  |  |   const adjuster_t b = {1, PSTR("X:"), PSTR(""),          Theme::x_axis,    0}; | 
			
		
	
		
			
				
					|  |  |  |  |   const adjuster_t c = {2, PSTR("Y:"), PSTR(""),          Theme::y_axis,    0}; | 
			
		
	
		
			
				
					|  |  |  |  |   const adjuster_t d = {3, PSTR("Z:"), PSTR(""),          Theme::z_axis,    0}; | 
			
		
	
		
			
				
					|  |  |  |  |   const adjuster_t e = {4, PSTR("E:"), PSTR(""),          Theme::z_axis,    0}; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   if(dlcache.hasData()) { | 
			
		
	
		
			
				
					|  |  |  |  |     dlcache.append(); | 
			
		
	
		
			
				
					|  |  |  |  |   } else { | 
			
		
	
		
			
				
					|  |  |  |  |     CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 ValueAdjusters::static_heading(F("Steps/mm")); | 
			
		
	
		
			
				
					|  |  |  |  |     RGB(x_axis) ValueAdjusters::static_value(1, F("X:")); | 
			
		
	
		
			
				
					|  |  |  |  |     RGB(y_axis) ValueAdjusters::static_value(2, F("Y:")); | 
			
		
	
		
			
				
					|  |  |  |  |     RGB(z_axis) ValueAdjusters::static_value(3, F("Z:")); | 
			
		
	
		
			
				
					|  |  |  |  |     RGB(e_axis) ValueAdjusters::static_value(4, F("E:")); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Execute(); | 
			
		
	
		
			
				
					|  |  |  |  |     a.static_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |     b.static_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |     c.static_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |     d.static_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |     e.static_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |     dlcache.store(); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  |   a.dynamic_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |   b.dynamic_parts(marlin_x_steps ); | 
			
		
	
		
			
				
					|  |  |  |  |   c.dynamic_parts(marlin_y_steps ); | 
			
		
	
		
			
				
					|  |  |  |  |   d.dynamic_parts(marlin_z_steps ); | 
			
		
	
		
			
				
					|  |  |  |  |   e.dynamic_parts(marlin_e0_steps); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   ValueAdjusters::dynamic_value(1, marlin_x_steps,  F("")); | 
			
		
	
		
			
				
					|  |  |  |  |   ValueAdjusters::dynamic_value(2, marlin_y_steps,  F("")); | 
			
		
	
		
			
				
					|  |  |  |  |   ValueAdjusters::dynamic_value(3, marlin_z_steps,  F("")); | 
			
		
	
		
			
				
					|  |  |  |  |   ValueAdjusters::dynamic_value(4, marlin_e0_steps, F("")); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(DL_DISPLAY); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_SWAP); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Execute(); | 
			
		
	
	
		
			
				
					|  |  |  | @ -1050,14 +1164,14 @@ void StepsScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void StepsScreen::onTouchHeld(uint8_t tag) { | 
			
		
	
		
			
				
					|  |  |  |  |   switch(tag) { | 
			
		
	
		
			
				
					|  |  |  |  |     case 2:  marlin_x_steps   -=  increment;         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 3:  marlin_x_steps   +=  increment;         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 4:  marlin_y_steps   -=  increment;         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 5:  marlin_y_steps   +=  increment;         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 6:  marlin_z_steps   -=  increment;         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 7:  marlin_z_steps   +=  increment;         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 8:  marlin_e0_steps  -=  increment;         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 9:  marlin_e0_steps  +=  increment;         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 2:  marlin_x_steps   -= getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 3:  marlin_x_steps   += getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 4:  marlin_y_steps   -= getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 5:  marlin_y_steps   += getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 6:  marlin_z_steps   -= getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 7:  marlin_z_steps   += getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 8:  marlin_e0_steps  -= getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 9:  marlin_e0_steps  += getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  |   onRefresh(); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | @ -1066,25 +1180,23 @@ void StepsScreen::onTouchHeld(uint8_t tag) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void ZOffsetScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  |   static CLCD::DLCache dlcache; | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   /*                    #  Label:             Units:      Color:            Precision: */ | 
			
		
	
		
			
				
					|  |  |  |  |   const heading_t  a = {   PSTR("Z Offset"),                                3          }; | 
			
		
	
		
			
				
					|  |  |  |  |   const adjuster_t b = {2, PSTR("Z Offset:"), PSTR("mm"), Theme::z_axis,    3          }; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   if(dlcache.hasData()) { | 
			
		
	
		
			
				
					|  |  |  |  |     dlcache.append(); | 
			
		
	
		
			
				
					|  |  |  |  |   } else { | 
			
		
	
		
			
				
					|  |  |  |  |     CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd(CMD_DLSTART); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 ValueAdjusters::static_heading(F("Z Offset")); | 
			
		
	
		
			
				
					|  |  |  |  |     RGB(z_axis) ValueAdjusters::static_value(2, F("Z Offset:")); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     cmd.Cmd_Execute(); | 
			
		
	
		
			
				
					|  |  |  |  |     a.static_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |     b.static_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |     dlcache.store(); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  |   a.dynamic_parts(); | 
			
		
	
		
			
				
					|  |  |  |  |   b.dynamic_parts(marlin_z_offset); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   ValueAdjusters::dynamic_value(2, marlin_z_offset,  F("mm")); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   CLCD::CommandFifo cmd; | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Start(); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(DL_DISPLAY); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd(CMD_SWAP); | 
			
		
	
		
			
				
					|  |  |  |  |   cmd.Cmd_Execute(); | 
			
		
	
	
		
			
				
					|  |  |  | @ -1092,8 +1204,8 @@ void ZOffsetScreen::onRefresh() { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void ZOffsetScreen::onTouchHeld(uint8_t tag) { | 
			
		
	
		
			
				
					|  |  |  |  |   switch(tag) { | 
			
		
	
		
			
				
					|  |  |  |  |     case 4:  marlin_z_offset   -=  increment;         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 5:  marlin_z_offset   +=  increment;         break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 4:  marlin_z_offset -= getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |     case 5:  marlin_z_offset += getIncrement(); break; | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  |   onRefresh(); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | @ -1122,7 +1234,7 @@ void lcd_update() { | 
			
		
	
		
			
				
					|  |  |  |  |   // If the LCD is processing commands, don't check
 | 
			
		
	
		
			
				
					|  |  |  |  |   // for tags since they may be changing and could
 | 
			
		
	
		
			
				
					|  |  |  |  |   // cause spurious events.
 | 
			
		
	
		
			
				
					|  |  |  |  |   if(!CLCD::CommandFifo::Is_Idle()) { | 
			
		
	
		
			
				
					|  |  |  |  |   if(!CLCD::CommandFifo::Cmd_Is_Idle()) { | 
			
		
	
		
			
				
					|  |  |  |  |     return; | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -1139,6 +1251,14 @@ void lcd_update() { | 
			
		
	
		
			
				
					|  |  |  |  |     else if(pressed != NONE) { | 
			
		
	
		
			
				
					|  |  |  |  |       current_screen.onTouchEnd(pressed); | 
			
		
	
		
			
				
					|  |  |  |  |       pressed = NONE; | 
			
		
	
		
			
				
					|  |  |  |  |       #if defined(UI_FRAMEWORK_DEBUG) | 
			
		
	
		
			
				
					|  |  |  |  |         #if defined (SERIAL_PROTOCOLLNPAIR) | 
			
		
	
		
			
				
					|  |  |  |  |           SERIAL_PROTOCOLLNPAIR("Touch end: ", tag); | 
			
		
	
		
			
				
					|  |  |  |  |         #else | 
			
		
	
		
			
				
					|  |  |  |  |           Serial.print("Touch end: "); | 
			
		
	
		
			
				
					|  |  |  |  |           Serial.println(tag); | 
			
		
	
		
			
				
					|  |  |  |  |         #endif | 
			
		
	
		
			
				
					|  |  |  |  |       #endif | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  |   else if(pressed == NONE) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -1148,8 +1268,12 @@ void lcd_update() { | 
			
		
	
		
			
				
					|  |  |  |  |     last_repeat = millis(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     #if defined(UI_FRAMEWORK_DEBUG) | 
			
		
	
		
			
				
					|  |  |  |  |     Serial.print("Touch start: "); | 
			
		
	
		
			
				
					|  |  |  |  |     Serial.println(tag); | 
			
		
	
		
			
				
					|  |  |  |  |       #if defined (SERIAL_PROTOCOLLNPAIR) | 
			
		
	
		
			
				
					|  |  |  |  |         SERIAL_PROTOCOLLNPAIR("Touch start: ", tag); | 
			
		
	
		
			
				
					|  |  |  |  |       #else | 
			
		
	
		
			
				
					|  |  |  |  |         Serial.print("Touch start: "); | 
			
		
	
		
			
				
					|  |  |  |  |         Serial.println(tag); | 
			
		
	
		
			
				
					|  |  |  |  |       #endif | 
			
		
	
		
			
				
					|  |  |  |  |     #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     if(lastScreen != current_screen.getScreen()) { | 
			
		
	
	
		
			
				
					|  |  |  | 
 |