Changes in dogm_lcd_implementation.h in detail.
Top -> down - We don't need the old Marlion_font package any more - we made new. - But we need information about configured fonts and the mappers. - We support Cyrillic now. - LCD_CLASS is not used in this file. LiquidCrystalRus.h is deleted anyway. - define some fonts - BIG_EDIT_FONT works only together with western languages. - Select a matching FONT for the MENUE depending on the defined language. - Number the different font-types. Wanted to avoid to store complete font-structures when changing fonts back and forth. - Marlin special symbols are now at the lower end - like in 'ultralcd_implementation_hitachi_HD44780.h' - insert the new remembering setFont function. - insert the new counting lcd_print functions. - make use of the new setFont and lcd_print functions. - On some places redefined one character long strings with chars to avoid overhead and reduce warnings.
This commit is contained in:
		
							parent
							
								
									255ca68123
								
							
						
					
					
						commit
						ae76b1e8a8
					
				| @ -17,8 +17,8 @@ | |||||||
| #define MARLIN_VERSION "1.0.2" | #define MARLIN_VERSION "1.0.2" | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| * Implementation of the LCD display routines for a DOGM128 graphic display. These are common LCD 128x64 pixel graphic displays. |  * Implementation of the LCD display routines for a DOGM128 graphic display. These are common LCD 128x64 pixel graphic displays. | ||||||
| **/ |  */ | ||||||
| 
 | 
 | ||||||
| #ifdef ULTIPANEL | #ifdef ULTIPANEL | ||||||
|   #define BLEN_A 0 |   #define BLEN_A 0 | ||||||
| @ -32,35 +32,72 @@ | |||||||
| 
 | 
 | ||||||
| #include <U8glib.h> | #include <U8glib.h> | ||||||
| #include "DOGMbitmaps.h" | #include "DOGMbitmaps.h" | ||||||
| #include "dogm_font_data_marlin.h" |  | ||||||
| #include "ultralcd.h" | #include "ultralcd.h" | ||||||
| #include "ultralcd_st7920_u8glib_rrd.h" | #include "ultralcd_st7920_u8glib_rrd.h" | ||||||
|  | #include "configuration.h" | ||||||
|  | #include "utf_mapper.h" | ||||||
| 
 | 
 | ||||||
| /* Russian language not supported yet, needs custom font
 | #include <utility/u8g.h> | ||||||
|  | #include "dogm_font_data_6x9_marlin.h"       // Height of 'A' is only 5 pixel. | ||||||
|  | #include "dogm_font_data_Marlin_symbols.h"   // The Marlin special symbols | ||||||
| 
 | 
 | ||||||
| #ifdef LANGUAGE_RU | #define FONT_STATUSMENU_NAME u8g_font_6x9    // we don't have a small font for Cyrillic, Kana or Kanji
 | ||||||
| #include "LiquidCrystalRus.h" | #define FONT_SPECIAL_NAME Marlin_symbols | ||||||
| #define LCD_CLASS LiquidCrystalRus | 
 | ||||||
| #else | // save 3120 bytes of PROGMEM by commenting out the next #define
 | ||||||
| #include <LiquidCrystal.h> | // we don't have a big font for Cyrillic, Kana or Kanji
 | ||||||
| #define LCD_CLASS LiquidCrystal | #if defined( MAPPER_C2C3 ) || defined( MAPPER_NON ) | ||||||
|  |   #define USE_BIG_EDIT_FONT | ||||||
| #endif | #endif | ||||||
| */ |  | ||||||
| 
 | 
 | ||||||
| #define USE_BIG_EDIT_FONT                // save 3120 bytes of PROGMEM by commenting out this line
 | #if defined( MAPPER_C2C3 ) | ||||||
| #define FONT_STATUSMENU u8g_font_6x9 |   #include <utility/u8g.h> // System font. This is ISO10646-1 | ||||||
| #define FONT_MENU u8g_font_6x10_marlin |   #define FONT_MENU_NAME u8g_font_6x10 | ||||||
|  | 
 | ||||||
|  | #elif defined( MAPPER_D0D1 ) | ||||||
|  |   #include "dogm_font_data_ISO10646_5_Cyrillic.h" | ||||||
|  |   #define FONT_MENU_NAME ISO10646_5_Cyrillic_5x7 | ||||||
|  | 
 | ||||||
