LCD position in current units (#20145)
This commit is contained in:
committed by
Scott Lahteine
parent
82663c7d11
commit
a711e22b17
@ -38,10 +38,11 @@
|
||||
#include "../../module/motion.h"
|
||||
#include "../../module/temperature.h"
|
||||
|
||||
#include "../../gcode/parser.h" // for units (and volumetric)
|
||||
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY)
|
||||
#include "../../feature/filwidth.h"
|
||||
#include "../../module/planner.h"
|
||||
#include "../../gcode/parser.h"
|
||||
#endif
|
||||
|
||||
#if HAS_CUTTER
|
||||
@ -67,6 +68,11 @@
|
||||
#define X_LABEL_POS 3
|
||||
#define X_VALUE_POS 11
|
||||
#define XYZ_SPACING 37
|
||||
|
||||
#define X_LABEL_POS_IN (X_LABEL_POS - 2)
|
||||
#define X_VALUE_POS_IN (X_VALUE_POS - 5)
|
||||
#define XYZ_SPACING_IN (XYZ_SPACING + 9)
|
||||
|
||||
#define XYZ_BASELINE (30 + INFO_FONT_ASCENT)
|
||||
#define EXTRAS_BASELINE (40 + INFO_FONT_ASCENT)
|
||||
#define STATUS_BASELINE (LCD_PIXEL_HEIGHT - INFO_FONT_DESCENT)
|
||||
@ -370,10 +376,12 @@ FORCE_INLINE void _draw_centered_temp(const int16_t temp, const uint8_t tx, cons
|
||||
// Homed and known, display constantly.
|
||||
//
|
||||
FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink) {
|
||||
const bool is_inch = parser.using_inch_units();
|
||||
const AxisEnum a = TERN(LCD_SHOW_E_TOTAL, axis == E_AXIS ? X_AXIS : axis, axis);
|
||||
const uint8_t offs = (XYZ_SPACING) * a;
|
||||
lcd_put_wchar(X_LABEL_POS + offs, XYZ_BASELINE, axis_codes[axis]);
|
||||
lcd_moveto(X_VALUE_POS + offs, XYZ_BASELINE);
|
||||
const uint8_t offs = a * (is_inch ? XYZ_SPACING_IN : XYZ_SPACING);
|
||||
lcd_put_wchar((is_inch ? X_LABEL_POS_IN : X_LABEL_POS) + offs, XYZ_BASELINE, axis_codes[axis]);
|
||||
lcd_moveto((is_inch ? X_VALUE_POS_IN : X_VALUE_POS) + offs, XYZ_BASELINE);
|
||||
|
||||
if (blink)
|
||||
lcd_put_u8str(value);
|
||||
else {
|
||||
@ -390,9 +398,16 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw the Status Screen for a 128x64 DOGM (U8glib) display.
|
||||
*
|
||||
* Called as needed to update the current display stripe.
|
||||
* Use the PAGE_CONTAINS macros to avoid pointless draw calls.
|
||||
*/
|
||||
void MarlinUI::draw_status_screen() {
|
||||
constexpr int xystorage = TERN(INCH_MODE_SUPPORT, 8, 5);
|
||||
static char xstring[TERN(LCD_SHOW_E_TOTAL, 12, xystorage)], ystring[xystorage], zstring[8];
|
||||
|
||||
static char xstring[TERN(LCD_SHOW_E_TOTAL, 12, 5)], ystring[5], zstring[8];
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY)
|
||||
static char wstring[5], mstring[4];
|
||||
#endif
|
||||
@ -439,7 +454,8 @@ void MarlinUI::draw_status_screen() {
|
||||
#endif
|
||||
|
||||
const xyz_pos_t lpos = current_position.asLogical();
|
||||
strcpy(zstring, ftostr52sp(lpos.z));
|
||||
const bool is_inch = parser.using_inch_units();
|
||||
strcpy(zstring, is_inch ? ftostr42_52(LINEAR_UNIT(lpos.z)) : ftostr52sp(lpos.z));
|
||||
|
||||
if (show_e_total) {
|
||||
#if ENABLED(LCD_SHOW_E_TOTAL)
|
||||
@ -448,8 +464,8 @@ void MarlinUI::draw_status_screen() {
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
strcpy(xstring, ftostr4sign(lpos.x));
|
||||
strcpy(ystring, ftostr4sign(lpos.y));
|
||||
strcpy(xstring, is_inch ? ftostr53_63(LINEAR_UNIT(lpos.x)) : ftostr4sign(lpos.x));
|
||||
strcpy(ystring, is_inch ? ftostr53_63(LINEAR_UNIT(lpos.y)) : ftostr4sign(lpos.y));
|
||||
}
|
||||
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY)
|
||||
@ -854,6 +870,9 @@ void MarlinUI::draw_status_screen() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw the Status Message area
|
||||
*/
|
||||
void MarlinUI::draw_status_message(const bool blink) {
|
||||
|
||||
// Get the UTF8 character count of the string
|
||||
|
Reference in New Issue
Block a user