Improvements and fixes to Lulzbot UI (#15490)

This commit is contained in:
Marcio Teixeira 2019-10-09 18:44:49 -06:00 committed by Scott Lahteine
parent e6055dce76
commit dc14d4a13c
20 changed files with 191 additions and 105 deletions

View file

@ -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

View file

@ -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
) { ) {

View file

@ -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;
const bool is_utf8 = has_utf8_chars(text); #ifdef TOUCH_UI_USE_UTF8
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

View file

@ -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 {

View file

@ -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

View file

@ -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

View file

@ -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) {

View file

@ -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);
} }
} }

View file

@ -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));
ui.bounds(POLY(target_temp), x, y, h, v); else
cmd.text(x, y, h, v, bed_str); strcpy_P(bed_str, PSTR(MSG_BED));
}
ui.bounds(POLY(target_temp), x, y, h, v);
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);

View file

@ -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))

View file

@ -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));

View file

@ -34,12 +34,13 @@ 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) {
CommandProcessor cmd; CommandProcessor cmd;
cmd.font(font_large) cmd.font(font_large)
#ifdef TOUCH_UI_PORTRAIT #ifdef TOUCH_UI_PORTRAIT
#define GRID_ROWS 9 #define GRID_ROWS 9
#define GRID_COLS 2 #define GRID_COLS 2

View file

@ -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();
} }

View file

@ -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,29 +89,28 @@ 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)
.text(BTN_POS(1,4), BTN_SIZE(1,1), screen_data.LockScreen.passcode) .text(BTN_POS(1,4), BTN_SIZE(1,1), screen_data.LockScreen.passcode)
#else #else
.text(BTN_POS(1,1), BTN_SIZE(1,1), message) .text(BTN_POS(1,1), BTN_SIZE(1,1), message)
.font(font_xlarge) .font(font_xlarge)
.text(BTN_POS(1,2), BTN_SIZE(1,1), screen_data.LockScreen.passcode) .text(BTN_POS(1,2), BTN_SIZE(1,1), screen_data.LockScreen.passcode)
#endif #endif
.font(font_large) .font(font_large)
.colors(normal_btn) .colors(normal_btn)
#ifdef TOUCH_UI_PASSCODE #ifdef TOUCH_UI_PASSCODE
.keys(BTN_POS(1,l+1), BTN_SIZE(1,1), F("123"), pressed) .keys(BTN_POS(1,l+1), BTN_SIZE(1,1), F("123"), pressed)
.keys(BTN_POS(1,l+2), BTN_SIZE(1,1), F("456"), pressed) .keys(BTN_POS(1,l+2), BTN_SIZE(1,1), F("456"), pressed)
.keys(BTN_POS(1,l+3), BTN_SIZE(1,1), F("789"), pressed) .keys(BTN_POS(1,l+3), BTN_SIZE(1,1), F("789"), pressed)
.keys(BTN_POS(1,l+4), BTN_SIZE(1,1), F("0.<"), pressed); .keys(BTN_POS(1,l+4), BTN_SIZE(1,1), F("0.<"), pressed);
#else #else
.keys(BTN_POS(1,l+1), BTN_SIZE(1,1), F("1234567890"), pressed) .keys(BTN_POS(1,l+1), BTN_SIZE(1,1), F("1234567890"), pressed)
.keys(BTN_POS(1,l+2), BTN_SIZE(1,1), F("qwertyuiop"), pressed) .keys(BTN_POS(1,l+2), BTN_SIZE(1,1), F("qwertyuiop"), pressed)
.keys(BTN_POS(1,l+3), BTN_SIZE(1,1), F("asdfghjkl "), pressed) .keys(BTN_POS(1,l+3), BTN_SIZE(1,1), F("asdfghjkl "), pressed)
.keys(BTN_POS(1,l+4), BTN_SIZE(1,1), F("zxcvbnm!?<"), pressed); .keys(BTN_POS(1,l+4), BTN_SIZE(1,1), F("zxcvbnm!?<"), pressed);
#endif #endif
#undef MARGIN_T #undef MARGIN_T
#undef MARGIN_B #undef MARGIN_B

View file

@ -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

View file

@ -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,64 +76,59 @@ 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;
constexpr uint32_t transformB = 0x4010D0; constexpr uint32_t transformB = 0x4010D0;
constexpr uint32_t transformC = 0x5010D0; constexpr uint32_t transformC = 0x5010D0;
constexpr uint32_t transformD = 0x6010D0; constexpr uint32_t transformD = 0x6010D0;
constexpr uint32_t transformE = 0x7010D0; constexpr uint32_t transformE = 0x7010D0;
constexpr uint32_t transformF = 0x8010D0; constexpr uint32_t transformF = 0x8010D0;
constexpr uint32_t transformVal = 0x104010; constexpr uint32_t transformVal = 0x104010;
constexpr btn_colors disabled_btn = {.bg = bg_color, .grad = fg_disabled, .fg = fg_disabled, .rgb = fg_disabled }; constexpr btn_colors disabled_btn = {.bg = bg_color, .grad = fg_disabled, .fg = fg_disabled, .rgb = fg_disabled };
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

View file

@ -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"

View file

@ -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) {

View file

@ -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)

View file

@ -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