|  | #elif defined( MAPPER_E382E383 ) | ||||||
|  |   #include "dogm_font_data_ISO10646_Kana.h" | ||||||
|  |   #define FONT_MENU_NAME ISO10646_Kana_5x7 | ||||||
|  | 
 | ||||||
|  | #elif defined( DISPLAY_CHARSET_KANJI ) && defined( MAPPER_NON ) | ||||||
|  |   #include "dogm_font_data_6x10_marlin_Kanji.h" | ||||||
|  |   #define FONT_MENU_NAME u8g_font_6x10_marlin | ||||||
|  | 
 | ||||||
|  | #elif defined( DISPLAY_CHARSET_HD44780_JAPAN ) | ||||||
|  |   #include "dogm_font_data_HD44780_J.h" | ||||||
|  |   #define FONT_MENU_NAME HD44780_J_5x7 | ||||||
|  | 
 | ||||||
|  | #elif defined( DISPLAY_CHARSET_HD44780_WESTERN ) | ||||||
|  |   #include "dogm_font_data_HD44780_W.h" | ||||||
|  |   #define FONT_MENU_NAME HD44780_W_5x7 | ||||||
|  | 
 | ||||||
|  | #elif defined( DISPLAY_CHARSET_HD44780_CYRILIC ) | ||||||
|  |   #include "dogm_font_data_HD44780_C.h" | ||||||
|  |   #define FONT_MENU_NAME HD44780_C_5x7 | ||||||
|  | 
 | ||||||
|  | #else // #if defined( MAPPER_C2C3 )  // fall-back
 | ||||||
|  |   #include <utility/u8g.h> // system font | ||||||
|  |   #define FONT_MENU_NAME u8g_font_6x10 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #define FONT_STATUSMENU 1 | ||||||
|  | #define FONT_SPECIAL 2 | ||||||
|  | #define FONT_MENU_EDIT 3 | ||||||
|  | #define FONT_MENU 4 | ||||||
| 
 | 
 | ||||||
| // DOGM parameters (size in pixels)
 | // DOGM parameters (size in pixels)
 | ||||||
| #define DOG_CHAR_WIDTH         6 | #define DOG_CHAR_WIDTH         6 | ||||||
| #define DOG_CHAR_HEIGHT        12 | #define DOG_CHAR_HEIGHT        12 | ||||||
| #ifdef USE_BIG_EDIT_FONT | #ifdef USE_BIG_EDIT_FONT | ||||||
|   #define FONT_MENU_EDIT u8g_font_9x18 |   #define FONT_MENU_EDIT_NAME u8g_font_9x18 | ||||||
|   #define DOG_CHAR_WIDTH_EDIT  9 |   #define DOG_CHAR_WIDTH_EDIT  9 | ||||||
|   #define DOG_CHAR_HEIGHT_EDIT 18 |   #define DOG_CHAR_HEIGHT_EDIT 18 | ||||||
|   #define LCD_WIDTH_EDIT       14 |   #define LCD_WIDTH_EDIT       14 | ||||||
| #else | #else | ||||||
|   #define FONT_MENU_EDIT u8g_font_6x10_marlin |   #define FONT_MENU_EDIT_NAME FONT_MENU_NAME | ||||||
|   #define DOG_CHAR_WIDTH_EDIT  6 |   #define DOG_CHAR_WIDTH_EDIT  6 | ||||||
|   #define DOG_CHAR_HEIGHT_EDIT 12 |   #define DOG_CHAR_HEIGHT_EDIT 12 | ||||||
|   #define LCD_WIDTH_EDIT       22 |   #define LCD_WIDTH_EDIT       22 | ||||||
| @ -68,16 +105,21 @@ | |||||||
| 
 | 
 | ||||||
| #define START_ROW              0 | #define START_ROW              0 | ||||||
| 
 | 
 | ||||||
| /* Custom characters defined in font font_6x10_marlin.c */ | /* Custom characters defined in font font_6x10_marlin_symbols */ | ||||||
| #define LCD_STR_DEGREE      "\xB0" | // \x00 intentionally skipped to avoid problems in strings
 | ||||||
