Browse Source

🎨 MarlinUI for E3V2 tweaks

vanilla_fb_2.0.x
Scott Lahteine 3 years ago
parent
commit
03344a0947
  1. 10
      Marlin/src/lcd/e3v2/creality/dwin.cpp
  2. 1
      Marlin/src/lcd/e3v2/marlinui/dwin_lcd.h
  3. 10
      Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp
  4. 20
      Marlin/src/lcd/e3v2/marlinui/dwin_string.h
  5. 16
      Marlin/src/lcd/e3v2/marlinui/lcdprint_dwin.cpp

10
Marlin/src/lcd/e3v2/creality/dwin.cpp

@ -579,14 +579,8 @@ void DWIN_Draw_Label(const uint8_t row, const __FlashStringHelper *title) {
}
void DWIN_Draw_Signed_Float(uint8_t size, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, long value) {
if (value < 0) {
DWIN_Draw_String(true, size, Color_White, bColor, x - 8, y, F("-"));
DWIN_Draw_FloatValue(true, true, 0, size, Color_White, bColor, iNum, fNum, x, y, -value);
}
else {
DWIN_Draw_String(true, size, Color_White, bColor, x - 8, y, F(" "));
DWIN_Draw_FloatValue(true, true, 0, size, Color_White, bColor, iNum, fNum, x, y, value);
}
DWIN_Draw_String(true, size, Color_White, bColor, x - 8, y, value < 0 ? F("-") : F(" "));
DWIN_Draw_FloatValue(true, true, 0, size, Color_White, bColor, iNum, fNum, x, y, value < 0 ? -value : value);
}
void Draw_Edit_Integer3(const uint8_t row, const uint16_t value, const bool active=false) {

1
Marlin/src/lcd/e3v2/marlinui/dwin_lcd.h

@ -67,7 +67,6 @@
#define DWIN_FONT_MENU font10x20
#define DWIN_FONT_STAT font14x28
#define DWIN_FONT_HEAD font10x20
#define DWIN_FONT_ALERT font14x28
// Color

10
Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp

@ -47,7 +47,7 @@ uint8_t read_byte(uint8_t *byte) { return *byte; }
* ~ displays '1'....'11' for indexes 0 - 10
* * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
*/
void DWIN_String::add(uint8_t *string, int8_t index, uint8_t *itemString) {
void DWIN_String::add(uint8_t *string, const int8_t index, uint8_t *itemString/*=nullptr*/) {
wchar_t wchar;
while (*string) {
@ -127,7 +127,7 @@ void DWIN_String::add(wchar_t character) {
if (str[1]) add_character(str[1]);
}
void DWIN_String::add_character(uint8_t character) {
void DWIN_String::add_character(const uint8_t character) {
if (len < MAX_STRING_LENGTH) {
data[len] = character;
len++;
@ -135,7 +135,7 @@ void DWIN_String::add_character(uint8_t character) {
}
}
void DWIN_String::rtrim(uint8_t character) {
void DWIN_String::rtrim(const uint8_t character) {
while (len) {
if (data[len - 1] == 0x20 || data[len - 1] == character) {
len--;
@ -147,7 +147,7 @@ void DWIN_String::rtrim(uint8_t character) {
}
}
void DWIN_String::ltrim(uint8_t character) {
void DWIN_String::ltrim(const uint8_t character) {
uint16_t i, j;
for (i = 0; (i < len) && (data[i] == 0x20 || data[i] == character); i++) {
//span -= glyph(data[i])->DWidth;
@ -158,7 +158,7 @@ void DWIN_String::ltrim(uint8_t character) {
eol();
}
void DWIN_String::trim(uint8_t character) {
void DWIN_String::trim(const uint8_t character) {
rtrim(character);
ltrim(character);
}

20
Marlin/src/lcd/e3v2/marlinui/dwin_string.h

@ -46,7 +46,7 @@ class DWIN_String {
static uint16_t span; // in pixels
static uint8_t len; // in characters
static void add_character(uint8_t character);
static void add_character(const uint8_t character);
static void eol() { data[len] = 0x00; }
public:
@ -62,7 +62,7 @@ class DWIN_String {
//static void add(uint8_t character) { add_character(character); eol(); }
static void add(wchar_t character);
static void add(uint8_t *string, uint8_t max_len=MAX_STRING_LENGTH);
static void add(uint8_t *string, int8_t index, uint8_t *itemString=nullptr);
static void add(uint8_t *string, const int8_t index, uint8_t *itemString=nullptr);
static void set(uint8_t *string) { set(); add(string); }
static void set(wchar_t character) { set(); add(character); }
static void set(uint8_t *string, int8_t index, const char *itemString=nullptr) { set(); add(string, index, (uint8_t *)itemString); }
@ -71,20 +71,20 @@ class DWIN_String {
static inline void set(const char *string, int8_t index, const char *itemString=nullptr) { set((uint8_t *)string, index, itemString); }
static inline void add(const char *string) { add((uint8_t *)string); }
static void trim(uint8_t character=0x20);
static void rtrim(uint8_t character=0x20);
static void ltrim(uint8_t character=0x20);
static void trim(const uint8_t character=0x20);
static void rtrim(const uint8_t character=0x20);
static void ltrim(const uint8_t character=0x20);
static void truncate(uint8_t maxlen) { if (len > maxlen) { len = maxlen; eol(); } }
static uint8_t length() { return len; }
static uint16_t width() { return span; }
static uint8_t *string() { return data; }
static inline uint8_t length() { return len; }
static inline uint16_t width() { return span; }
static inline uint8_t *string() { return data; }
static uint16_t center(uint16_t width) { return span > width ? 0 : (width - span) / 2; }
};
int dwin_charmap_compare(dwin_charmap_t *v1, dwin_charmap_t *v2);
int pf_bsearch_cb_comp_dwinmap_pgm(void *userdata, size_t idx, void * data_pin);
int pf_bsearch_cb_comp_dwinmap_pgm(void *userdata, size_t idx, void *data_pin);
extern DWIN_String dwin_string;
@ -664,7 +664,7 @@ const dwin_charmap_t g_dwin_charmap_device[] PROGMEM = {
#endif
};
// the plain ASCII replacement for various char
// ASCII replacement for various characters
const dwin_charmap_t g_dwin_charmap_common[] PROGMEM = {
{IV('¡'), 'i', 0}, // A1
{IV('¢'), 'c', 0}, // A2

16
Marlin/src/lcd/e3v2/marlinui/lcdprint_dwin.cpp

@ -46,11 +46,10 @@ extern dwin_font_t dwin_font;
void lcd_moveto_xy(const lcd_uint_t x, const lcd_uint_t y) { cursor.x = x; cursor.y = y; }
void lcd_moveto(const lcd_uint_t col, const lcd_uint_t row) {
cursor.x = col * dwin_font.width;
cursor.y = (row * (dwin_font.height + EXTRA_ROW_HEIGHT)) + (EXTRA_ROW_HEIGHT / 2);
lcd_moveto_xy(col * dwin_font.width, row * (dwin_font.height + EXTRA_ROW_HEIGHT) + EXTRA_ROW_HEIGHT / 2);
}
inline void lcd_advance_cursor() { cursor.x += dwin_font.width; }
inline void lcd_advance_cursor(const uint8_t len=1) { cursor.x += len * dwin_font.width; }
void lcd_put_int(const int i) {
// TODO: Draw an int at the cursor position, advance the cursor
@ -58,19 +57,18 @@ void lcd_put_int(const int i) {
int lcd_put_dwin_string() {
DWIN_Draw_String(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, (char*)dwin_string.string());
cursor.x += dwin_string.length() * dwin_font.width;
lcd_advance_cursor(dwin_string.length());
return dwin_string.length();
}
// return < 0 on error
// return the advanced cols
int lcd_put_wchar_max(wchar_t c, pixel_len_t max_length) {
dwin_string.set();
dwin_string.add(c);
dwin_string.set(c);
dwin_string.truncate(max_length);
// Draw the char(s) at the cursor and advance the cursor
DWIN_Draw_String(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, (char*)dwin_string.string());
cursor.x += dwin_string.length() * dwin_font.width;
lcd_advance_cursor(dwin_string.length());
return dwin_string.length();
}
@ -95,7 +93,7 @@ static int lcd_put_u8str_max_cb(const char * utf8_str, uint8_t (*cb_read_byte)(u
dwin_string.add(ch);
}
DWIN_Draw_String(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, (char*)dwin_string.string());
cursor.x += dwin_string.length() * dwin_font.width;
lcd_advance_cursor(dwin_string.length());
return dwin_string.length();
}
@ -112,7 +110,7 @@ lcd_uint_t lcd_put_u8str_ind_P(PGM_P const pstr, const int8_t ind, PGM_P const i
dwin_string.add((uint8_t*)pstr, ind, (uint8_t*)inStr);
dwin_string.truncate(maxlen);
DWIN_Draw_String(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, (char*)dwin_string.string());
cursor.x += dwin_string.length() * dwin_font.width;
lcd_advance_cursor(dwin_string.length());
return dwin_string.length();
}

Loading…
Cancel
Save