Fix LCD printing of progmem strings
This commit is contained in:
parent
c74d4dede6
commit
8d69394ae1
@ -239,19 +239,17 @@ char lcd_print_and_count(const char c) {
|
|||||||
* On DOGM all strings go through a filter for utf
|
* On DOGM all strings go through a filter for utf
|
||||||
* But only use lcd_print_utf and lcd_printPGM_utf for translated text
|
* But only use lcd_print_utf and lcd_printPGM_utf for translated text
|
||||||
*/
|
*/
|
||||||
void lcd_print(const char* const str) { for (uint8_t i = 0; char c = str[i]; ++i) lcd_print(c); }
|
void lcd_print(const char *str) { while (*str) lcd_print(*str++); }
|
||||||
void lcd_printPGM(const char* str) { for (; char c = pgm_read_byte(str); ++str) lcd_print(c); }
|
void lcd_printPGM(const char *str) { while (const char c = pgm_read_byte(str)) lcd_print(c), ++str; }
|
||||||
|
|
||||||
void lcd_print_utf(const char* const str, const uint8_t maxLength=LCD_WIDTH) {
|
void lcd_print_utf(const char *str, uint8_t n=LCD_WIDTH) {
|
||||||
char c;
|
char c;
|
||||||
for (uint8_t i = 0, n = maxLength; n && (c = str[i]); ++i)
|
while (n && (c = *str)) n -= charset_mapper(c), ++str;
|
||||||
n -= charset_mapper(c);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_printPGM_utf(const char* str, const uint8_t maxLength=LCD_WIDTH) {
|
void lcd_printPGM_utf(const char *str, uint8_t n=LCD_WIDTH) {
|
||||||
char c;
|
char c;
|
||||||
for (uint8_t i = 0, n = maxLength; n && (c = str[i]); ++i)
|
while (n && (c = pgm_read_byte(str))) n -= charset_mapper(c), ++str;
|
||||||
n -= charset_mapper(c);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize or re-initialize the LCD
|
// Initialize or re-initialize the LCD
|
||||||
|
@ -382,19 +382,17 @@ void lcd_implementation_clear() { lcd.clear(); }
|
|||||||
|
|
||||||
void lcd_print(const char c) { charset_mapper(c); }
|
void lcd_print(const char c) { charset_mapper(c); }
|
||||||
|
|
||||||
void lcd_print(const char * const str) { for (uint8_t i = 0; char c = str[i]; ++i) lcd.print(c); }
|
void lcd_print(const char *str) { while (*str) lcd.print(*str++); }
|
||||||
void lcd_printPGM(const char* str) { for (; char c = pgm_read_byte(str); ++str) lcd.print(c); }
|
void lcd_printPGM(const char *str) { while (const char c = pgm_read_byte(str)) lcd.print(c), ++str; }
|
||||||
|
|
||||||
void lcd_print_utf(const char * const str, const uint8_t maxLength=LCD_WIDTH) {
|
void lcd_print_utf(const char *str, uint8_t n=LCD_WIDTH) {
|
||||||
char c;
|
char c;
|
||||||
for (uint8_t i = 0, n = maxLength; n && (c = str[i]); ++i)
|
while (n && (c = *str)) n -= charset_mapper(c), ++str;
|
||||||
n -= charset_mapper(c);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_printPGM_utf(const char* str, const uint8_t maxLength=LCD_WIDTH) {
|
void lcd_printPGM_utf(const char *str, uint8_t n=LCD_WIDTH) {
|
||||||
char c;
|
char c;
|
||||||
for (uint8_t i = 0, n = maxLength; n && (c = str[i]); ++i)
|
while (n && (c = pgm_read_byte(str))) n -= charset_mapper(c), ++str;
|
||||||
n -= charset_mapper(c);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLED(SHOW_BOOTSCREEN)
|
#if ENABLED(SHOW_BOOTSCREEN)
|
||||||
|
Loading…
Reference in New Issue
Block a user