| #define LCD_STR_REFRESH     "\xF8" | #define LCD_STR_REFRESH     "\x01" | ||||||
| #define LCD_STR_FOLDER      "\xF9" | #define LCD_STR_FOLDER      "\x02" | ||||||
| #define LCD_STR_ARROW_RIGHT "\xFA" | #define LCD_STR_ARROW_RIGHT "\x03" | ||||||
| #define LCD_STR_UPLEVEL     "\xFB" | #define LCD_STR_UPLEVEL     "\x04" | ||||||
| #define LCD_STR_CLOCK       "\xFC" | #define LCD_STR_CLOCK       "\x05" | ||||||
| #define LCD_STR_FEEDRATE    "\xFD" | #define LCD_STR_FEEDRATE    "\x06" | ||||||
| #define LCD_STR_BEDTEMP     "\xFE" | #define LCD_STR_BEDTEMP     "\x07" | ||||||
| #define LCD_STR_THERMOMETER "\xFF" | #define LCD_STR_THERMOMETER "\x08" | ||||||
|  | #define LCD_STR_DEGREE      "\x09" | ||||||
|  | 
 | ||||||
|  | #define LCD_STR_SPECIAL_MAX LCD_STR_DEGREE | ||||||
|  | // Maximum here is 0x1f because 0x20 is ' ' (space) and the normal charsets begin.
 | ||||||
|  | // Better stay below 0x10 because DISPLAY_CHARSET_HD44780_WESTERN begins here.
 | ||||||
| 
 | 
 | ||||||
| int lcd_contrast; | int lcd_contrast; | ||||||
| 
 | 
 | ||||||
| @ -96,6 +138,49 @@ U8GLIB_NHD_C12864 u8g(DOGLCD_CS, DOGLCD_A0); | |||||||
| U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0);  // HW-SPI Com: CS, A0
 | U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0);  // HW-SPI Com: CS, A0
 | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | char currentfont = 0; | ||||||
|  | 
 | ||||||
