Save 236B by improving functions in menu.cpp. Beware - the label now has
to come with a ':' as its last character. Changed language files along with this commit too.
This commit is contained in:
parent
8bc4952f10
commit
a453c6fc9d
@ -306,9 +306,9 @@ const char menu_20x_space[] PROGMEM = " ";
|
||||
|
||||
const char menu_fmt_int3[] PROGMEM = "%c%.15S:%s%3d";
|
||||
|
||||
const char menu_fmt_float31[] PROGMEM = "%-12.12s%+8.1f";
|
||||
const char menu_fmt_float31[] PROGMEM = "%-12.12S%+8.1f";
|
||||
|
||||
const char menu_fmt_float13[] PROGMEM = "%c%.12S:%s%+06.3f";
|
||||
const char menu_fmt_float13[] PROGMEM = "%-15.15S%+5.3f";
|
||||
|
||||
const char menu_fmt_float13off[] PROGMEM = "%c%.12S:%s%";
|
||||
|
||||
@ -348,39 +348,36 @@ void menu_draw_P<uint8_t*>(char chr, const char* str, int16_t val)
|
||||
}
|
||||
}
|
||||
|
||||
//! Draw up to 10 chars of text, ':' and float number in format from +0.0 to +12345.0. The increased range is necessary
|
||||
//! @brief Draw up to 10 chars of text and a float number in format from +0.0 to +12345.0. The increased range is necessary
|
||||
//! for displaying large values of extruder positions, which caused text overflow in the previous implementation.
|
||||
//!
|
||||
//! @param chr first character to print on the line
|
||||
//! @param str string label to print, will be appended with ':' automatically inside the function
|
||||
//! @param str string label to print
|
||||
//! @param val value to print aligned to the right side of the display
|
||||
//!
|
||||
//! Implementation comments:
|
||||
//! The text needs to be prerendered into the prerendered[] to enable left alignment of text str including the colon behind it.
|
||||
//! If we didn't want the colon behind it, the whole operation would have been solved with a single vsprintf call,
|
||||
//! but such line would look different compared to every other similar menu item
|
||||
//! So it is almost the same amount of code like before, but with added string prerendering
|
||||
void menu_draw_float31(char chr, const char* str, float val)
|
||||
//! The text needs to come with a colon ":", this function does not append it anymore.
|
||||
//! That resulted in a much shorter implementation (234628B -> 234476B)
|
||||
//! There are similar functions around which may be shortened in a similar way
|
||||
void menu_draw_float31(const char* str, float val)
|
||||
{
|
||||
uint8_t txtlen = strlen_P(str);
|
||||
if( txtlen > 10 )txtlen = 10;
|
||||
char prerendered[21];
|
||||
strcpy_P(prerendered, menu_20x_space);
|
||||
prerendered[0] = chr; // start with the initial byte/space for menu navigation
|
||||
strncpy_P(prerendered+1, str, 10); // render the text and limit it to max 10 characters
|
||||
prerendered[txtlen+1] = ':'; // put the colon behind it
|
||||
prerendered[txtlen+2] = 0; // terminate the string to be used inside the printf
|
||||
lcd_printf_P(menu_fmt_float31, prerendered, val);
|
||||
lcd_printf_P(menu_fmt_float31, str, val);
|
||||
}
|
||||
|
||||
//draw up to 12 chars of text, ':' and float number in format +1.234
|
||||
void menu_draw_float13(char chr, const char* str, float val)
|
||||
//! @brief Draw up to 12 chars of text and a float number in format +1.234
|
||||
//!
|
||||
//! @param chr first character to print on the line
|
||||
//! @param str string label to print
|
||||
//! @param val value to print aligned to the right side of the display
|
||||
//!
|
||||
//! Implementation comments:
|
||||
//! This function uses similar optimization principles as menu_draw_float31
|
||||
//! (i.e. str must include a ':' at its end)
|
||||
//! FLASH usage dropped 234476B -> 234392B
|
||||
//! Moreover, this function gets inlined in the final code, so removing it doesn't really help ;)
|
||||
void menu_draw_float13(const char* str, float val)
|
||||
{
|
||||
int text_len = strlen_P(str);
|
||||
if (text_len > 12) text_len = 12;
|
||||
char spaces[21];
|
||||
strcpy_P(spaces, menu_20x_space);
|
||||
spaces[12 - text_len] = 0;
|
||||
lcd_printf_P(menu_fmt_float13, chr, str, spaces, val);
|
||||
lcd_printf_P(menu_fmt_float13, str, val);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
|
@ -97,11 +97,12 @@ extern uint8_t menu_item_gcode_P(const char* str, const char* str_gcode);
|
||||
extern const char menu_fmt_int3[];
|
||||
|
||||
extern const char menu_fmt_float31[];
|
||||
extern const char menu_fmt_float13[];
|
||||
|
||||
|
||||
extern void menu_draw_float31(char chr, const char* str, float val);
|
||||
extern void menu_draw_float31(const char* str, float val);
|
||||
|
||||
extern void menu_draw_float13(char chr, const char* str, float val);
|
||||
extern void menu_draw_float13(const char* str, float val);
|
||||
|
||||
|
||||
#define MENU_ITEM_EDIT_int3_P(str, pval, minval, maxval) do { if (menu_item_edit_P(str, pval, minval, maxval)) return; } while (0)
|
||||
|
18
Firmware/ultralcd.cpp
Normal file → Executable file
18
Firmware/ultralcd.cpp
Normal file → Executable file
@ -3079,7 +3079,7 @@ static void _lcd_move(const char *name, int axis, int min, int max)
|
||||
if (lcd_draw_update)
|
||||
{
|
||||
lcd_set_cursor(0, 1);
|
||||
menu_draw_float31(' ', name, current_position[axis]);
|
||||
menu_draw_float31(name, current_position[axis]);
|
||||
}
|
||||
if (menu_leaving || LCD_CLICKED) (void)enable_endstops(_md->endstopsEnabledPrevious);
|
||||
if (LCD_CLICKED) menu_back();
|
||||
@ -3104,7 +3104,9 @@ static void lcd_move_e()
|
||||
if (lcd_draw_update)
|
||||
{
|
||||
lcd_set_cursor(0, 1);
|
||||
menu_draw_float31(' ', PSTR("Extruder"), current_position[E_AXIS]);
|
||||
// Note: the colon behind the text is necessary to greatly shorten
|
||||
// the implementation of menu_draw_float31
|
||||
menu_draw_float31(PSTR("Extruder:"), current_position[E_AXIS]);
|
||||
}
|
||||
if (LCD_CLICKED) menu_back();
|
||||
}
|
||||
@ -3224,14 +3226,16 @@ void EEPROM_read_B(int pos, int* value)
|
||||
}
|
||||
|
||||
|
||||
// Note: the colon behind the text (X, Y, Z) is necessary to greatly shorten
|
||||
// the implementation of menu_draw_float31
|
||||
static void lcd_move_x() {
|
||||
_lcd_move(PSTR("X"), X_AXIS, X_MIN_POS, X_MAX_POS);
|
||||
_lcd_move(PSTR("X:"), X_AXIS, X_MIN_POS, X_MAX_POS);
|
||||
}
|
||||
static void lcd_move_y() {
|
||||
_lcd_move(PSTR("Y"), Y_AXIS, Y_MIN_POS, Y_MAX_POS);
|
||||
_lcd_move(PSTR("Y:"), Y_AXIS, Y_MIN_POS, Y_MAX_POS);
|
||||
}
|
||||
static void lcd_move_z() {
|
||||
_lcd_move(PSTR("Z"), Z_AXIS, Z_MIN_POS, Z_MAX_POS);
|
||||
_lcd_move(PSTR("Z:"), Z_AXIS, Z_MIN_POS, Z_MAX_POS);
|
||||
}
|
||||
|
||||
|
||||
@ -3304,7 +3308,7 @@ static void _lcd_babystep(int axis, const char *msg)
|
||||
if (lcd_draw_update)
|
||||
{
|
||||
lcd_set_cursor(0, 1);
|
||||
menu_draw_float13(' ', msg, _md->babystepMemMM[axis]);
|
||||
menu_draw_float13(msg, _md->babystepMemMM[axis]);
|
||||
}
|
||||
if (LCD_CLICKED || menu_leaving)
|
||||
{
|
||||
@ -3320,7 +3324,7 @@ static void _lcd_babystep(int axis, const char *msg)
|
||||
|
||||
static void lcd_babystep_z()
|
||||
{
|
||||
_lcd_babystep(Z_AXIS, (_i("Adjusting Z")));////MSG_BABYSTEPPING_Z c=20
|
||||
_lcd_babystep(Z_AXIS, (_i("Adjusting Z:")));////MSG_BABYSTEPPING_Z c=20 Beware: must include the ':' as its last character
|
||||
}
|
||||
|
||||
|
||||
|
2
lang/lang_en.txt
Normal file → Executable file
2
lang/lang_en.txt
Normal file → Executable file
@ -17,7 +17,7 @@
|
||||
">Cancel"
|
||||
|
||||
#MSG_BABYSTEPPING_Z c=20
|
||||
"Adjusting Z"
|
||||
"Adjusting Z:"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20
|
||||
"All correct "
|
||||
|
4
lang/lang_en_cz.txt
Normal file → Executable file
4
lang/lang_en_cz.txt
Normal file → Executable file
@ -23,8 +23,8 @@
|
||||
">Zrusit"
|
||||
|
||||
#MSG_BABYSTEPPING_Z c=20
|
||||
"Adjusting Z"
|
||||
"Dostavovani Z"
|
||||
"Adjusting Z:"
|
||||
"Dostavovani Z:"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20
|
||||
"All correct "
|
||||
|
4
lang/lang_en_de.txt
Normal file → Executable file
4
lang/lang_en_de.txt
Normal file → Executable file
@ -23,8 +23,8 @@
|
||||
">Abbruch"
|
||||
|
||||
#MSG_BABYSTEPPING_Z c=20
|
||||
"Adjusting Z"
|
||||
"Z wurde eingestellt"
|
||||
"Adjusting Z:"
|
||||
"Z Einstellung:"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20
|
||||
"All correct "
|
||||
|
4
lang/lang_en_es.txt
Normal file → Executable file
4
lang/lang_en_es.txt
Normal file → Executable file
@ -23,8 +23,8 @@
|
||||
">Cancelar"
|
||||
|
||||
#MSG_BABYSTEPPING_Z c=20
|
||||
"Adjusting Z"
|
||||
"Ajustar Z"
|
||||
"Adjusting Z:"
|
||||
"Ajustar Z:"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20
|
||||
"All correct "
|
||||
|
4
lang/lang_en_fr.txt
Normal file → Executable file
4
lang/lang_en_fr.txt
Normal file → Executable file
@ -23,8 +23,8 @@
|
||||
">Annuler"
|
||||
|
||||
#MSG_BABYSTEPPING_Z c=20
|
||||
"Adjusting Z"
|
||||
"Ajustement de Z"
|
||||
"Adjusting Z:"
|
||||
"Ajust. de Z:"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20
|
||||
"All correct "
|
||||
|
4
lang/lang_en_it.txt
Normal file → Executable file
4
lang/lang_en_it.txt
Normal file → Executable file
@ -23,8 +23,8 @@
|
||||
">Annulla"
|
||||
|
||||
#MSG_BABYSTEPPING_Z c=20
|
||||
"Adjusting Z"
|
||||
"Compensazione Z"
|
||||
"Adjusting Z:"
|
||||
"Compensaz. Z:"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20
|
||||
"All correct "
|
||||
|
4
lang/lang_en_pl.txt
Normal file → Executable file
4
lang/lang_en_pl.txt
Normal file → Executable file
@ -23,8 +23,8 @@
|
||||
">Anuluj"
|
||||
|
||||
#MSG_BABYSTEPPING_Z c=20
|
||||
"Adjusting Z"
|
||||
"Dostrajanie Z"
|
||||
"Adjusting Z:"
|
||||
"Dostrajanie Z:"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20
|
||||
"All correct "
|
||||
|
Loading…
Reference in New Issue
Block a user