Improvements and fixes to Lulzbot UI (#15490)
This commit is contained in:
		
				
					committed by
					
						 Scott Lahteine
						Scott Lahteine
					
				
			
			
				
	
			
			
			
						parent
						
							e6055dce76
						
					
				
				
					commit
					dc14d4a13c
				
			| @@ -566,3 +566,7 @@ | |||||||
| #define HAS_SDCARD_CONNECTION EITHER(TARGET_LPC1768, ADAFRUIT_GRAND_CENTRAL_M4) | #define HAS_SDCARD_CONNECTION EITHER(TARGET_LPC1768, ADAFRUIT_GRAND_CENTRAL_M4) | ||||||
|  |  | ||||||
| #define HAS_LINEAR_E_JERK (DISABLED(CLASSIC_JERK) && ENABLED(LIN_ADVANCE)) | #define HAS_LINEAR_E_JERK (DISABLED(CLASSIC_JERK) && ENABLED(LIN_ADVANCE)) | ||||||
|  |  | ||||||
|  | #ifndef SPI_SPEED | ||||||
|  |   #define SPI_SPEED SPI_FULL_SPEED | ||||||
|  | #endif | ||||||
|   | |||||||
| @@ -861,7 +861,7 @@ void MarlinUI::draw_status_screen() { | |||||||
|           uint16_t per; |           uint16_t per; | ||||||
|           #if HAS_FAN0 |           #if HAS_FAN0 | ||||||
|             if (true |             if (true | ||||||
|               #if EXTRUDERS |               #if EXTRUDERS && ENABLED(ADAPTIVE_FAN_SLOWING) | ||||||
|                 && (blink || thermalManager.fan_speed_scaler[0] < 128) |                 && (blink || thermalManager.fan_speed_scaler[0] < 128) | ||||||
|               #endif |               #endif | ||||||
|             ) { |             ) { | ||||||
|   | |||||||
| @@ -310,7 +310,9 @@ class CommandProcessor : public CLCD::CommandFifo { | |||||||
|     int8_t apply_fit_text(int16_t w, int16_t h, T text) { |     int8_t apply_fit_text(int16_t w, int16_t h, T text) { | ||||||
|       using namespace FTDI; |       using namespace FTDI; | ||||||
|       int8_t font = _font; |       int8_t font = _font; | ||||||
|  |       #ifdef TOUCH_UI_USE_UTF8 | ||||||
|         const bool is_utf8 = has_utf8_chars(text); |         const bool is_utf8 = has_utf8_chars(text); | ||||||
|  |       #endif | ||||||
|       for (;font >= 26;) { |       for (;font >= 26;) { | ||||||
|         int16_t width, height; |         int16_t width, height; | ||||||
|         #ifdef TOUCH_UI_USE_UTF8 |         #ifdef TOUCH_UI_USE_UTF8 | ||||||
|   | |||||||
| @@ -21,6 +21,46 @@ | |||||||
|  |  | ||||||
| #pragma once | #pragma once | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Implementation of hsl_to_rgb as constexpr functions based on: | ||||||
|  |  * | ||||||
|  |  *   https://www.rapidtables.com/convert/color/hsl-to-rgb.html | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | constexpr float _hsl_fmod(float x, float y) { | ||||||
|  |   return x - int(x/y)*y; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | constexpr float _hsl_c(int, float S, float L) { | ||||||
|  |   return (1.0f - fabs(2*L-1.0f)) * S; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | constexpr float _hsl_x(int H, float S, float L) { | ||||||
|  |   return _hsl_c(H,S,L) * (1.0f - fabs(_hsl_fmod(float(H)/60, 2) - 1)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | constexpr float _hsl_m(int H, float S, float L) { | ||||||
|  |   return L - _hsl_c(H,S,L)/2; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | constexpr float _hsl_rgb(int H, float S, float L, float r, float g, float b) { | ||||||
|  |   return ((uint32_t((r + _hsl_m(H,S,L))*255+0.5) << 16) | | ||||||
|  |           (uint32_t((g + _hsl_m(H,S,L))*255+0.5) <<  8) | | ||||||
|  |           (uint32_t((b + _hsl_m(H,S,L))*255+0.5) <<  0)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | constexpr uint32_t hsl_to_rgb(int H, float S, float L) { | ||||||
|  |   return (H <  60) ? _hsl_rgb(H,S,L,_hsl_c(H,S,L), _hsl_x(H,S,L), 0) : | ||||||
|  |          (H < 120) ? _hsl_rgb(H,S,L,_hsl_x(H,S,L), _hsl_c(H,S,L), 0) : | ||||||
|  |          (H < 180) ? _hsl_rgb(H,S,L,            0, _hsl_c(H,S,L), _hsl_x(H,S,L)) : | ||||||
|  |          (H < 240) ? _hsl_rgb(H,S,L,            0, _hsl_x(H,S,L), _hsl_c(H,S,L)) : | ||||||
|  |          (H < 300) ? _hsl_rgb(H,S,L,_hsl_x(H,S,L),             0, _hsl_c(H,S,L)) : | ||||||
|  |                      _hsl_rgb(H,S,L,_hsl_c(H,S,L),             0, _hsl_x(H,S,L)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Structure for RGB colors | ||||||
|  |  */ | ||||||
| struct rgb_t { | struct rgb_t { | ||||||
|     union { |     union { | ||||||
|       struct { |       struct { | ||||||
|   | |||||||
| @@ -123,6 +123,11 @@ namespace ExtUI { | |||||||
|     else |     else | ||||||
|       ConfirmUserRequestAlertBox::hide(); |       ConfirmUserRequestAlertBox::hide(); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   #if HAS_LEVELING && HAS_MESH | ||||||
|  |     void onMeshUpdate(const uint8_t, const uint8_t, const float) { | ||||||
|  |     } | ||||||
|  |   #endif | ||||||
| } | } | ||||||
|  |  | ||||||
| #endif // LULZBOT_TOUCH_UI | #endif // LULZBOT_TOUCH_UI | ||||||
|   | |||||||
| @@ -47,7 +47,8 @@ BaseNumericAdjustmentScreen::widgets_t::widgets_t(draw_mode_t what) : _what(what | |||||||
|     cmd.cmd(CLEAR_COLOR_RGB(bg_color)) |     cmd.cmd(CLEAR_COLOR_RGB(bg_color)) | ||||||
|        .cmd(CLEAR(true,true,true)) |        .cmd(CLEAR(true,true,true)) | ||||||
|        .colors(normal_btn) |        .colors(normal_btn) | ||||||
|        .cmd(COLOR_RGB(bg_text_enabled)); |        .cmd(COLOR_RGB(bg_text_enabled)) | ||||||
|  |        .tag(0); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   cmd.font(font_medium); |   cmd.font(font_medium); | ||||||
| @@ -126,6 +127,7 @@ void BaseNumericAdjustmentScreen::widgets_t::heading(progmem_str label) { | |||||||
|     CommandProcessor cmd; |     CommandProcessor cmd; | ||||||
|     _button_style(cmd, TEXT_LABEL); |     _button_style(cmd, TEXT_LABEL); | ||||||
|     cmd.font(font_medium) |     cmd.font(font_medium) | ||||||
|  |        .tag(0) | ||||||
|        .text( |        .text( | ||||||
|          #ifdef TOUCH_UI_PORTRAIT |          #ifdef TOUCH_UI_PORTRAIT | ||||||
|            BTN_POS(1, _line), BTN_SIZE(12,1), |            BTN_POS(1, _line), BTN_SIZE(12,1), | ||||||
| @@ -188,7 +190,8 @@ void BaseNumericAdjustmentScreen::widgets_t::increments() { | |||||||
|   cmd.font(LAYOUT_FONT); |   cmd.font(LAYOUT_FONT); | ||||||
|  |  | ||||||
|   if (_what & BACKGROUND) { |   if (_what & BACKGROUND) { | ||||||
|     cmd.text( |     _button_style(cmd, TEXT_LABEL); | ||||||
|  |     cmd.tag(0).text( | ||||||
|       #ifdef TOUCH_UI_PORTRAIT |       #ifdef TOUCH_UI_PORTRAIT | ||||||
|         BTN_POS(1, _line), BTN_SIZE(4,1), |         BTN_POS(1, _line), BTN_SIZE(4,1), | ||||||
|       #else |       #else | ||||||
|   | |||||||
| @@ -36,7 +36,8 @@ void MainMenu::onRedraw(draw_mode_t what) { | |||||||
|   if (what & BACKGROUND) { |   if (what & BACKGROUND) { | ||||||
|     CommandProcessor cmd; |     CommandProcessor cmd; | ||||||
|     cmd.cmd(CLEAR_COLOR_RGB(Theme::bg_color)) |     cmd.cmd(CLEAR_COLOR_RGB(Theme::bg_color)) | ||||||
|        .cmd(CLEAR(true,true,true)); |        .cmd(CLEAR(true,true,true)) | ||||||
|  |        .tag(0); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   if (what & FOREGROUND) { |   if (what & FOREGROUND) { | ||||||
|   | |||||||
| @@ -38,7 +38,8 @@ using namespace Theme; | |||||||
| void BioPrintingDialogBox::draw_status_message(draw_mode_t what, const char* message) { | void BioPrintingDialogBox::draw_status_message(draw_mode_t what, const char* message) { | ||||||
|   if (what & BACKGROUND) { |   if (what & BACKGROUND) { | ||||||
|     CommandProcessor cmd; |     CommandProcessor cmd; | ||||||
|     cmd.cmd(COLOR_RGB(bg_text_enabled)); |     cmd.cmd(COLOR_RGB(bg_text_enabled)) | ||||||
|  |        .tag(0); | ||||||
|     draw_text_box(cmd, BTN_POS(1,2), BTN_SIZE(2,2), message, OPT_CENTER, font_large); |     draw_text_box(cmd, BTN_POS(1,2), BTN_SIZE(2,2), message, OPT_CENTER, font_large); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -29,8 +29,6 @@ | |||||||
| #include "../ftdi_eve_lib/extras/poly_ui.h" | #include "../ftdi_eve_lib/extras/poly_ui.h" | ||||||
| #include "bio_printer_ui.h" | #include "bio_printer_ui.h" | ||||||
|  |  | ||||||
| #define E_TRAVEL_LIMIT 60 |  | ||||||
|  |  | ||||||
| #define GRID_COLS 2 | #define GRID_COLS 2 | ||||||
| #define GRID_ROWS 9 | #define GRID_ROWS 9 | ||||||
|  |  | ||||||
| @@ -94,11 +92,13 @@ void StatusScreen::draw_temperature(draw_mode_t what) { | |||||||
|     cmd.font(font_xlarge) |     cmd.font(font_xlarge) | ||||||
|        .cmd(COLOR_RGB(bg_text_enabled)); |        .cmd(COLOR_RGB(bg_text_enabled)); | ||||||
|  |  | ||||||
|     if (!isHeaterIdle(BED) && getTargetTemp_celsius(BED) > 0) { |     if (!isHeaterIdle(BED) && getTargetTemp_celsius(BED) > 0) | ||||||
|       format_temp(bed_str, getTargetTemp_celsius(BED)); |       format_temp(bed_str, getTargetTemp_celsius(BED)); | ||||||
|  |     else | ||||||
|  |       strcpy_P(bed_str, PSTR(MSG_BED)); | ||||||
|  |  | ||||||
|     ui.bounds(POLY(target_temp), x, y, h, v); |     ui.bounds(POLY(target_temp), x, y, h, v); | ||||||
|     cmd.text(x, y, h, v, bed_str); |     cmd.text(x, y, h, v, bed_str); | ||||||
|     } |  | ||||||
|  |  | ||||||
|     format_temp(bed_str, getActualTemp_celsius(BED)); |     format_temp(bed_str, getActualTemp_celsius(BED)); | ||||||
|     ui.bounds(POLY(actual_temp), x, y, h, v); |     ui.bounds(POLY(actual_temp), x, y, h, v); | ||||||
| @@ -108,7 +108,11 @@ void StatusScreen::draw_temperature(draw_mode_t what) { | |||||||
|  |  | ||||||
| void StatusScreen::draw_syringe(draw_mode_t what) { | void StatusScreen::draw_syringe(draw_mode_t what) { | ||||||
|   int16_t x, y, h, v; |   int16_t x, y, h, v; | ||||||
|   const float fill_level = 1.0 - min(1.0, max(0.0, getAxisPosition_mm(E0) / E_TRAVEL_LIMIT)); |   #ifdef LULZBOT_E_TRAVEL_LIMIT | ||||||
|  |     const float fill_level = 1.0 - min(1.0, max(0.0, getAxisPosition_mm(E0) / LULZBOT_E_TRAVEL_LIMIT)); | ||||||
|  |   #else | ||||||
|  |     const float fill_level = 0.75; | ||||||
|  |   #endif | ||||||
|   const bool  e_homed = isAxisPositionKnown(E0); |   const bool  e_homed = isAxisPositionKnown(E0); | ||||||
|  |  | ||||||
|   CommandProcessor cmd; |   CommandProcessor cmd; | ||||||
| @@ -239,8 +243,9 @@ void StatusScreen::loadBitmaps() { | |||||||
| void StatusScreen::onRedraw(draw_mode_t what) { | void StatusScreen::onRedraw(draw_mode_t what) { | ||||||
|   if (what & BACKGROUND) { |   if (what & BACKGROUND) { | ||||||
|     CommandProcessor cmd; |     CommandProcessor cmd; | ||||||
|     cmd.cmd(CLEAR_COLOR_RGB(bg_color)); |     cmd.cmd(CLEAR_COLOR_RGB(bg_color)) | ||||||
|     cmd.cmd(CLEAR(true,true,true)); |        .cmd(CLEAR(true,true,true)) | ||||||
|  |        .tag(0); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   draw_syringe(what); |   draw_syringe(what); | ||||||
|   | |||||||
| @@ -31,21 +31,22 @@ using namespace Theme; | |||||||
| using namespace ExtUI; | using namespace ExtUI; | ||||||
|  |  | ||||||
| void TuneMenu::onRedraw(draw_mode_t what) { | void TuneMenu::onRedraw(draw_mode_t what) { | ||||||
|  |   #define GRID_ROWS 8 | ||||||
|  |   #define GRID_COLS 2 | ||||||
|  |  | ||||||
|   if (what & BACKGROUND) { |   if (what & BACKGROUND) { | ||||||
|     CommandProcessor cmd; |     CommandProcessor cmd; | ||||||
|     cmd.cmd(CLEAR_COLOR_RGB(bg_color)) |     cmd.cmd(CLEAR_COLOR_RGB(bg_color)) | ||||||
|        .cmd(CLEAR(true,true,true)) |        .cmd(CLEAR(true,true,true)) | ||||||
|        .font(font_medium); |        .cmd(COLOR_RGB(bg_text_enabled)) | ||||||
|  |        .tag(0) | ||||||
|  |        .font(font_large) | ||||||
|  |        .text( BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXT_F(PRINT_MENU)); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   #define GRID_ROWS 8 |  | ||||||
|   #define GRID_COLS 2 |  | ||||||
|  |  | ||||||
|   if (what & FOREGROUND) { |   if (what & FOREGROUND) { | ||||||
|     CommandProcessor cmd; |     CommandProcessor cmd; | ||||||
|     cmd.cmd(COLOR_RGB(bg_text_enabled)) |     cmd.colors(normal_btn) | ||||||
|        .font(font_large).text  ( BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXT_F(PRINT_MENU)) |  | ||||||
|        .colors(normal_btn) |  | ||||||
|        .font(font_medium) |        .font(font_medium) | ||||||
|        .enabled( isPrinting()).tag(2).button( BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(PRINT_SPEED)) |        .enabled( isPrinting()).tag(2).button( BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(PRINT_SPEED)) | ||||||
|                               .tag(3).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(BED_TEMPERATURE)) |                               .tag(3).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(BED_TEMPERATURE)) | ||||||
|   | |||||||
| @@ -36,6 +36,7 @@ | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
| using namespace FTDI; | using namespace FTDI; | ||||||
|  | using namespace Theme; | ||||||
|  |  | ||||||
| void BootScreen::onRedraw(draw_mode_t) { | void BootScreen::onRedraw(draw_mode_t) { | ||||||
|   CommandProcessor cmd; |   CommandProcessor cmd; | ||||||
| @@ -96,16 +97,16 @@ void BootScreen::onIdle() { | |||||||
| void BootScreen::showSplashScreen() { | void BootScreen::showSplashScreen() { | ||||||
|   CommandProcessor cmd; |   CommandProcessor cmd; | ||||||
|   cmd.cmd(CMD_DLSTART); |   cmd.cmd(CMD_DLSTART); | ||||||
|   cmd.cmd(CLEAR_COLOR_RGB(0xDEEA5C)); |   cmd.cmd(CLEAR_COLOR_RGB(logo_bg)); | ||||||
|   cmd.cmd(CLEAR(true,true,true)); |   cmd.cmd(CLEAR(true,true,true)); | ||||||
|  |  | ||||||
|   #define POLY(A) PolyUI::poly_reader_t(A, sizeof(A)/sizeof(A[0])) |   #define POLY(A) PolyUI::poly_reader_t(A, sizeof(A)/sizeof(A[0])) | ||||||
|  |  | ||||||
|   PolyUI ui(cmd); |   PolyUI ui(cmd); | ||||||
|  |  | ||||||
|   cmd.cmd(COLOR_RGB(0xC1D82F)); |   cmd.cmd(COLOR_RGB(logo_fg)); | ||||||
|   ui.fill(POLY(logo_green)); |   ui.fill(POLY(logo_green)); | ||||||
|   cmd.cmd(COLOR_RGB(0x000000)); |   cmd.cmd(COLOR_RGB(logo_stroke)); | ||||||
|   ui.fill(POLY(logo_black)); |   ui.fill(POLY(logo_black)); | ||||||
|   ui.fill(POLY(logo_type)); |   ui.fill(POLY(logo_type)); | ||||||
|   ui.fill(POLY(logo_mark)); |   ui.fill(POLY(logo_mark)); | ||||||
|   | |||||||
| @@ -34,7 +34,8 @@ void FilamentMenu::onRedraw(draw_mode_t what) { | |||||||
|   if (what & BACKGROUND) { |   if (what & BACKGROUND) { | ||||||
|     CommandProcessor cmd; |     CommandProcessor cmd; | ||||||
|     cmd.cmd(CLEAR_COLOR_RGB(Theme::bg_color)) |     cmd.cmd(CLEAR_COLOR_RGB(Theme::bg_color)) | ||||||
|        .cmd(CLEAR(true,true,true)); |        .cmd(CLEAR(true,true,true)) | ||||||
|  |        .tag(0); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   if (what & FOREGROUND) { |   if (what & FOREGROUND) { | ||||||
|   | |||||||
| @@ -35,7 +35,7 @@ void JunctionDeviationScreen::onRedraw(draw_mode_t what) { | |||||||
|   w.precision(2); |   w.precision(2); | ||||||
|   w.units(GET_TEXT_F(UNITS_MM)); |   w.units(GET_TEXT_F(UNITS_MM)); | ||||||
|   w.heading(GET_TEXT_F(JUNC_DEVIATION)); |   w.heading(GET_TEXT_F(JUNC_DEVIATION)); | ||||||
|   w.color(other) .adjuster( 2, PSTR(""), getJunctionDeviation_mm() ); |   w.color(other) .adjuster( 2, F(""), getJunctionDeviation_mm() ); | ||||||
|   w.increments(); |   w.increments(); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -45,6 +45,7 @@ void LockScreen::onRedraw(draw_mode_t what) { | |||||||
|   if (what & BACKGROUND) { |   if (what & BACKGROUND) { | ||||||
|     cmd.cmd(CLEAR_COLOR_RGB(bg_color)) |     cmd.cmd(CLEAR_COLOR_RGB(bg_color)) | ||||||
|        .cmd(CLEAR(true,true,true)) |        .cmd(CLEAR(true,true,true)) | ||||||
|  |        .cmd(COLOR_RGB(bg_text_enabled)) | ||||||
|        .tag(0); |        .tag(0); | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -88,7 +89,6 @@ void LockScreen::onRedraw(draw_mode_t what) { | |||||||
|     const uint8_t pressed = EventLoop::get_pressed_tag(); |     const uint8_t pressed = EventLoop::get_pressed_tag(); | ||||||
|  |  | ||||||
|     cmd.font(font_large) |     cmd.font(font_large) | ||||||
|        .cmd(COLOR_RGB(bg_text_enabled)) |  | ||||||
|     #ifdef TOUCH_UI_PORTRAIT |     #ifdef TOUCH_UI_PORTRAIT | ||||||
|        .text(BTN_POS(1,2), BTN_SIZE(1,1), message) |        .text(BTN_POS(1,2), BTN_SIZE(1,1), message) | ||||||
|        .font(font_xlarge) |        .font(font_xlarge) | ||||||
|   | |||||||
| @@ -33,8 +33,7 @@ void TuneMenu::onRedraw(draw_mode_t what) { | |||||||
|   if (what & BACKGROUND) { |   if (what & BACKGROUND) { | ||||||
|     CommandProcessor cmd; |     CommandProcessor cmd; | ||||||
|     cmd.cmd(CLEAR_COLOR_RGB(bg_color)) |     cmd.cmd(CLEAR_COLOR_RGB(bg_color)) | ||||||
|        .cmd(CLEAR(true,true,true)) |        .cmd(CLEAR(true,true,true)); | ||||||
|        .font(font_medium); |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   #ifdef TOUCH_UI_PORTRAIT |   #ifdef TOUCH_UI_PORTRAIT | ||||||
|   | |||||||
| @@ -23,25 +23,52 @@ | |||||||
| #pragma once | #pragma once | ||||||
|  |  | ||||||
| namespace Theme { | namespace Theme { | ||||||
|  |   #ifdef LULZBOT_USE_BIOPRINTER_UI | ||||||
|  |     // The Lulzbot Bio uses the color PANTONE 2175C on the case silkscreen. | ||||||
|  |     // This translates to HSL(208°, 100%, 39%) as an accent color on the GUI. | ||||||
|  |  | ||||||
|   #define COLOR_CORRECTION(rgb)  ( \ |     constexpr int   accent_hue          = 208; | ||||||
|     (uint32_t((((rgb) & 0xFF0000) >> 16) * 1.00) << 16) | \ |     constexpr float accent_sat          = 0.5; | ||||||
|     (uint32_t((((rgb) & 0x00FF00) >>  8) * 1.00) <<  8) | \ |  | ||||||
|     (uint32_t((((rgb) & 0x0000FF) >>  0) *  .75) <<  0)) |  | ||||||
|  |  | ||||||
|   #define COLOR_BLEND(a,b,f) COLOR_CORRECTION( \ |     constexpr uint32_t logo_bg          = 0xffffff; | ||||||
|     (uint32_t((((a) & 0xFF0000) >> 16) *    f + (((b) & 0xFF0000) >> 16) * (1-f))  << 16) | \ |     constexpr uint32_t logo_fg          = 0xffffff; | ||||||
|     (uint32_t((((a) & 0x00FF00) >>  8) *    f + (((b) & 0x00FF00) >>  8) * (1-f))  <<  8) | \ |     constexpr uint32_t logo_stroke      = hsl_to_rgb(accent_hue, 1.0, 0.39); | ||||||
|     (uint32_t((((a) & 0x0000FF) >>  0) *    f + (((b) & 0x0000FF) >>  0) * (1-f))  <<  0)) |   #else | ||||||
|  |     // The Lulzbot logo uses the color PANTONE 382c. | ||||||
|  |     // This translates to HSL(68°, 68%, 52%) as an accent color on the GUI. | ||||||
|  |  | ||||||
|   constexpr uint32_t lulzbot_bg          = 0xDEEA5C; |     constexpr int   accent_hue          = 68; | ||||||
|   constexpr uint32_t lulzbot_fg          = 0xC1D82F; |     constexpr float accent_sat          = 0.68; | ||||||
|  |  | ||||||
|   constexpr uint32_t lulzbot_green       = COLOR_BLEND(0xC1DB2F,0x788814,0.33); |     constexpr uint32_t logo_bg          = hsl_to_rgb(accent_hue, 0.77, 0.64); | ||||||
|  |     constexpr uint32_t logo_fg          = hsl_to_rgb(accent_hue, 0.68, 0.52); // Lulzbot Green | ||||||
|  |     constexpr uint32_t logo_stroke      = 0x000000; | ||||||
|  |   #endif | ||||||
|  |  | ||||||
|  |   // Shades of accent color | ||||||
|  |  | ||||||
|  |   constexpr uint32_t accent_color_1     = hsl_to_rgb(accent_hue, accent_sat, 0.26); // Darkest | ||||||
|  |   constexpr uint32_t accent_color_2     = hsl_to_rgb(accent_hue, accent_sat, 0.39); | ||||||
|  |   constexpr uint32_t accent_color_3     = hsl_to_rgb(accent_hue, accent_sat, 0.52); | ||||||
|  |   constexpr uint32_t accent_color_4     = hsl_to_rgb(accent_hue, accent_sat, 0.65); | ||||||
|  |   constexpr uint32_t accent_color_5     = hsl_to_rgb(accent_hue, accent_sat, 0.78); | ||||||
|  |   constexpr uint32_t accent_color_6     = hsl_to_rgb(accent_hue, accent_sat, 0.91); // Lightest | ||||||
|  |  | ||||||
|  |   // Shades of gray | ||||||
|  |  | ||||||
|  |   constexpr float gray_sat = 0.14; | ||||||
|  |  | ||||||
|  |   constexpr uint32_t gray_color_1       = hsl_to_rgb(accent_hue, gray_sat, 0.26); // Darkest | ||||||
|  |   constexpr uint32_t gray_color_2       = hsl_to_rgb(accent_hue, gray_sat, 0.39); | ||||||
|  |   constexpr uint32_t gray_color_3       = hsl_to_rgb(accent_hue, gray_sat, 0.52); | ||||||
|  |   constexpr uint32_t gray_color_4       = hsl_to_rgb(accent_hue, gray_sat, 0.65); | ||||||
|  |   constexpr uint32_t gray_color_5       = hsl_to_rgb(accent_hue, gray_sat, 0.78); | ||||||
|  |   constexpr uint32_t gray_color_6       = hsl_to_rgb(accent_hue, gray_sat, 0.91); // Lightest | ||||||
|  |  | ||||||
|   #ifndef LULZBOT_USE_BIOPRINTER_UI |   #ifndef LULZBOT_USE_BIOPRINTER_UI | ||||||
|     constexpr uint32_t theme_darkest    = COLOR_CORRECTION(0x444444); |     // Lulzbot TAZ Pro | ||||||
|     constexpr uint32_t theme_dark       = COLOR_CORRECTION(0x777777); |     constexpr uint32_t theme_darkest    = gray_color_1; | ||||||
|  |     constexpr uint32_t theme_dark       = gray_color_2; | ||||||
|  |  | ||||||
|     constexpr uint32_t bg_color         = theme_darkest; |     constexpr uint32_t bg_color         = theme_darkest; | ||||||
|     constexpr uint32_t bg_text_disabled = theme_dark; |     constexpr uint32_t bg_text_disabled = theme_dark; | ||||||
| @@ -49,48 +76,43 @@ namespace Theme { | |||||||
|     constexpr uint32_t bg_normal        = theme_darkest; |     constexpr uint32_t bg_normal        = theme_darkest; | ||||||
|  |  | ||||||
|     constexpr uint32_t fg_normal        = theme_dark; |     constexpr uint32_t fg_normal        = theme_dark; | ||||||
|     constexpr uint32_t fg_action        = lulzbot_green; |     constexpr uint32_t fg_action        = accent_color_2; | ||||||
|     constexpr uint32_t fg_disabled      = bg_color; |     constexpr uint32_t fg_disabled      = theme_darkest; | ||||||
|   #else |   #else | ||||||
|     constexpr uint32_t theme_darkest    = 0x545923; |     // Lulzbot Bio | ||||||
|     constexpr uint32_t theme_dark       = lulzbot_bg; |     constexpr uint32_t theme_darkest    = accent_color_1; | ||||||
|  |     constexpr uint32_t theme_dark       = accent_color_4; | ||||||
|  |  | ||||||
|     constexpr uint32_t bg_color         = 0xFFFFFF; |     constexpr uint32_t bg_color         = 0xFFFFFF; | ||||||
|     constexpr uint32_t bg_text_disabled = 0x333333; |     constexpr uint32_t bg_text_disabled = gray_color_1; | ||||||
|     constexpr uint32_t bg_text_enabled  = theme_darkest; |     constexpr uint32_t bg_text_enabled  = accent_color_1; | ||||||
|     constexpr uint32_t bg_normal        = theme_dark; |     constexpr uint32_t bg_normal        = accent_color_4; | ||||||
|  |  | ||||||
|     constexpr uint32_t fg_normal        = theme_darkest; |     constexpr uint32_t fg_normal        = accent_color_1; | ||||||
|     constexpr uint32_t fg_action        = theme_dark; |     constexpr uint32_t fg_action        = accent_color_4; | ||||||
|     constexpr uint32_t fg_disabled      = 0xEFEFEF; |     constexpr uint32_t fg_disabled      = gray_color_6; | ||||||
|  |  | ||||||
|     constexpr uint32_t shadow_rgb       = 0xE0E0E0; |     constexpr uint32_t shadow_rgb       = gray_color_6; | ||||||
|     constexpr uint32_t fill_rgb         = lulzbot_fg; |     constexpr uint32_t stroke_rgb       = accent_color_1; | ||||||
|     constexpr uint32_t stroke_rgb       = theme_darkest; |     constexpr uint32_t fill_rgb         = accent_color_3; | ||||||
|     constexpr uint32_t syringe_rgb      = 0xF1F6C0; |     constexpr uint32_t syringe_rgb      = accent_color_5; | ||||||
|   #endif |   #endif | ||||||
|  |  | ||||||
|   constexpr uint32_t x_axis        = COLOR_CORRECTION(0xFF0000); |   constexpr uint32_t x_axis             = 0xFF0000; | ||||||
|   constexpr uint32_t y_axis        = COLOR_CORRECTION(0x00BB00); |   constexpr uint32_t y_axis             = 0x00BB00; | ||||||
|   constexpr uint32_t z_axis        = COLOR_CORRECTION(0x0000FF); |   constexpr uint32_t z_axis             = 0x0000BF; | ||||||
|   #ifndef LULZBOT_USE_BIOPRINTER_UI |   constexpr uint32_t e_axis             = gray_color_2; | ||||||
|   constexpr uint32_t e_axis        = COLOR_CORRECTION(0x777777); |   constexpr uint32_t feedrate           = gray_color_2; | ||||||
|   constexpr uint32_t feedrate      = COLOR_CORRECTION(0x777777); |   constexpr uint32_t other              = gray_color_2; | ||||||
|   constexpr uint32_t other         = COLOR_CORRECTION(0x777777); |  | ||||||
|   #else |  | ||||||
|   constexpr uint32_t e_axis        = 0x000000; |  | ||||||
|   constexpr uint32_t feedrate      = 0x000000; |  | ||||||
|   constexpr uint32_t other         = 0x000000; |  | ||||||
|   #endif |  | ||||||
|  |  | ||||||
|   // Status screen |   // Status screen | ||||||
|   constexpr uint32_t progress      = theme_dark; |   constexpr uint32_t progress           = gray_color_2; | ||||||
|   constexpr uint32_t status_msg    = theme_dark; |   constexpr uint32_t status_msg         = gray_color_2; | ||||||
|   constexpr uint32_t fan_speed     = COLOR_CORRECTION(0x3771CB); |   constexpr uint32_t fan_speed          = 0x377198; | ||||||
|   constexpr uint32_t temp          = COLOR_CORRECTION(0x892ca0); |   constexpr uint32_t temp               = 0x892c78; | ||||||
|   constexpr uint32_t axis_label    = theme_dark; |   constexpr uint32_t axis_label         = gray_color_2; | ||||||
|  |  | ||||||
|   constexpr uint32_t disabled_icon = 0x101010; |   constexpr uint32_t disabled_icon      = gray_color_1; | ||||||
|  |  | ||||||
|   // Calibration Registers Screen |   // Calibration Registers Screen | ||||||
|   constexpr uint32_t transformA         = 0x3010D0; |   constexpr uint32_t transformA         = 0x3010D0; | ||||||
| @@ -105,7 +127,7 @@ namespace Theme { | |||||||
|   constexpr btn_colors normal_btn       = {.bg = fg_action,     .grad = 0xFFFFFF,    .fg = fg_normal,    .rgb = 0xFFFFFF }; |   constexpr btn_colors normal_btn       = {.bg = fg_action,     .grad = 0xFFFFFF,    .fg = fg_normal,    .rgb = 0xFFFFFF }; | ||||||
|   constexpr btn_colors action_btn       = {.bg = bg_color,      .grad = 0xFFFFFF,    .fg = fg_action,    .rgb = 0xFFFFFF }; |   constexpr btn_colors action_btn       = {.bg = bg_color,      .grad = 0xFFFFFF,    .fg = fg_action,    .rgb = 0xFFFFFF }; | ||||||
|   constexpr btn_colors red_btn          = {.bg = 0xFF5555,      .grad = 0xFFFFFF,    .fg = 0xFF0000,     .rgb = 0xFFFFFF }; |   constexpr btn_colors red_btn          = {.bg = 0xFF5555,      .grad = 0xFFFFFF,    .fg = 0xFF0000,     .rgb = 0xFFFFFF }; | ||||||
|   constexpr btn_colors ui_slider    = {.bg = theme_darkest, .grad = 0xFFFFFF,    .fg = theme_dark,   .rgb = lulzbot_green }; |   constexpr btn_colors ui_slider        = {.bg = theme_darkest, .grad = 0xFFFFFF,    .fg = theme_dark,   .rgb = accent_color_3 }; | ||||||
|   constexpr btn_colors ui_toggle        = {.bg = theme_darkest, .grad = 0xFFFFFF,    .fg = theme_dark,   .rgb = 0xFFFFFF }; |   constexpr btn_colors ui_toggle        = {.bg = theme_darkest, .grad = 0xFFFFFF,    .fg = theme_dark,   .rgb = 0xFFFFFF }; | ||||||
|  |  | ||||||
|   // Temperature color scale |   // Temperature color scale | ||||||
|   | |||||||
| @@ -28,6 +28,7 @@ | |||||||
|  |  | ||||||
| // All displays share the MarlinUI class | // All displays share the MarlinUI class | ||||||
| #if HAS_DISPLAY | #if HAS_DISPLAY | ||||||
|  |   #include "../gcode/queue.h" | ||||||
|   #include "ultralcd.h" |   #include "ultralcd.h" | ||||||
|   #include "fontutils.h" |   #include "fontutils.h" | ||||||
|   MarlinUI ui; |   MarlinUI ui; | ||||||
| @@ -93,7 +94,6 @@ | |||||||
| #include "../module/planner.h" | #include "../module/planner.h" | ||||||
| #include "../module/printcounter.h" | #include "../module/printcounter.h" | ||||||
| #include "../module/motion.h" | #include "../module/motion.h" | ||||||
| #include "../gcode/queue.h" |  | ||||||
|  |  | ||||||
| #include "../Marlin.h" | #include "../Marlin.h" | ||||||
|  |  | ||||||
|   | |||||||
| @@ -476,12 +476,16 @@ class Temperature { | |||||||
|  |  | ||||||
|       #if ENABLED(ADAPTIVE_FAN_SLOWING) |       #if ENABLED(ADAPTIVE_FAN_SLOWING) | ||||||
|         static uint8_t fan_speed_scaler[FAN_COUNT]; |         static uint8_t fan_speed_scaler[FAN_COUNT]; | ||||||
|       #else |  | ||||||
|         static constexpr uint8_t fan_speed_scaler[FAN_COUNT] = ARRAY_N(FAN_COUNT, 128, 128, 128, 128, 128, 128); |  | ||||||
|       #endif |       #endif | ||||||
|  |  | ||||||
|       static inline uint8_t scaledFanSpeed(const uint8_t target, const uint8_t fs) { |       static inline uint8_t scaledFanSpeed(const uint8_t target, const uint8_t fs) { | ||||||
|         return (fs * uint16_t(fan_speed_scaler[target])) >> 7; |         return (fs * uint16_t( | ||||||
|  |           #if ENABLED(ADAPTIVE_FAN_SLOWING) | ||||||
|  |             fan_speed_scaler[target] | ||||||
|  |           #else | ||||||
|  |             128 | ||||||
|  |           #endif | ||||||
|  |         )) >> 7; | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       static inline uint8_t scaledFanSpeed(const uint8_t target) { |       static inline uint8_t scaledFanSpeed(const uint8_t target) { | ||||||
|   | |||||||
| @@ -357,10 +357,6 @@ void CardReader::mount() { | |||||||
|   flag.mounted = false; |   flag.mounted = false; | ||||||
|   if (root.isOpen()) root.close(); |   if (root.isOpen()) root.close(); | ||||||
|  |  | ||||||
|   #ifndef SPI_SPEED |  | ||||||
|     #define SPI_SPEED SPI_FULL_SPEED |  | ||||||
|   #endif |  | ||||||
|  |  | ||||||
|   if (!sd2card.init(SPI_SPEED, SDSS) |   if (!sd2card.init(SPI_SPEED, SDSS) | ||||||
|     #if defined(LCD_SDSS) && (LCD_SDSS != SDSS) |     #if defined(LCD_SDSS) && (LCD_SDSS != SDSS) | ||||||
|       && !sd2card.init(SPI_SPEED, LCD_SDSS) |       && !sd2card.init(SPI_SPEED, LCD_SDSS) | ||||||
|   | |||||||
| @@ -38,14 +38,15 @@ exec_test $1 $2 "RAMPS4DUE_EFB with ABL (Bilinear), EXTENSIBLE_UI, S-Curve, many | |||||||
| restore_configs | restore_configs | ||||||
| opt_set MOTHERBOARD BOARD_RADDS | opt_set MOTHERBOARD BOARD_RADDS | ||||||
| opt_enable USE_XMAX_PLUG USE_YMAX_PLUG BLTOUCH AUTO_BED_LEVELING_BILINEAR \ | opt_enable USE_XMAX_PLUG USE_YMAX_PLUG BLTOUCH AUTO_BED_LEVELING_BILINEAR \ | ||||||
|            Z_TRIPLE_STEPPER_DRIVERS Z_TRIPLE_ENDSTOPS Z_STEPPER_AUTO_ALIGN ENDSTOPPULLUPS |            Z_TRIPLE_STEPPER_DRIVERS Z_TRIPLE_ENDSTOPS Z_STEPPER_AUTO_ALIGN ENDSTOPPULLUPS \ | ||||||
|  |            LULZBOT_TOUCH_UI LCD_ALEPHOBJECTS_CLCD_UI OTHER_PIN_LAYOUT | ||||||
| opt_add Z2_MAX_ENDSTOP_INVERTING false | opt_add Z2_MAX_ENDSTOP_INVERTING false | ||||||
| opt_add Z3_MAX_ENDSTOP_INVERTING false | opt_add Z3_MAX_ENDSTOP_INVERTING false | ||||||
| pins_set ramps/RAMPS X_MAX_PIN -1 | pins_set ramps/RAMPS X_MAX_PIN -1 | ||||||
| pins_set ramps/RAMPS Y_MAX_PIN -1 | pins_set ramps/RAMPS Y_MAX_PIN -1 | ||||||
| opt_add Z2_MAX_PIN 2 | opt_add Z2_MAX_PIN 2 | ||||||
| opt_add Z3_MAX_PIN 3 | opt_add Z3_MAX_PIN 3 | ||||||
| exec_test $1 $2 "RADDS with ABL (Bilinear), Z_TRIPLE_STEPPER_DRIVERS and Z_STEPPER_AUTO_ALIGN" | exec_test $1 $2 "RADDS with Lulzbot Touch UI, Bilinear ABL, Triple-Z and Z Auto-align." | ||||||
|  |  | ||||||
| # | # | ||||||
| # Test SWITCHING_EXTRUDER | # Test SWITCHING_EXTRUDER | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user