|  | static void lcd_setFont(char font_nr) { | ||||||
|  |   switch(font_nr) { | ||||||
|  |     case FONT_STATUSMENU : {u8g.setFont(FONT_STATUSMENU_NAME); currentfont = FONT_STATUSMENU;}; break; | ||||||
|  |     case FONT_MENU       : {u8g.setFont(FONT_MENU_NAME); currentfont = FONT_MENU;}; break; | ||||||
|  |     case FONT_SPECIAL    : {u8g.setFont(FONT_SPECIAL_NAME); currentfont = FONT_SPECIAL;}; break; | ||||||
|  |     case FONT_MENU_EDIT  : {u8g.setFont(FONT_MENU_EDIT_NAME); currentfont = FONT_MENU_EDIT;}; break; | ||||||
|  |     break; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | char lcd_print(char c) { | ||||||
|  |   if ((c > 0) && (c < ' ')) { | ||||||
|  |     u8g.setFont(FONT_SPECIAL_NAME); | ||||||
|  |     u8g.print(c); | ||||||
|  |     lcd_setFont(currentfont); | ||||||
|  |     return 1; | ||||||
|  |   } else { | ||||||
|  |     return charset_mapper(c); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | char lcd_print(char* str) { | ||||||
|  |   char c; | ||||||
|  |   int i = 0; | ||||||
|  |   char n = 0; | ||||||
|  |   while ((c = str[i++])) { | ||||||
|  |     n += lcd_print(c); | ||||||
|  |   } | ||||||
|  |   return n; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* Arduino < 1.0.0 is missing a function to print PROGMEM strings, so we need to implement our own */ | ||||||
|  | char lcd_printPGM(const char* str) { | ||||||
|  |   char c; | ||||||
|  |   char n = 0; | ||||||
|  |   while ((c = pgm_read_byte(str++))) { | ||||||
|  |     n += lcd_print(c); | ||||||
|  |   } | ||||||
|  |   return n; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| static void lcd_implementation_init() | static void lcd_implementation_init() | ||||||
| { | { | ||||||
|   #ifdef LCD_PIN_BL // Enable LCD backlight
 |   #ifdef LCD_PIN_BL // Enable LCD backlight
 | ||||||
| @ -130,7 +215,7 @@ static void lcd_implementation_init() | |||||||
| 	u8g.firstPage(); | 	u8g.firstPage(); | ||||||
| 	do { | 	do { | ||||||
|     u8g.drawBitmapP(offx, offy, START_BMPBYTEWIDTH, START_BMPHEIGHT, start_bmp); |     u8g.drawBitmapP(offx, offy, START_BMPBYTEWIDTH, START_BMPHEIGHT, start_bmp); | ||||||
|     u8g.setFont(FONT_MENU); |     lcd_setFont(FONT_MENU); | ||||||
|     #ifndef STRING_SPLASH_LINE2 |     #ifndef STRING_SPLASH_LINE2 | ||||||
|       u8g.drawStr(txt1X, u8g.getHeight() - DOG_CHAR_HEIGHT, STRING_SPLASH_LINE1); |       u8g.drawStr(txt1X, u8g.getHeight() - DOG_CHAR_HEIGHT, STRING_SPLASH_LINE1); | ||||||
|     #else |     #else | ||||||
| @ -143,21 +228,15 @@ static void lcd_implementation_init() | |||||||
| 
 | 
 | ||||||
| static void lcd_implementation_clear() { } // Automatically cleared by Picture Loop
 | static void lcd_implementation_clear() { } // Automatically cleared by Picture Loop
 | ||||||
| 
 | 
 | ||||||
| /* Arduino < 1.0.0 is missing a function to print PROGMEM strings, so we need to implement our own */ |  | ||||||
| static void lcd_printPGM(const char* str) { |  | ||||||
|   char c; |  | ||||||
|   while ((c = pgm_read_byte(str++))) u8g.print(c); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static void _draw_heater_status(int x, int heater) { | static void _draw_heater_status(int x, int heater) { | ||||||
|   bool isBed = heater < 0; |   bool isBed = heater < 0; | ||||||
|   int y = 17 + (isBed ? 1 : 0); |   int y = 17 + (isBed ? 1 : 0); | ||||||
|   u8g.setFont(FONT_STATUSMENU); |   lcd_setFont(FONT_STATUSMENU); | ||||||
|   u8g.setPrintPos(x,6); |   u8g.setPrintPos(x,6); | ||||||
|   u8g.print(itostr3(int((heater >= 0 ? degTargetHotend(heater) : degTargetBed()) + 0.5))); |   lcd_print(itostr3(int((heater >= 0 ? degTargetHotend(heater) : degTargetBed()) + 0.5))); | ||||||
|   lcd_printPGM(PSTR(LCD_STR_DEGREE " ")); |   lcd_printPGM(PSTR(LCD_STR_DEGREE " ")); | ||||||
|   u8g.setPrintPos(x,27); |   u8g.setPrintPos(x,27); | ||||||
|   u8g.print(itostr3(int(heater >= 0 ? degHotend(heater) : degBed()) + 0.5)); |   lcd_print(itostr3(int(heater >= 0 ? degHotend(heater) : degBed()) + 0.5)); | ||||||
|   lcd_printPGM(PSTR(LCD_STR_DEGREE " ")); |   lcd_printPGM(PSTR(LCD_STR_DEGREE " ")); | ||||||
|   if (!isHeatingHotend(0)) { |   if (!isHeatingHotend(0)) { | ||||||
|     u8g.drawBox(x+7,y,2,2); |     u8g.drawBox(x+7,y,2,2); | ||||||
| @ -189,7 +268,7 @@ static void lcd_implementation_status_screen() { | |||||||
|     u8g.drawFrame(54,49,73,4); |     u8g.drawFrame(54,49,73,4); | ||||||
| 
 | 
 | ||||||
|     // SD Card Progress bar and clock
 |     // SD Card Progress bar and clock
 | ||||||
|     u8g.setFont(FONT_STATUSMENU); |     lcd_setFont(FONT_STATUSMENU); | ||||||
|   |   | ||||||
|     if (IS_SD_PRINTING) { |     if (IS_SD_PRINTING) { | ||||||
|       // Progress bar solid part
 |       // Progress bar solid part
 | ||||||
| @ -199,9 +278,9 @@ static void lcd_implementation_status_screen() { | |||||||
|     u8g.setPrintPos(80,47); |     u8g.setPrintPos(80,47); | ||||||
|     if (starttime != 0) { |     if (starttime != 0) { | ||||||
|       uint16_t time = (millis() - starttime) / 60000; |       uint16_t time = (millis() - starttime) / 60000; | ||||||
|       u8g.print(itostr2(time/60)); |       lcd_print(itostr2(time/60)); | ||||||
|       u8g.print(':'); |       lcd_print(':'); | ||||||
|       u8g.print(itostr2(time%60)); |       lcd_print(itostr2(time%60)); | ||||||
|     } |     } | ||||||
|     else { |     else { | ||||||
|       lcd_printPGM(PSTR("--:--")); |       lcd_printPGM(PSTR("--:--")); | ||||||
| @ -215,68 +294,77 @@ static void lcd_implementation_status_screen() { | |||||||
|   if (EXTRUDERS < 4) _draw_heater_status(81, -1); |   if (EXTRUDERS < 4) _draw_heater_status(81, -1); | ||||||
|   |   | ||||||
|   // Fan
 |   // Fan
 | ||||||
|   u8g.setFont(FONT_STATUSMENU); |   lcd_setFont(FONT_STATUSMENU); | ||||||
|   u8g.setPrintPos(104,27); |   u8g.setPrintPos(104,27); | ||||||
|   #if defined(FAN_PIN) && FAN_PIN > -1 |   #if defined(FAN_PIN) && FAN_PIN > -1 | ||||||
|     int per = ((fanSpeed + 1) * 100) / 256; |     int per = ((fanSpeed + 1) * 100) / 256; | ||||||
|     if (per) { |     if (per) { | ||||||
|       u8g.print(itostr3(per)); |       lcd_print(itostr3(per)); | ||||||
|       u8g.print("%"); |       lcd_print('%'); | ||||||
|     } |     } | ||||||
|     else |     else | ||||||
|   #endif |   #endif | ||||||
|     { |     { | ||||||
|       u8g.print("---"); |       lcd_printPGM(PSTR("---")); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|   // X, Y, Z-Coordinates
 |   // X, Y, Z-Coordinates
 | ||||||
|   u8g.setFont(FONT_STATUSMENU); |   lcd_setFont(FONT_STATUSMENU); | ||||||
|   u8g.drawBox(0,29,128,10); |   u8g.drawBox(0,29,128,10); | ||||||
|   u8g.setColorIndex(0); // white on black
 |   u8g.setColorIndex(0); // white on black
 | ||||||
|   u8g.setPrintPos(2,37); |   u8g.setPrintPos(2,37); | ||||||
|   u8g.print("X"); |   lcd_print('X'); | ||||||
|   u8g.drawPixel(8,33); |   u8g.drawPixel(8,33); | ||||||
|   u8g.drawPixel(8,35); |   u8g.drawPixel(8,35); | ||||||
|   u8g.setPrintPos(10,37); |   u8g.setPrintPos(10,37); | ||||||
|   u8g.print(ftostr31ns(current_position[X_AXIS])); |   lcd_print(ftostr31ns(current_position[X_AXIS])); | ||||||
|   u8g.setPrintPos(43,37); |   u8g.setPrintPos(43,37); | ||||||
|   lcd_printPGM(PSTR("Y")); |   lcd_print('Y'); | ||||||
|   u8g.drawPixel(49,33); |   u8g.drawPixel(49,33); | ||||||
|   u8g.drawPixel(49,35); |   u8g.drawPixel(49,35); | ||||||
|   u8g.setPrintPos(51,37); |   u8g.setPrintPos(51,37); | ||||||
|   u8g.print(ftostr31ns(current_position[Y_AXIS])); |   lcd_print(ftostr31ns(current_position[Y_AXIS])); | ||||||
|   u8g.setPrintPos(83,37); |   u8g.setPrintPos(83,37); | ||||||
|   u8g.print("Z"); |   lcd_print('Z'); | ||||||
|   u8g.drawPixel(89,33); |   u8g.drawPixel(89,33); | ||||||
|   u8g.drawPixel(89,35); |   u8g.drawPixel(89,35); | ||||||
|   u8g.setPrintPos(91,37); |   u8g.setPrintPos(91,37); | ||||||
|   u8g.print(ftostr31(current_position[Z_AXIS])); |   lcd_print(ftostr31(current_position[Z_AXIS])); | ||||||
|   u8g.setColorIndex(1); // black on white
 |   u8g.setColorIndex(1); // black on white
 | ||||||
|   |   | ||||||
|   // Feedrate
 |   // Feedrate
 | ||||||
|   u8g.setFont(FONT_MENU); |   lcd_setFont(FONT_MENU); | ||||||
|   u8g.setPrintPos(3,49); |   u8g.setPrintPos(3,49); | ||||||
|   u8g.print(LCD_STR_FEEDRATE[0]); |   lcd_print(LCD_STR_FEEDRATE[0]); | ||||||
|   u8g.setFont(FONT_STATUSMENU); |   lcd_setFont(FONT_STATUSMENU); | ||||||
|   u8g.setPrintPos(12,48); |   u8g.setPrintPos(12,48); | ||||||
|   u8g.print(itostr3(feedmultiply)); |   lcd_print(itostr3(feedmultiply)); | ||||||
|   u8g.print('%'); |   lcd_print('%'); | ||||||
| 
 | 
 | ||||||
|   // Status line
 |   // Status line
 | ||||||
|   u8g.setFont(FONT_STATUSMENU); | /* The new fonts are small enough
 | ||||||
|  |   #ifndef MAPPER_C2C3 | ||||||
|  |     lcd_setFont(FONT_MENU); | ||||||
|  |   #else | ||||||
|  |     lcd_setFont(FONT_STATUSMENU); | ||||||
|  |   #endif | ||||||
|  | */ | ||||||
|  |   lcd_setFont(FONT_MENU); | ||||||
|  | 
 | ||||||
|   u8g.setPrintPos(0,61); |   u8g.setPrintPos(0,61); | ||||||
|  | 
 | ||||||
|   #ifndef FILAMENT_LCD_DISPLAY |   #ifndef FILAMENT_LCD_DISPLAY | ||||||
|     u8g.print(lcd_status_message); |     lcd_print(lcd_status_message); | ||||||
|   #else |   #else | ||||||
|     if (millis() < message_millis + 5000) {  //Display both Status message line and Filament display on the last line
 |     if (millis() < message_millis + 5000) {  //Display both Status message line and Filament display on the last line
 | ||||||
|       u8g.print(lcd_status_message); |       lcd_print(lcd_status_message); | ||||||
|     } |     } | ||||||
|     else { |     else { | ||||||
|       lcd_printPGM(PSTR("dia:")); |       lcd_printPGM(PSTR("dia:")); | ||||||
|       u8g.print(ftostr12ns(filament_width_meas)); |       lcd_print(ftostr12ns(filament_width_meas)); | ||||||
|       lcd_printPGM(PSTR(" factor:")); |       lcd_printPGM(PSTR(" factor:")); | ||||||
|       u8g.print(itostr3(extrudemultiply)); |       lcd_print(itostr3(extrudemultiply)); | ||||||
|       u8g.print('%'); |       lcd_print('%'); | ||||||
|     } |     } | ||||||
|   #endif |   #endif | ||||||
| } | } | ||||||
| @ -300,13 +388,12 @@ static void lcd_implementation_drawmenu_generic(uint8_t row, const char* pstr, c | |||||||
|   lcd_implementation_mark_as_selected(row, pre_char); |   lcd_implementation_mark_as_selected(row, pre_char); | ||||||
| 
 | 
 | ||||||
|   while((c = pgm_read_byte(pstr))) { |   while((c = pgm_read_byte(pstr))) { | ||||||
|     u8g.print(c); |     n -= lcd_print(c); | ||||||
|     pstr++; |     pstr++; | ||||||
|     n--; |  | ||||||
|   } |   } | ||||||
|   while(n--) u8g.print(' '); |   while(n--) lcd_print(' '); | ||||||
|   u8g.print(post_char); |   lcd_print(post_char); | ||||||
|   u8g.print(' '); |   lcd_print(' '); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void _drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char pre_char, const char* data, bool pgm) { | static void _drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char pre_char, const char* data, bool pgm) { | ||||||
| @ -316,13 +403,12 @@ static void _drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char p | |||||||
|   lcd_implementation_mark_as_selected(row, pre_char); |   lcd_implementation_mark_as_selected(row, pre_char); | ||||||
| 
 | 
 | ||||||
|   while( (c = pgm_read_byte(pstr))) { |   while( (c = pgm_read_byte(pstr))) { | ||||||
|     u8g.print(c); |     n -= lcd_print(c); | ||||||
|     pstr++; |     pstr++; | ||||||
|     n--; |  | ||||||
|   } |   } | ||||||
|   u8g.print(':'); |   lcd_print(':'); | ||||||
|   while(n--) u8g.print(' '); |   while(n--) lcd_print(' '); | ||||||
|   if (pgm) { lcd_printPGM(data); } else { u8g.print(data); } |   if (pgm) { lcd_printPGM(data); } else { lcd_print((char *)data); } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #define lcd_implementation_drawmenu_setting_edit_generic(row, pstr, pre_char, data) _drawmenu_setting_edit_generic(row, pstr, pre_char, data, false) | #define lcd_implementation_drawmenu_setting_edit_generic(row, pstr, pre_char, data) _drawmenu_setting_edit_generic(row, pstr, pre_char, data, false) | ||||||
| @ -374,13 +460,13 @@ void lcd_implementation_drawedit(const char* pstr, char* value) { | |||||||
| 
 | 
 | ||||||
|   #ifdef USE_BIG_EDIT_FONT |   #ifdef USE_BIG_EDIT_FONT | ||||||
|     if (lcd_strlen_P(pstr) <= LCD_WIDTH_EDIT - 1) { |     if (lcd_strlen_P(pstr) <= LCD_WIDTH_EDIT - 1) { | ||||||
|       u8g.setFont(FONT_MENU_EDIT); |       lcd_setFont(FONT_MENU_EDIT); | ||||||
|       lcd_width = LCD_WIDTH_EDIT + 1; |       lcd_width = LCD_WIDTH_EDIT + 1; | ||||||
|       char_width = DOG_CHAR_WIDTH_EDIT; |       char_width = DOG_CHAR_WIDTH_EDIT; | ||||||
|       if (lcd_strlen_P(pstr) >= LCD_WIDTH_EDIT - lcd_strlen(value)) rows = 2; |       if (lcd_strlen_P(pstr) >= LCD_WIDTH_EDIT - lcd_strlen(value)) rows = 2; | ||||||
|     } |     } | ||||||
|     else { |     else { | ||||||
|       u8g.setFont(FONT_MENU); |       lcd_setFont(FONT_MENU); | ||||||
|     } |     } | ||||||
|   #endif |   #endif | ||||||
| 
 | 
 | ||||||
| @ -391,9 +477,9 @@ void lcd_implementation_drawedit(const char* pstr, char* value) { | |||||||
| 
 | 
 | ||||||
|   u8g.setPrintPos(0, rowHeight + kHalfChar); |   u8g.setPrintPos(0, rowHeight + kHalfChar); | ||||||
|   lcd_printPGM(pstr); |   lcd_printPGM(pstr); | ||||||
|   u8g.print(':'); |   lcd_print(':'); | ||||||
|   u8g.setPrintPos((lcd_width-1-lcd_strlen(value)) * char_width, rows * rowHeight + kHalfChar); |   u8g.setPrintPos((lcd_width-1-lcd_strlen(value)) * char_width, rows * rowHeight + kHalfChar); | ||||||
|   u8g.print(value); |   lcd_print(value); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void _drawmenu_sd(uint8_t row, const char* pstr, const char* filename, char * const longFilename, bool isDir, bool isSelected) { | static void _drawmenu_sd(uint8_t row, const char* pstr, const char* filename, char * const longFilename, bool isDir, bool isSelected) { | ||||||
| @ -407,13 +493,12 @@ static void _drawmenu_sd(uint8_t row, const char* pstr, const char* filename, ch | |||||||
| 
 | 
 | ||||||
|   lcd_implementation_mark_as_selected(row, ((isSelected) ? '>' : ' ')); |   lcd_implementation_mark_as_selected(row, ((isSelected) ? '>' : ' ')); | ||||||
| 
 | 
 | ||||||
|   if (isDir) u8g.print(LCD_STR_FOLDER[0]); |   if (isDir) lcd_print(LCD_STR_FOLDER[0]); | ||||||
|   while((c = *filename) != '\0') { |   while((c = *filename) != '\0') { | ||||||
|     u8g.print(c); |     n -= lcd_print(c); | ||||||
|     filename++; |     filename++; | ||||||
|     n--; |  | ||||||
|   } |   } | ||||||
|   while(n--) u8g.print(' '); |   while(n--) lcd_print(' '); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #define lcd_implementation_drawmenu_sdfile_selected(row, pstr, filename, longFilename) _drawmenu_sd(row, pstr, filename, longFilename, false, true) | #define lcd_implementation_drawmenu_sdfile_selected(row, pstr, filename, longFilename) _drawmenu_sd(row, pstr, filename, longFilename, false, true) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user