️ Fix, enhance FTDI Eve Touch UI (#22619)

This commit is contained in:
Marcio T 2021-08-29 16:05:30 -06:00 committed by Scott Lahteine
parent d1db17c6f5
commit c06a183f28
2 changed files with 34 additions and 4 deletions

View file

@ -23,6 +23,10 @@
#if ENABLED(FTDI_EXTENDED) #if ENABLED(FTDI_EXTENDED)
#define IS_LINE_SEPARATOR(c) c == '\n' || c == '\t'
#define IS_WORD_SEPARATOR(c) c == ' '
#define IS_SEPARATOR(c) IS_LINE_SEPARATOR(c) || IS_WORD_SEPARATOR(c)
namespace FTDI { namespace FTDI {
/** /**
* Given a str, end will be set to the position at which a line needs to * Given a str, end will be set to the position at which a line needs to
@ -37,11 +41,11 @@ namespace FTDI {
const char *next = p; const char *next = p;
const utf8_char_t c = get_utf8_char_and_inc(next); const utf8_char_t c = get_utf8_char_and_inc(next);
// Decide whether to break the string at this location // Decide whether to break the string at this location
if (c == '\n' || c == '\0' || c == ' ') { if (IS_SEPARATOR(c) || c == '\0' ) {
end = p; end = p;
result = lw; result = lw;
} }
if (c == '\n' || c == '\0') break; if (IS_LINE_SEPARATOR(c) || c == '\0') break;
// Measure the next character // Measure the next character
const uint16_t cw = use_utf8 ? utf8_fm.get_char_width(c) : clcd_fm.char_widths[(uint8_t)c]; const uint16_t cw = use_utf8 ? utf8_fm.get_char_width(c) : clcd_fm.char_widths[(uint8_t)c];
// Stop processing once string exceeds the display width // Stop processing once string exceeds the display width
@ -69,7 +73,7 @@ namespace FTDI {
const uint16_t line_width = find_line_break(utf8_fm, clcd_fm, wrap_width, line_start, line_end, use_utf8); const uint16_t line_width = find_line_break(utf8_fm, clcd_fm, wrap_width, line_start, line_end, use_utf8);
width = max(width, line_width); width = max(width, line_width);
height += utf8_fm.get_height(); height += utf8_fm.get_height();
if (*line_end == '\n' || *line_end == ' ') line_end++; if (IS_SEPARATOR(*line_end)) line_end++;
if (*line_end == '\0') break; if (*line_end == '\0') break;
if (line_end == line_start) break; if (line_end == line_start) break;
line_start = line_end; line_start = line_end;
@ -124,7 +128,7 @@ namespace FTDI {
} }
y += utf8_fm.get_height(); y += utf8_fm.get_height();
if (*line_end == '\n' || *line_end == ' ') line_end++; if (IS_SEPARATOR(*line_end)) line_end++;
if (*line_end == '\0') break; if (*line_end == '\0') break;
if (line_end == line_start) break; if (line_end == line_start) break;
line_start = line_end; line_start = line_end;

View file

@ -229,5 +229,31 @@ namespace Theme {
0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00
}; };
constexpr PROGMEM bitmap_info_t Light_Bulb_Info = {
.format = L1,
.linestride = 4,
.filter = BILINEAR,
.wrapx = BORDER,
.wrapy = BORDER,
.RAMG_offset = 8685,
.width = 31,
.height = 32,
};
const unsigned char Light_Bulb[128] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
0x02, 0x00, 0x00, 0x80, 0x01, 0x00, 0x01, 0x00, 0x00, 0x80, 0x02, 0x00,
0x00, 0x0F, 0xE0, 0x00, 0x00, 0x18, 0x30, 0x00, 0x00, 0x36, 0x18, 0x00,
0x00, 0x2C, 0x08, 0x00, 0x00, 0x58, 0x04, 0x00, 0x00, 0x50, 0x04, 0x00,
0x7C, 0x50, 0x04, 0x7C, 0x00, 0x40, 0x04, 0x00, 0x00, 0x40, 0x04, 0x00,
0x00, 0x60, 0x0C, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x10, 0x10, 0x00,
0x00, 0x10, 0x10, 0x00, 0x00, 0x88, 0x22, 0x00, 0x01, 0x08, 0x21, 0x00,
0x02, 0x08, 0x20, 0x80, 0x04, 0x0F, 0xE0, 0x40, 0x00, 0x07, 0xC0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00
};
constexpr PROGMEM uint32_t UTF8_FONT_OFFSET = 10000; constexpr PROGMEM uint32_t UTF8_FONT_OFFSET = 10000;
constexpr PROGMEM uint32_t BACKGROUND_OFFSET = 40000;
}; // namespace Theme }; // namespace Theme