Skip to content

Commit

Permalink
color_ui: do not ignore maxlen params
Browse files Browse the repository at this point in the history
lcd_put_wchar_max needed for 480x320 too
  • Loading branch information
tpruvot committed Jan 25, 2021
1 parent 9d42beb commit 2f02baa
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 3 deletions.
5 changes: 3 additions & 2 deletions Marlin/src/lcd/tft/tft_string.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -122,13 +122,14 @@ void TFT_String::add(uint8_t *string, int8_t index, uint8_t *itemString) {
eol();
}

void TFT_String::add(uint8_t *string) {
void TFT_String::add(uint8_t *string, uint16_t max_len) {
wchar_t wchar;
while (*string) {
while (*string && max_len) {
string = get_utf8_value_cb(string, read_byte, &wchar);
if (wchar > 255) wchar |= 0x0080;
uint8_t ch = uint8_t(wchar & 0x00FF);
add_character(ch);
max_len--;
}
eol();
}
Expand Down
5 changes: 4 additions & 1 deletion Marlin/src/lcd/tft/tft_string.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ class TFT_String {

static void set();
static void add(uint8_t character) { add_character(character); eol(); }
static void add(uint8_t *string);
static void add(uint8_t *string, uint16_t max_len = MAX_STRING_LENGTH);
static void add(uint8_t *string, int8_t index, uint8_t *itemString=nullptr);
static void set(uint8_t *string) { set(); add(string); };
static void set(uint8_t *string, int8_t index, const char *itemString=nullptr) { set(); add(string, index, (uint8_t *)itemString); };
Expand All @@ -96,6 +96,9 @@ class TFT_String {
static void trim(uint8_t character=0x20);
static void rtrim(uint8_t character=0x20);
static void ltrim(uint8_t character=0x20);

static void truncate(uint16_t maxlen) { if (length > maxlen) { length = maxlen; eol(); } }

static uint16_t width() { return span; }
static uint8_t *string() { return data; }
static uint16_t center(uint16_t width) { return span > width ? 0 : (width - span) / 2; }
Expand Down
3 changes: 3 additions & 0 deletions Marlin/src/lcd/tft/ui_320x240.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -669,15 +669,18 @@ void lcd_moveto(const lcd_uint_t col, const lcd_uint_t row) {
}

int lcd_put_wchar_max(wchar_t c, pixel_len_t max_length) {
if (max_length < 1) return 0;
tft_string.set();
tft_string.add(c);
tft.add_text(MENU_TEXT_X_OFFSET, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string);
return tft_string.width();
}

int lcd_put_u8str_max_P(PGM_P utf8_str_P, pixel_len_t max_length) {
if (max_length < 1) return 0;
tft_string.set(utf8_str_P);
tft_string.trim();
tft_string.truncate(max_length);
tft.add_text(MENU_TEXT_X_OFFSET, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string);
return tft_string.width();
}
Expand Down
10 changes: 10 additions & 0 deletions Marlin/src/lcd/tft/ui_480x320.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -676,9 +676,19 @@ void lcd_moveto(const lcd_uint_t col, const lcd_uint_t row) {
tft.set_background(COLOR_BACKGROUND);
}

int lcd_put_wchar_max(wchar_t c, pixel_len_t max_length) {
if (max_length < 1) return 0;
tft_string.set();
tft_string.add(c);
tft.add_text(MENU_TEXT_X_OFFSET, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string);
return tft_string.width();
}

int lcd_put_u8str_max_P(PGM_P utf8_str_P, pixel_len_t max_length) {
if (max_length < 1) return 0;
tft_string.set(utf8_str_P);
tft_string.trim();
tft_string.truncate(max_length);
tft.add_text(MENU_TEXT_X_OFFSET, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string);
return tft_string.width();
}
Expand Down

0 comments on commit 2f02baa

Please sign in to comment.