Merge pull request #5288 from thinkyhead/rc_selective_rendering
Optimize graphical display with selective rendering
This commit is contained in:
		
						commit
						668e737893
					
				| @ -460,15 +460,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -460,15 +460,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -460,15 +460,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -460,15 +460,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -460,15 +460,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   #define USE_SMALL_INFOFONT | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -473,15 +473,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -460,15 +460,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -460,15 +460,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -460,15 +460,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -468,15 +468,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -460,15 +460,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -462,15 +462,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -462,15 +462,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -462,15 +462,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -467,15 +467,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -462,15 +462,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -460,15 +460,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -460,15 +460,19 @@ | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
| 
 | ||||
| // for dogm lcd displays you can choose some additional fonts:
 | ||||
| // Some additional options are available for graphical displays:
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
 | ||||
|   // we don't have a big font for Cyrillic, Kana
 | ||||
|   // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_BIG_EDIT_FONT
 | ||||
| 
 | ||||
|   // If you have spare 2300Byte of progmem and want to use a
 | ||||
|   // smaller font on the Info-screen uncomment the next line.
 | ||||
|   // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
 | ||||
|   // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
 | ||||
|   //#define USE_SMALL_INFOFONT
 | ||||
| 
 | ||||
|   // Enable this option and reduce the value to optimize screen updates.
 | ||||
|   // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
 | ||||
|   //#define DOGM_SPI_DELAY_US 5
 | ||||
| #endif // DOGLCD
 | ||||
| 
 | ||||
| // @section safety
 | ||||
|  | ||||
| @ -276,7 +276,13 @@ | ||||
| 
 | ||||
| #include INCLUDE_LANGUAGE | ||||
| 
 | ||||
| #if DISABLED(SIMULATE_ROMFONT) && DISABLED(DISPLAY_CHARSET_ISO10646_1) && DISABLED(DISPLAY_CHARSET_ISO10646_5) && DISABLED(DISPLAY_CHARSET_ISO10646_KANA) && DISABLED(DISPLAY_CHARSET_ISO10646_GREEK) && DISABLED(DISPLAY_CHARSET_ISO10646_CN) && DISABLED(DISPLAY_CHARSET_ISO10646_TR) | ||||
| #if DISABLED(SIMULATE_ROMFONT) \ | ||||
|  && DISABLED(DISPLAY_CHARSET_ISO10646_1) \ | ||||
|  && DISABLED(DISPLAY_CHARSET_ISO10646_5) \ | ||||
|  && DISABLED(DISPLAY_CHARSET_ISO10646_KANA) \ | ||||
|  && DISABLED(DISPLAY_CHARSET_ISO10646_GREEK) \ | ||||
|  && DISABLED(DISPLAY_CHARSET_ISO10646_CN) \ | ||||
|  && DISABLED(DISPLAY_CHARSET_ISO10646_TR) | ||||
|   #define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays.
 | ||||
| #endif | ||||
| 
 | ||||
|  | ||||
| @ -2250,7 +2250,7 @@ void kill_screen(const char* lcd_msg) { | ||||
|       END_SCREEN(); | ||||
|     } | ||||
| 
 | ||||
|     void lcd_filament_change_show_message(FilamentChangeMessage message) { | ||||
|     void lcd_filament_change_show_message(const FilamentChangeMessage message) { | ||||
|       switch (message) { | ||||
|         case FILAMENT_CHANGE_MESSAGE_INIT: | ||||
|           defer_return_to_status = true; | ||||
| @ -2849,20 +2849,20 @@ void lcd_finishstatus(bool persist=false) { | ||||
| 
 | ||||
| bool lcd_hasstatus() { return (lcd_status_message[0] != '\0'); } | ||||
| 
 | ||||
| void lcd_setstatus(const char* message, bool persist) { | ||||
| void lcd_setstatus(const char* const message, bool persist) { | ||||
|   if (lcd_status_message_level > 0) return; | ||||
|   strncpy(lcd_status_message, message, 3 * (LCD_WIDTH)); | ||||
|   lcd_finishstatus(persist); | ||||
| } | ||||
| 
 | ||||
| void lcd_setstatuspgm(const char* message, uint8_t level) { | ||||
| void lcd_setstatuspgm(const char* const message, uint8_t level) { | ||||
|   if (level < lcd_status_message_level) return; | ||||
|   lcd_status_message_level = level; | ||||
|   strncpy_P(lcd_status_message, message, 3 * (LCD_WIDTH)); | ||||
|   lcd_finishstatus(level > 0); | ||||
| } | ||||
| 
 | ||||
| void lcd_setalertstatuspgm(const char* message) { | ||||
| void lcd_setalertstatuspgm(const char* const message) { | ||||
|   lcd_setstatuspgm(message, 1); | ||||
|   #if ENABLED(ULTIPANEL) | ||||
|     lcd_return_to_status(); | ||||
| @ -2872,7 +2872,7 @@ void lcd_setalertstatuspgm(const char* message) { | ||||
| void lcd_reset_alert_level() { lcd_status_message_level = 0; } | ||||
| 
 | ||||
| #if HAS_LCD_CONTRAST | ||||
|   void set_lcd_contrast(int value) { | ||||
|   void set_lcd_contrast(const int value) { | ||||
|     lcd_contrast = constrain(value, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX); | ||||
|     u8g.setContrast(lcd_contrast); | ||||
|   } | ||||
|  | ||||
| @ -88,7 +88,7 @@ | ||||
|     void lcd_quick_feedback(); // Audible feedback for a button click - could also be visual
 | ||||
| 
 | ||||
|     #if ENABLED(FILAMENT_CHANGE_FEATURE) | ||||
|       void lcd_filament_change_show_message(FilamentChangeMessage message); | ||||
|       void lcd_filament_change_show_message(const FilamentChangeMessage message); | ||||
|     #endif // FILAMENT_CHANGE_FEATURE
 | ||||
| 
 | ||||
|   #else | ||||
| @ -156,8 +156,8 @@ | ||||
|   inline void lcd_update() {} | ||||
|   inline void lcd_init() {} | ||||
|   inline bool lcd_hasstatus() { return false; } | ||||
|   inline void lcd_setstatus(const char* message, const bool persist=false) { UNUSED(message); UNUSED(persist); } | ||||
|   inline void lcd_setstatuspgm(const char* message, const uint8_t level=0) { UNUSED(message); UNUSED(level); } | ||||
|   inline void lcd_setstatus(const char* const message, const bool persist=false) { UNUSED(message); UNUSED(persist); } | ||||
|   inline void lcd_setstatuspgm(const char* const message, const uint8_t level=0) { UNUSED(message); UNUSED(level); } | ||||
|   inline void lcd_buttons_update() {} | ||||
|   inline void lcd_reset_alert_level() {} | ||||
|   inline bool lcd_detected() { return true; } | ||||
|  | ||||
| @ -54,6 +54,7 @@ | ||||
|   #include "_Bootscreen.h" | ||||
| #endif | ||||
| 
 | ||||
| // Only Western languages support big / small fonts
 | ||||
| #if DISABLED(DISPLAY_CHARSET_ISO10646_1) | ||||
|   #undef USE_BIG_EDIT_FONT | ||||
|   #undef USE_SMALL_INFOFONT | ||||
| @ -122,7 +123,7 @@ | ||||
| #if ENABLED(USE_BIG_EDIT_FONT) | ||||
|   #define FONT_MENU_EDIT_NAME u8g_font_9x18 | ||||
|   #define DOG_CHAR_WIDTH_EDIT  9 | ||||
|   #define DOG_CHAR_HEIGHT_EDIT 18 | ||||
|   #define DOG_CHAR_HEIGHT_EDIT 13 | ||||
|   #define LCD_WIDTH_EDIT       14 | ||||
| #else | ||||
|   #define FONT_MENU_EDIT_NAME FONT_MENU_NAME | ||||
| @ -183,7 +184,14 @@ | ||||
| int lcd_contrast; | ||||
| static char currentfont = 0; | ||||
| 
 | ||||
| static void lcd_setFont(char font_nr) { | ||||
| // The current graphical page being rendered
 | ||||
| u8g_page_t &page = ((u8g_pb_t *)((u8g.getU8g())->dev->dev_mem))->p; | ||||
| 
 | ||||
| // For selective rendering within a Y range
 | ||||
| #define PAGE_UNDER(yb) (u8g.getU8g()->current_page.y0 <= (yb)) | ||||
| #define PAGE_CONTAINS(ya, yb) (PAGE_UNDER(yb) && u8g.getU8g()->current_page.y1 >= (ya)) | ||||
| 
 | ||||
| static void lcd_setFont(const 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; | ||||
| @ -193,7 +201,7 @@ static void lcd_setFont(char font_nr) { | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| void lcd_print(char c) { | ||||
| void lcd_print(const char c) { | ||||
|   if ((c > 0) && (c <= LCD_STR_SPECIAL_MAX)) { | ||||
|     u8g.setFont(FONT_SPECIAL_NAME); | ||||
|     u8g.print(c); | ||||
| @ -202,7 +210,7 @@ void lcd_print(char c) { | ||||
|   else charset_mapper(c); | ||||
| } | ||||
| 
 | ||||
| char lcd_print_and_count(char c) { | ||||
| char lcd_print_and_count(const char c) { | ||||
|   if ((c > 0) && (c <= LCD_STR_SPECIAL_MAX)) { | ||||
|     u8g.setFont(FONT_SPECIAL_NAME); | ||||
|     u8g.print(c); | ||||
| @ -212,7 +220,7 @@ char lcd_print_and_count(char c) { | ||||
|   else return charset_mapper(c); | ||||
| } | ||||
| 
 | ||||
| void lcd_print(const char* str) { | ||||
| void lcd_print(const char* const str) { | ||||
|   for (uint8_t i = 0; char c = str[i]; ++i) lcd_print(c); | ||||
| } | ||||
| 
 | ||||
| @ -260,15 +268,15 @@ static void lcd_implementation_init() { | ||||
|       } | ||||
|     #endif // SHOW_CUSTOM_BOOTSCREEN
 | ||||
| 
 | ||||
|     int offx = (u8g.getWidth() - (START_BMPWIDTH)) / 2; | ||||
|     const uint8_t offx = (u8g.getWidth() - (START_BMPWIDTH)) / 2; | ||||
| 
 | ||||
|     #if ENABLED(START_BMPHIGH) | ||||
|       int offy = 0; | ||||
|       constexpr uint8_t offy = 0; | ||||
|     #else | ||||
|       int offy = DOG_CHAR_HEIGHT; | ||||
|       constexpr uint8_t offy = DOG_CHAR_HEIGHT; | ||||
|     #endif | ||||
| 
 | ||||
|     int txt1X = (u8g.getWidth() - (sizeof(STRING_SPLASH_LINE1) - 1) * (DOG_CHAR_WIDTH)) / 2; | ||||
|     const uint8_t txt1X = (u8g.getWidth() - (sizeof(STRING_SPLASH_LINE1) - 1) * (DOG_CHAR_WIDTH)) / 2; | ||||
| 
 | ||||
|     if (show_bootscreen) { | ||||
|       u8g.firstPage(); | ||||
| @ -278,7 +286,7 @@ static void lcd_implementation_init() { | ||||
|         #ifndef STRING_SPLASH_LINE2 | ||||
|           u8g.drawStr(txt1X, u8g.getHeight() - (DOG_CHAR_HEIGHT), STRING_SPLASH_LINE1); | ||||
|         #else | ||||
|           int txt2X = (u8g.getWidth() - (sizeof(STRING_SPLASH_LINE2) - 1) * (DOG_CHAR_WIDTH)) / 2; | ||||
|           const uint8_t txt2X = (u8g.getWidth() - (sizeof(STRING_SPLASH_LINE2) - 1) * (DOG_CHAR_WIDTH)) / 2; | ||||
|           u8g.drawStr(txt1X, u8g.getHeight() - (DOG_CHAR_HEIGHT) * 3 / 2, STRING_SPLASH_LINE1); | ||||
|           u8g.drawStr(txt2X, u8g.getHeight() - (DOG_CHAR_HEIGHT) * 1 / 2, STRING_SPLASH_LINE2); | ||||
|         #endif | ||||
| @ -307,25 +315,28 @@ static void lcd_implementation_clear() { } // Automatically cleared by Picture L | ||||
| // Status Screen
 | ||||
| //
 | ||||
| 
 | ||||
| FORCE_INLINE void _draw_centered_temp(int temp, int x, int y) { | ||||
|   int degsize = 6 * (temp >= 100 ? 3 : temp >= 10 ? 2 : 1); // number's pixel width
 | ||||
| FORCE_INLINE void _draw_centered_temp(const int temp, const uint8_t x, const uint8_t y) { | ||||
|   const uint8_t degsize = 6 * (temp >= 100 ? 3 : temp >= 10 ? 2 : 1); // number's pixel width
 | ||||
|   u8g.setPrintPos(x - (18 - degsize) / 2, y); // move left if shorter
 | ||||
|   lcd_print(itostr3(temp)); | ||||
|   lcd_printPGM(PSTR(LCD_STR_DEGREE " ")); | ||||
| } | ||||
| 
 | ||||
| FORCE_INLINE void _draw_heater_status(int x, int heater) { | ||||
| FORCE_INLINE void _draw_heater_status(const uint8_t x, const int8_t heater) { | ||||
|   #if HAS_TEMP_BED | ||||
|     bool isBed = heater < 0; | ||||
|   #else | ||||
|     const bool isBed = false; | ||||
|   #endif | ||||
| 
 | ||||
|   if (PAGE_UNDER(7)) | ||||
|     _draw_centered_temp((isBed ? thermalManager.degTargetBed() : thermalManager.degTargetHotend(heater)) + 0.5, x, 7); | ||||
| 
 | ||||
|   if (PAGE_CONTAINS(21, 28)) | ||||
|     _draw_centered_temp((isBed ? thermalManager.degBed() : thermalManager.degHotend(heater)) + 0.5, x, 28); | ||||
| 
 | ||||
|   int h = isBed ? 7 : 8, | ||||
|   if (PAGE_CONTAINS(17, 20)) { | ||||
|     const uint8_t h = isBed ? 7 : 8, | ||||
|                   y = isBed ? 18 : 17; | ||||
|     if (isBed ? thermalManager.isHeatingBed() : thermalManager.isHeatingHotend(heater)) { | ||||
|       u8g.setColorIndex(0); // white on black
 | ||||
| @ -336,8 +347,9 @@ FORCE_INLINE void _draw_heater_status(int x, int heater) { | ||||
|       u8g.drawBox(x + h, y, 2, 2); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| FORCE_INLINE void _draw_axis_label(AxisEnum axis, const char *pstr, bool blink) { | ||||
| FORCE_INLINE void _draw_axis_label(const AxisEnum axis, const char* const pstr, const bool blink) { | ||||
|   if (blink) | ||||
|     lcd_printPGM(pstr); | ||||
|   else { | ||||
| @ -357,11 +369,21 @@ FORCE_INLINE void _draw_axis_label(AxisEnum axis, const char *pstr, bool blink) | ||||
| //#define DOGM_SD_PERCENT
 | ||||
| 
 | ||||
| static void lcd_implementation_status_screen() { | ||||
|   u8g.setColorIndex(1); // black on white
 | ||||
| 
 | ||||
|   bool blink = lcd_blink(); | ||||
| 
 | ||||
|   // Symbols menu graphics, animated fan
 | ||||
|   // Black color, white background
 | ||||
|   u8g.setColorIndex(1); | ||||
| 
 | ||||
|   // Status Menu Font
 | ||||
|   lcd_setFont(FONT_STATUSMENU); | ||||
| 
 | ||||
|   //
 | ||||
|   // Fan Animation
 | ||||
|   //
 | ||||
| 
 | ||||
|   if (PAGE_UNDER(STATUS_SCREENHEIGHT + 1)) { | ||||
| 
 | ||||
|     u8g.drawBitmapP(9, 1, STATUS_SCREENBYTEWIDTH, STATUS_SCREENHEIGHT, | ||||
|       #if HAS_FAN0 | ||||
|         blink && fanSpeeds[0] ? status_screen0_bmp : status_screen1_bmp | ||||
| @ -370,48 +392,13 @@ static void lcd_implementation_status_screen() { | ||||
|       #endif | ||||
|     ); | ||||
| 
 | ||||
|   // Status Menu Font for SD info, Heater status, Fan, XYZ
 | ||||
|   lcd_setFont(FONT_STATUSMENU); | ||||
| 
 | ||||
|   #if ENABLED(SDSUPPORT) | ||||
|     // SD Card Symbol
 | ||||
|     u8g.drawBox(42, 42 - (TALL_FONT_CORRECTION), 8, 7); | ||||
|     u8g.drawBox(50, 44 - (TALL_FONT_CORRECTION), 2, 5); | ||||
|     u8g.drawFrame(42, 49 - (TALL_FONT_CORRECTION), 10, 4); | ||||
|     u8g.drawPixel(50, 43 - (TALL_FONT_CORRECTION)); | ||||
| 
 | ||||
|     // Progress bar frame
 | ||||
|     u8g.drawFrame(54, 49, 73, 4 - (TALL_FONT_CORRECTION)); | ||||
| 
 | ||||
|     // SD Card Progress bar and clock
 | ||||
|     if (IS_SD_PRINTING) { | ||||
|       // Progress bar solid part
 | ||||
|       u8g.drawBox(55, 50, (unsigned int)(71 * card.percentDone() * 0.01), 2 - (TALL_FONT_CORRECTION)); | ||||
|      | ||||
|       #if ENABLED(DOGM_SD_PERCENT) | ||||
|         // Percent complete
 | ||||
|         u8g.setPrintPos(55, 48); | ||||
|         u8g.print(itostr3(card.percentDone())); | ||||
|         u8g.print('%'); | ||||
|       #endif | ||||
|   } | ||||
| 
 | ||||
|     char buffer[10]; | ||||
|     duration_t elapsed = print_job_timer.duration(); | ||||
|     bool has_days = (elapsed.value > 60*60*24L); | ||||
|     elapsed.toDigital(buffer, has_days); | ||||
| 
 | ||||
|     #if DISABLED(DOGM_SD_PERCENT) | ||||
|       #define SD_DURATION_X 71 | ||||
|     #else | ||||
|       #define SD_DURATION_X 89 | ||||
|     #endif | ||||
| 
 | ||||
|     u8g.setPrintPos(SD_DURATION_X + (has_days ? 0 : 9), 48); | ||||
|     lcd_print(buffer); | ||||
| 
 | ||||
|   #endif | ||||
|   //
 | ||||
|   // Temperature Graphics and Info
 | ||||
|   //
 | ||||
| 
 | ||||
|   if (PAGE_UNDER(28)) { | ||||
|     // Extruders
 | ||||
|     HOTEND_LOOP() _draw_heater_status(5 + e * 25, e); | ||||
| 
 | ||||
| @ -420,6 +407,7 @@ static void lcd_implementation_status_screen() { | ||||
|       _draw_heater_status(81, -1); | ||||
|     #endif | ||||
| 
 | ||||
|     if (PAGE_CONTAINS(20, 27)) { | ||||
|       // Fan
 | ||||
|       u8g.setPrintPos(104, 27); | ||||
|       #if HAS_FAN0 | ||||
| @ -429,38 +417,159 @@ static void lcd_implementation_status_screen() { | ||||
|           u8g.print('%'); | ||||
|         } | ||||
|       #endif | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   #if ENABLED(SDSUPPORT) | ||||
| 
 | ||||
|     //
 | ||||
|     // SD Card Symbol
 | ||||
|     //
 | ||||
| 
 | ||||
|     if (PAGE_CONTAINS(42 - (TALL_FONT_CORRECTION), 51 - (TALL_FONT_CORRECTION))) { | ||||
|       // Upper box
 | ||||
|       u8g.drawBox(42, 42 - (TALL_FONT_CORRECTION), 8, 7);     // 42-48 (or 41-47)
 | ||||
|       // Right edge
 | ||||
|       u8g.drawBox(50, 44 - (TALL_FONT_CORRECTION), 2, 5);     // 44-48 (or 43-47)
 | ||||
|       // Bottom hollow box
 | ||||
|       u8g.drawFrame(42, 49 - (TALL_FONT_CORRECTION), 10, 4);  // 49-52 (or 48-51)
 | ||||
|       // Corner pixel
 | ||||
|       u8g.drawPixel(50, 43 - (TALL_FONT_CORRECTION));         // 43 (or 42)
 | ||||
|     } | ||||
| 
 | ||||
|     //
 | ||||
|     // Progress bar frame
 | ||||
|     //
 | ||||
| 
 | ||||
|     if (PAGE_CONTAINS(49, 52 - (TALL_FONT_CORRECTION))) | ||||
|       u8g.drawFrame(54, 49, 73, 4 - (TALL_FONT_CORRECTION));  // 49-52 (or 49-51)
 | ||||
| 
 | ||||
|     if (IS_SD_PRINTING) { | ||||
| 
 | ||||
|       //
 | ||||
|       // Progress bar solid part
 | ||||
|       //
 | ||||
| 
 | ||||
|       if (PAGE_CONTAINS(50, 51 - (TALL_FONT_CORRECTION))) | ||||
|         u8g.drawBox(55, 50, (unsigned int)(71 * card.percentDone() * 0.01), 2 - (TALL_FONT_CORRECTION)); | ||||
| 
 | ||||
|       //
 | ||||
|       // SD Percent Complete
 | ||||
|       //
 | ||||
| 
 | ||||
|       #if ENABLED(DOGM_SD_PERCENT) | ||||
|         if (PAGE_CONTAINS(41, 48)) { | ||||
|           // Percent complete
 | ||||
|           u8g.setPrintPos(55, 48); | ||||
|           u8g.print(itostr3(card.percentDone())); | ||||
|           u8g.print('%'); | ||||
|         } | ||||
|       #endif | ||||
|     } | ||||
| 
 | ||||
|     //
 | ||||
|     // Elapsed Time
 | ||||
|     //
 | ||||
| 
 | ||||
|     #if DISABLED(DOGM_SD_PERCENT) | ||||
|       #define SD_DURATION_X 71 | ||||
|     #else | ||||
|       #define SD_DURATION_X 89 | ||||
|     #endif | ||||
| 
 | ||||
|     if (PAGE_CONTAINS(41, 48)) { | ||||
| 
 | ||||
|       char buffer[10]; | ||||
|       duration_t elapsed = print_job_timer.duration(); | ||||
|       bool has_days = (elapsed.value > 60*60*24L); | ||||
|       elapsed.toDigital(buffer, has_days); | ||||
| 
 | ||||
|       u8g.setPrintPos(SD_DURATION_X + (has_days ? 0 : 9), 48); | ||||
|       lcd_print(buffer); | ||||
|     } | ||||
| 
 | ||||
|   #endif | ||||
| 
 | ||||
|   //
 | ||||
|   // XYZ Coordinates
 | ||||
|   //
 | ||||
| 
 | ||||
|   #if ENABLED(USE_SMALL_INFOFONT) | ||||
|     #define INFO_FONT_HEIGHT 7 | ||||
|   #else | ||||
|     #define INFO_FONT_HEIGHT 8 | ||||
|   #endif | ||||
| 
 | ||||
|   #define XYZ_BASELINE (30 + INFO_FONT_HEIGHT) | ||||
| 
 | ||||
|   #define X_LABEL_POS  3 | ||||
|   #define X_VALUE_POS 11 | ||||
|   #define XYZ_SPACING 40 | ||||
| 
 | ||||
|   // Enable to save many cycles by drawing a hollow frame
 | ||||
|   #define XYZ_HOLLOW_FRAME | ||||
| 
 | ||||
|   #if ENABLED(XYZ_HOLLOW_FRAME) | ||||
|     #define XYZ_FRAME_TOP 29 | ||||
|     #define XYZ_FRAME_HEIGHT INFO_FONT_HEIGHT + 3 | ||||
|   #else | ||||
|     #define XYZ_FRAME_TOP 30 | ||||
|     #define XYZ_FRAME_HEIGHT INFO_FONT_HEIGHT + 2 | ||||
|   #endif | ||||
| 
 | ||||
|   // X, Y, Z-Coordinates
 | ||||
|   // Before homing the axis letters are blinking 'X' <-> '?'.
 | ||||
|   // When axis is homed but axis_known_position is false the axis letters are blinking 'X' <-> ' '.
 | ||||
|   // When everything is ok you see a constant 'X'.
 | ||||
|   #define XYZ_BASELINE 38 | ||||
| 
 | ||||
|   #if ENABLED(USE_SMALL_INFOFONT) | ||||
|     u8g.drawBox(0, 30, LCD_PIXEL_WIDTH, 10); | ||||
|   static char xstring[5], ystring[5], zstring[7]; | ||||
| 
 | ||||
|   // At the first page, regenerate the XYZ strings
 | ||||
|   if (page.page == 0) { | ||||
|     strcpy(xstring, ftostr4sign(current_position[X_AXIS])); | ||||
|     strcpy(ystring, ftostr4sign(current_position[Y_AXIS])); | ||||
|     strcpy(zstring, ftostr52sp(current_position[Z_AXIS] + 0.00001)); | ||||
|   } | ||||
| 
 | ||||
|   if (PAGE_CONTAINS(XYZ_FRAME_TOP, XYZ_FRAME_TOP + XYZ_FRAME_HEIGHT - 1)) { | ||||
| 
 | ||||
|     #if ENABLED(XYZ_HOLLOW_FRAME) | ||||
|       u8g.drawFrame(0, XYZ_FRAME_TOP, LCD_PIXEL_WIDTH, XYZ_FRAME_HEIGHT); // 8: 29-40  7: 29-39
 | ||||
|     #else | ||||
|     u8g.drawBox(0, 30, LCD_PIXEL_WIDTH, 9); | ||||
|       u8g.drawBox(0, XYZ_FRAME_TOP, LCD_PIXEL_WIDTH, XYZ_FRAME_HEIGHT);   // 8: 30-39  7: 30-37
 | ||||
|     #endif | ||||
| 
 | ||||
|     if (PAGE_CONTAINS(XYZ_BASELINE - (INFO_FONT_HEIGHT - 1), XYZ_BASELINE)) { | ||||
| 
 | ||||
|       #if DISABLED(XYZ_HOLLOW_FRAME) | ||||
|         u8g.setColorIndex(0); // white on black
 | ||||
|       #endif | ||||
| 
 | ||||
|   u8g.setPrintPos(2, XYZ_BASELINE); | ||||
|       u8g.setPrintPos(0 * XYZ_SPACING + X_LABEL_POS, XYZ_BASELINE); | ||||
|       _draw_axis_label(X_AXIS, PSTR(MSG_X), blink); | ||||
|   u8g.setPrintPos(10, XYZ_BASELINE); | ||||
|   lcd_print(ftostr4sign(current_position[X_AXIS])); | ||||
|       u8g.setPrintPos(0 * XYZ_SPACING + X_VALUE_POS, XYZ_BASELINE); | ||||
|       lcd_print(xstring); | ||||
| 
 | ||||
|   u8g.setPrintPos(43, XYZ_BASELINE); | ||||
|       u8g.setPrintPos(1 * XYZ_SPACING + X_LABEL_POS, XYZ_BASELINE); | ||||
|       _draw_axis_label(Y_AXIS, PSTR(MSG_Y), blink); | ||||
|   u8g.setPrintPos(51, XYZ_BASELINE); | ||||
|   lcd_print(ftostr4sign(current_position[Y_AXIS])); | ||||
|       u8g.setPrintPos(1 * XYZ_SPACING + X_VALUE_POS, XYZ_BASELINE); | ||||
|       lcd_print(ystring); | ||||
| 
 | ||||
|   u8g.setPrintPos(83, XYZ_BASELINE); | ||||
|       u8g.setPrintPos(2 * XYZ_SPACING + X_LABEL_POS, XYZ_BASELINE); | ||||
|       _draw_axis_label(Z_AXIS, PSTR(MSG_Z), blink); | ||||
|   u8g.setPrintPos(91, XYZ_BASELINE); | ||||
|   lcd_print(ftostr52sp(current_position[Z_AXIS] + 0.00001)); | ||||
|       u8g.setPrintPos(2 * XYZ_SPACING + X_VALUE_POS, XYZ_BASELINE); | ||||
|       lcd_print(zstring); | ||||
| 
 | ||||
|       #if DISABLED(XYZ_HOLLOW_FRAME) | ||||
|         u8g.setColorIndex(1); // black on white
 | ||||
|       #endif | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   //
 | ||||
|   // Feedrate
 | ||||
|   //
 | ||||
| 
 | ||||
|   if (PAGE_CONTAINS(50 - INFO_FONT_HEIGHT, 49)) { | ||||
|     lcd_setFont(FONT_MENU); | ||||
|     u8g.setPrintPos(3, 49); | ||||
|     lcd_print(LCD_STR_FEEDRATE[0]); | ||||
| @ -469,13 +578,17 @@ static void lcd_implementation_status_screen() { | ||||
|     u8g.setPrintPos(12, 49); | ||||
|     lcd_print(itostr3(feedrate_percentage)); | ||||
|     u8g.print('%'); | ||||
|   } | ||||
| 
 | ||||
|   //
 | ||||
|   // Status line
 | ||||
|   #if ENABLED(USE_SMALL_INFOFONT) | ||||
|     u8g.setPrintPos(0, 62); | ||||
|   #else | ||||
|     u8g.setPrintPos(0, 63); | ||||
|   #endif | ||||
|   //
 | ||||
| 
 | ||||
|   #define STATUS_BASELINE (54 + INFO_FONT_HEIGHT) | ||||
| 
 | ||||
|   if (PAGE_CONTAINS(STATUS_BASELINE + 1 - INFO_FONT_HEIGHT, STATUS_BASELINE)) { | ||||
|     u8g.setPrintPos(0, STATUS_BASELINE); | ||||
| 
 | ||||
|     #if DISABLED(FILAMENT_LCD_DISPLAY) | ||||
|       lcd_print(lcd_status_message); | ||||
|     #else | ||||
| @ -491,29 +604,40 @@ static void lcd_implementation_status_screen() { | ||||
|       } | ||||
|     #endif | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| #if ENABLED(ULTIPANEL) | ||||
| 
 | ||||
|   uint8_t row_y1, row_y2; | ||||
| 
 | ||||
|   // Set the colors for a menu item based on whether it is selected
 | ||||
|   static void lcd_implementation_mark_as_selected(uint8_t row, bool isSelected) { | ||||
|   static void lcd_implementation_mark_as_selected(const uint8_t row, const bool isSelected) { | ||||
| 
 | ||||
|     row_y1 = row * (DOG_CHAR_HEIGHT) + 1; | ||||
|     row_y2 = row_y1 + (DOG_CHAR_HEIGHT) - 1; | ||||
| 
 | ||||
|     if (!PAGE_CONTAINS(row_y1 + 2 - (TALL_FONT_CORRECTION), row_y2 + 2 - (TALL_FONT_CORRECTION))) return; | ||||
| 
 | ||||
|     if (isSelected) { | ||||
|       u8g.setColorIndex(1);  // black on white
 | ||||
|       u8g.drawBox(0, row * (DOG_CHAR_HEIGHT) + 3 - (TALL_FONT_CORRECTION), LCD_PIXEL_WIDTH, DOG_CHAR_HEIGHT); | ||||
|       u8g.drawBox(0, row_y1 + 2 - (TALL_FONT_CORRECTION), LCD_PIXEL_WIDTH, DOG_CHAR_HEIGHT); | ||||
|       u8g.setColorIndex(0);  // following text must be white on black
 | ||||
|     } | ||||
|     else { | ||||
|       u8g.setColorIndex(1); // unmarked text is black on white
 | ||||
|     } | ||||
|     u8g.setPrintPos((START_COL) * (DOG_CHAR_WIDTH), (row + 1) * (DOG_CHAR_HEIGHT)); | ||||
|     u8g.setPrintPos((START_COL) * (DOG_CHAR_WIDTH), row_y2); | ||||
|   } | ||||
| 
 | ||||
|   #if ENABLED(LCD_INFO_MENU) || ENABLED(FILAMENT_CHANGE_FEATURE) | ||||
| 
 | ||||
|     // Draw a static line of text in the same idiom as a menu item
 | ||||
|     static void lcd_implementation_drawmenu_static(uint8_t row, const char* pstr, bool center=true, bool invert=false, const char* valstr=NULL) { | ||||
|     static void lcd_implementation_drawmenu_static(const uint8_t row, const char* pstr, const bool center=true, const bool invert=false, const char* valstr=NULL) { | ||||
| 
 | ||||
|       lcd_implementation_mark_as_selected(row, invert); | ||||
| 
 | ||||
|       if (!PAGE_CONTAINS(row_y1, row_y2)) return; | ||||
| 
 | ||||
|       char c; | ||||
|       int8_t n = LCD_WIDTH - (START_COL); | ||||
| 
 | ||||
| @ -535,20 +659,20 @@ static void lcd_implementation_status_screen() { | ||||
|   #endif // LCD_INFO_MENU || FILAMENT_CHANGE_FEATURE
 | ||||
| 
 | ||||
|   // Draw a generic menu item
 | ||||
|   static void lcd_implementation_drawmenu_generic(bool isSelected, uint8_t row, const char* pstr, char pre_char, char post_char) { | ||||
|   static void lcd_implementation_drawmenu_generic(const bool isSelected, const uint8_t row, const char* pstr, const char pre_char, const char post_char) { | ||||
|     UNUSED(pre_char); | ||||
| 
 | ||||
|     char c; | ||||
|     uint8_t n = LCD_WIDTH - (START_COL) - 2; | ||||
| 
 | ||||
|     lcd_implementation_mark_as_selected(row, isSelected); | ||||
| 
 | ||||
|     while (c = pgm_read_byte(pstr)) { | ||||
|     if (!PAGE_CONTAINS(row_y1, row_y2)) return; | ||||
| 
 | ||||
|     uint8_t n = LCD_WIDTH - (START_COL) - 2; | ||||
|     while (char c = pgm_read_byte(pstr)) { | ||||
|       n -= lcd_print_and_count(c); | ||||
|       pstr++; | ||||
|     } | ||||
|     while (n--) u8g.print(' '); | ||||
|     u8g.setPrintPos(LCD_PIXEL_WIDTH - (DOG_CHAR_WIDTH), (row + 1) * (DOG_CHAR_HEIGHT)); | ||||
|     u8g.setPrintPos(LCD_PIXEL_WIDTH - (DOG_CHAR_WIDTH), row_y2); | ||||
|     lcd_print(post_char); | ||||
|     u8g.print(' '); | ||||
|   } | ||||
| @ -560,20 +684,22 @@ static void lcd_implementation_status_screen() { | ||||
|   #define lcd_implementation_drawmenu_function(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', ' ') | ||||
| 
 | ||||
|   // Draw a menu item with an editable value
 | ||||
|   static void _drawmenu_setting_edit_generic(bool isSelected, uint8_t row, const char* pstr, const char* data, bool pgm) { | ||||
|     char c; | ||||
|     uint8_t vallen = (pgm ? lcd_strlen_P(data) : (lcd_strlen((char*)data))); | ||||
|     uint8_t n = LCD_WIDTH - (START_COL) - 2 - vallen; | ||||
|   static void _drawmenu_setting_edit_generic(const bool isSelected, const uint8_t row, const char* pstr, const char* const data, const bool pgm) { | ||||
| 
 | ||||
|     lcd_implementation_mark_as_selected(row, isSelected); | ||||
| 
 | ||||
|     while (c = pgm_read_byte(pstr)) { | ||||
|     if (!PAGE_CONTAINS(row_y1, row_y2)) return; | ||||
| 
 | ||||
|     const uint8_t vallen = (pgm ? lcd_strlen_P(data) : (lcd_strlen((char*)data))); | ||||
|     uint8_t n = LCD_WIDTH - (START_COL) - 2 - vallen; | ||||
| 
 | ||||
|     while (char c = pgm_read_byte(pstr)) { | ||||
|       n -= lcd_print_and_count(c); | ||||
|       pstr++; | ||||
|     } | ||||
|     u8g.print(':'); | ||||
|     while (n--) u8g.print(' '); | ||||
|     u8g.setPrintPos(LCD_PIXEL_WIDTH - (DOG_CHAR_WIDTH) * vallen, (row + 1) * (DOG_CHAR_HEIGHT)); | ||||
|     u8g.setPrintPos(LCD_PIXEL_WIDTH - (DOG_CHAR_WIDTH) * vallen, row_y2); | ||||
|     if (pgm)  lcd_printPGM(data);  else  lcd_print((char*)data); | ||||
|   } | ||||
| 
 | ||||
| @ -603,53 +729,65 @@ static void lcd_implementation_status_screen() { | ||||
|   #define lcd_implementation_drawmenu_setting_edit_callback_long5(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, ftostr5rj(*(data))) | ||||
|   #define lcd_implementation_drawmenu_setting_edit_callback_bool(sel, row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(sel, row, pstr, (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF)) | ||||
| 
 | ||||
|   void lcd_implementation_drawedit(const char* pstr, const char* value=NULL) { | ||||
|     uint8_t rows = 1; | ||||
|     uint8_t lcd_width = LCD_WIDTH - (START_COL), char_width = DOG_CHAR_WIDTH; | ||||
|     uint8_t vallen = lcd_strlen(value); | ||||
|   void lcd_implementation_drawedit(const char* const pstr, const char* const value=NULL) { | ||||
|     const uint8_t labellen = lcd_strlen_P(pstr), vallen = lcd_strlen(value); | ||||
|     uint8_t lcd_width, char_width, | ||||
|             rows = (labellen > LCD_WIDTH - 2 - vallen) ? 2 : 1; | ||||
| 
 | ||||
|     #if ENABLED(USE_BIG_EDIT_FONT) | ||||
|       if (lcd_strlen_P(pstr) <= LCD_WIDTH_EDIT - 1) { | ||||
|         lcd_setFont(FONT_MENU_EDIT); | ||||
|       if (labellen <= LCD_WIDTH_EDIT - 1) { | ||||
|         if (labellen >= LCD_WIDTH_EDIT - vallen) rows = 2; | ||||
|         lcd_width = LCD_WIDTH_EDIT + 1; | ||||
|         char_width = DOG_CHAR_WIDTH_EDIT; | ||||
|         if (lcd_strlen_P(pstr) >= LCD_WIDTH_EDIT - vallen) rows = 2; | ||||
|         lcd_setFont(FONT_MENU_EDIT); | ||||
|       } | ||||
|       else { | ||||
|         lcd_width = LCD_WIDTH - (START_COL); | ||||
|         char_width = DOG_CHAR_WIDTH; | ||||
|         lcd_setFont(FONT_MENU); | ||||
|       } | ||||
|     #else | ||||
|       lcd_width = LCD_WIDTH - (START_COL); | ||||
|       char_width = DOG_CHAR_WIDTH; | ||||
|     #endif | ||||
| 
 | ||||
|     if (lcd_strlen_P(pstr) > LCD_WIDTH - 2 - vallen) rows = 2; | ||||
|     // Center either one or two rows
 | ||||
|     const uint8_t segmentHeight = u8g.getHeight() / (rows + 1); // 1 / (rows+1) = 1/2 or 1/3
 | ||||
|     uint8_t baseline = segmentHeight + (DOG_CHAR_HEIGHT_EDIT + 1) / 2; | ||||
| 
 | ||||
|     const float kHalfChar = (DOG_CHAR_HEIGHT_EDIT) / 2; | ||||
|     float rowHeight = u8g.getHeight() / (rows + 1); // 1/(rows+1) = 1/2 or 1/3
 | ||||
| 
 | ||||
|     u8g.setPrintPos(0, rowHeight + kHalfChar); | ||||
|     if (PAGE_CONTAINS(baseline + 1 - (DOG_CHAR_HEIGHT_EDIT), baseline)) { | ||||
|       u8g.setPrintPos(0, baseline); | ||||
|       lcd_printPGM(pstr); | ||||
|     } | ||||
| 
 | ||||
|     if (value != NULL) { | ||||
|       baseline += (rows - 1) * segmentHeight; | ||||
|       if (PAGE_CONTAINS(baseline + 1 - (DOG_CHAR_HEIGHT_EDIT), baseline)) { | ||||
|         u8g.print(':'); | ||||
|       u8g.setPrintPos((lcd_width - 1 - vallen) * char_width, rows * rowHeight + kHalfChar); | ||||
|         u8g.setPrintPos((lcd_width - 1 - vallen) * char_width, baseline); | ||||
|         lcd_print(value); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   #if ENABLED(SDSUPPORT) | ||||
| 
 | ||||
|     static void _drawmenu_sd(bool isSelected, uint8_t row, const char* pstr, const char* filename, char* const longFilename, bool isDir) { | ||||
|     static void _drawmenu_sd(const bool isSelected, const uint8_t row, const char* const pstr, const char* filename, char* const longFilename, const bool isDir) { | ||||
|       UNUSED(pstr); | ||||
|       char c; | ||||
|       uint8_t n = LCD_WIDTH - (START_COL) - 1; | ||||
| 
 | ||||
|       lcd_implementation_mark_as_selected(row, isSelected); | ||||
| 
 | ||||
|       if (!PAGE_CONTAINS(row_y1, row_y2)) return; | ||||
| 
 | ||||
|       uint8_t n = LCD_WIDTH - (START_COL) - 1; | ||||
|       if (longFilename[0]) { | ||||
|         filename = longFilename; | ||||
|         longFilename[n] = '\0'; | ||||
|       } | ||||
| 
 | ||||
|       lcd_implementation_mark_as_selected(row, isSelected); | ||||
| 
 | ||||
|       if (isDir) lcd_print(LCD_STR_FOLDER[0]); | ||||
|       while ((c = *filename)) { | ||||
| 
 | ||||
|       while (char c = *filename) { | ||||
|         n -= lcd_print_and_count(c); | ||||
|         filename++; | ||||
|       } | ||||
|  | ||||
| @ -195,7 +195,7 @@ extern volatile uint8_t buttons;  //an extended version of the last checked butt | ||||
| 
 | ||||
| static void lcd_set_custom_characters( | ||||
|   #if ENABLED(LCD_PROGRESS_BAR) | ||||
|     bool info_screen_charset = true | ||||
|     const bool info_screen_charset = true | ||||
|   #endif | ||||
| ) { | ||||
|   static byte bedTemp[8] = { | ||||
| @ -341,7 +341,7 @@ static void lcd_set_custom_characters( | ||||
| 
 | ||||
| static void lcd_implementation_init( | ||||
|   #if ENABLED(LCD_PROGRESS_BAR) | ||||
|     bool info_screen_charset = true | ||||
|     const bool info_screen_charset = true | ||||
|   #endif | ||||
| ) { | ||||
| 
 | ||||
| @ -385,7 +385,7 @@ void lcd_printPGM(const char *str) { | ||||
|   for (; char c = pgm_read_byte(str); ++str) charset_mapper(c); | ||||
| } | ||||
| 
 | ||||
| void lcd_print(const char* str) { | ||||
| void lcd_print(const char* const str) { | ||||
|   for (uint8_t i = 0; char c = str[i]; ++i) charset_mapper(c); | ||||
| } | ||||
| 
 | ||||
| @ -393,14 +393,14 @@ void lcd_print(char c) { charset_mapper(c); } | ||||
| 
 | ||||
| #if ENABLED(SHOW_BOOTSCREEN) | ||||
| 
 | ||||
|   void lcd_erase_line(int line) { | ||||
|   void lcd_erase_line(const int line) { | ||||
|     lcd.setCursor(0, line); | ||||
|     for (int i = 0; i < LCD_WIDTH; i++) | ||||
|     for (uint8_t i = LCD_WIDTH + 1; --i;) | ||||
|       lcd_print(' '); | ||||
|   } | ||||
| 
 | ||||
|   // Scroll the PSTR 'text' in a 'len' wide field for 'time' milliseconds at position col,line
 | ||||
|   void lcd_scroll(int col, int line, const char* text, int len, int time) { | ||||
|   void lcd_scroll(const int col, const int line, const char* const text, const int len, const int time) { | ||||
|     char tmp[LCD_WIDTH + 1] = {0}; | ||||
|     int n = max(lcd_strlen_P(text) - len, 0); | ||||
|     for (int i = 0; i <= n; i++) { | ||||
| @ -411,7 +411,7 @@ void lcd_print(char c) { charset_mapper(c); } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   static void logo_lines(const char *extra) { | ||||
|   static void logo_lines(const char* const extra) { | ||||
|     int indent = (LCD_WIDTH - 8 - lcd_strlen_P(extra)) / 2; | ||||
|     lcd.setCursor(indent, 0); lcd.print('\x00'); lcd_printPGM(PSTR( "------" ));  lcd.print('\x01'); | ||||
|     lcd.setCursor(indent, 1);                    lcd_printPGM(PSTR("|Marlin|"));  lcd_printPGM(extra); | ||||
| @ -552,7 +552,7 @@ void lcd_kill_screen() { | ||||
|   lcd_printPGM(PSTR(MSG_PLEASE_RESET)); | ||||
| } | ||||
| 
 | ||||
| FORCE_INLINE void _draw_axis_label(AxisEnum axis, const char *pstr, bool blink) { | ||||
| FORCE_INLINE void _draw_axis_label(const AxisEnum axis, const char* const pstr, const bool blink) { | ||||
|   if (blink) | ||||
|     lcd_printPGM(pstr); | ||||
|   else { | ||||
| @ -794,7 +794,7 @@ static void lcd_implementation_status_screen() { | ||||
| 
 | ||||
|   #if ENABLED(LCD_INFO_MENU) || ENABLED(FILAMENT_CHANGE_FEATURE) | ||||
| 
 | ||||
|     static void lcd_implementation_drawmenu_static(uint8_t row, const char* pstr, bool center=true, bool invert=false, const char *valstr=NULL) { | ||||
|     static void lcd_implementation_drawmenu_static(const uint8_t row, const char* pstr, const bool center=true, const bool invert=false, const char *valstr=NULL) { | ||||
|       UNUSED(invert); | ||||
|       char c; | ||||
|       int8_t n = LCD_WIDTH; | ||||
| @ -816,7 +816,7 @@ static void lcd_implementation_status_screen() { | ||||
| 
 | ||||
|   #endif // LCD_INFO_MENU || FILAMENT_CHANGE_FEATURE
 | ||||
| 
 | ||||
|   static void lcd_implementation_drawmenu_generic(bool sel, uint8_t row, const char* pstr, char pre_char, char post_char) { | ||||
|   static void lcd_implementation_drawmenu_generic(const bool sel, const uint8_t row, const char* pstr, const char pre_char, const char post_char) { | ||||
|     char c; | ||||
|     uint8_t n = LCD_WIDTH - 2; | ||||
|     lcd.setCursor(0, row); | ||||
| @ -829,7 +829,7 @@ static void lcd_implementation_status_screen() { | ||||
|     lcd.print(post_char); | ||||
|   } | ||||
| 
 | ||||
|   static void lcd_implementation_drawmenu_setting_edit_generic(bool sel, uint8_t row, const char* pstr, char pre_char, char* data) { | ||||
|   static void lcd_implementation_drawmenu_setting_edit_generic(const bool sel, const uint8_t row, const char* pstr, const char pre_char, const char* const data) { | ||||
|     char c; | ||||
|     uint8_t n = LCD_WIDTH - 2 - lcd_strlen(data); | ||||
|     lcd.setCursor(0, row); | ||||
| @ -842,7 +842,7 @@ static void lcd_implementation_status_screen() { | ||||
|     while (n--) lcd.print(' '); | ||||
|     lcd_print(data); | ||||
|   } | ||||
|   static void lcd_implementation_drawmenu_setting_edit_generic_P(bool sel, uint8_t row, const char* pstr, char pre_char, const char* data) { | ||||
|   static void lcd_implementation_drawmenu_setting_edit_generic_P(const bool sel, const uint8_t row, const char* pstr, const char pre_char, const char* const data) { | ||||
|     char c; | ||||
|     uint8_t n = LCD_WIDTH - 2 - lcd_strlen_P(data); | ||||
|     lcd.setCursor(0, row); | ||||
| @ -879,7 +879,7 @@ static void lcd_implementation_status_screen() { | ||||
|   #define lcd_implementation_drawmenu_setting_edit_callback_long5(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr5rj(*(data))) | ||||
|   #define lcd_implementation_drawmenu_setting_edit_callback_bool(sel, row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(sel, row, pstr, '>', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF)) | ||||
| 
 | ||||
|   void lcd_implementation_drawedit(const char* pstr, const char* value=NULL) { | ||||
|   void lcd_implementation_drawedit(const char* pstr, const char* const value=NULL) { | ||||
|     lcd.setCursor(1, 1); | ||||
|     lcd_printPGM(pstr); | ||||
|     if (value != NULL) { | ||||
| @ -891,7 +891,7 @@ static void lcd_implementation_status_screen() { | ||||
| 
 | ||||
|   #if ENABLED(SDSUPPORT) | ||||
| 
 | ||||
|     static void lcd_implementation_drawmenu_sd(bool sel, uint8_t row, const char* pstr, const char* filename, char* longFilename, uint8_t concat, char post_char) { | ||||
|     static void lcd_implementation_drawmenu_sd(const bool sel, const uint8_t row, const char* const pstr, const char* filename, char* const longFilename, const uint8_t concat, const char post_char) { | ||||
|       UNUSED(pstr); | ||||
|       char c; | ||||
|       uint8_t n = LCD_WIDTH - concat; | ||||
| @ -909,11 +909,11 @@ static void lcd_implementation_status_screen() { | ||||
|       lcd.print(post_char); | ||||
|     } | ||||
| 
 | ||||
|     static void lcd_implementation_drawmenu_sdfile(bool sel, uint8_t row, const char* pstr, const char* filename, char* longFilename) { | ||||
|     static void lcd_implementation_drawmenu_sdfile(const bool sel, const uint8_t row, const char* pstr, const char* filename, char* const longFilename) { | ||||
|       lcd_implementation_drawmenu_sd(sel, row, pstr, filename, longFilename, 2, ' '); | ||||
|     } | ||||
| 
 | ||||
|     static void lcd_implementation_drawmenu_sddirectory(bool sel, uint8_t row, const char* pstr, const char* filename, char* longFilename) { | ||||
|     static void lcd_implementation_drawmenu_sddirectory(const bool sel, const uint8_t row, const char* pstr, const char* filename, char* const longFilename) { | ||||
|       lcd_implementation_drawmenu_sd(sel, row, pstr, filename, longFilename, 2, LCD_STR_FOLDER[0]); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -106,12 +106,18 @@ static void ST7920_SWSPI_SND_8BIT(uint8_t val) { | ||||
|   ST7920_SND_BIT; // 8
 | ||||
| } | ||||
| 
 | ||||
| #define ST7920_CS()              {WRITE(ST7920_CS_PIN,1);u8g_10MicroDelay();} | ||||
| #if defined(DOGM_SPI_DELAY_US) && DOGM_SPI_DELAY_US > 0 | ||||
|   #define U8G_DELAY() delayMicroseconds(DOGM_SPI_DELAY_US) | ||||
| #else | ||||
|   #define U8G_DELAY() u8g_10MicroDelay() | ||||
| #endif | ||||
| 
 | ||||
| #define ST7920_CS()              { WRITE(ST7920_CS_PIN,1); U8G_DELAY(); } | ||||
| #define ST7920_NCS()             { WRITE(ST7920_CS_PIN,0); } | ||||
| #define ST7920_SET_CMD()         {ST7920_SWSPI_SND_8BIT(0xf8);u8g_10MicroDelay();} | ||||
| #define ST7920_SET_DAT()         {ST7920_SWSPI_SND_8BIT(0xfa);u8g_10MicroDelay();} | ||||
| #define ST7920_WRITE_BYTE(a)     {ST7920_SWSPI_SND_8BIT((uint8_t)((a)&0xf0u));ST7920_SWSPI_SND_8BIT((uint8_t)((a)<<4u));u8g_10MicroDelay();} | ||||
| #define ST7920_WRITE_BYTES(p,l)  {uint8_t i;for(i=0;i<l;i++){ST7920_SWSPI_SND_8BIT(*p&0xf0);ST7920_SWSPI_SND_8BIT(*p<<4);p++;}u8g_10MicroDelay();} | ||||
| #define ST7920_SET_CMD()         { ST7920_SWSPI_SND_8BIT(0xf8); U8G_DELAY(); } | ||||
| #define ST7920_SET_DAT()         { ST7920_SWSPI_SND_8BIT(0xfa); U8G_DELAY(); } | ||||
| #define ST7920_WRITE_BYTE(a)     { ST7920_SWSPI_SND_8BIT((uint8_t)((a)&0xf0u)); ST7920_SWSPI_SND_8BIT((uint8_t)((a)<<4u)); U8G_DELAY(); } | ||||
| #define ST7920_WRITE_BYTES(p,l)  { for (uint8_t i = l + 1; --i;) { ST7920_SWSPI_SND_8BIT(*p&0xf0); ST7920_SWSPI_SND_8BIT(*p<<4); p++; } U8G_DELAY(); } | ||||
| 
 | ||||
| uint8_t u8g_dev_rrd_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) { | ||||
|   uint8_t i, y; | ||||
|  | ||||
| @ -150,7 +150,7 @@ | ||||
| 
 | ||||
| #if ENABLED(MAPPER_C2C3) | ||||
| 
 | ||||
|   char charset_mapper(char c) { | ||||
|   char charset_mapper(const char c) { | ||||
|     static uint8_t utf_hi_char; // UTF-8 high part
 | ||||
|     static bool seen_c2 = false; | ||||
|     uint8_t d = c; | ||||
| @ -181,7 +181,7 @@ | ||||
| 
 | ||||
| #elif ENABLED(MAPPER_CECF) | ||||
| 
 | ||||
|   char charset_mapper(char c) { | ||||
|   char charset_mapper(const char c) { | ||||
|     static uint8_t utf_hi_char; // UTF-8 high part
 | ||||
|     static bool seen_ce = false; | ||||
|     uint8_t d = c; | ||||
| @ -212,7 +212,7 @@ | ||||
| 
 | ||||
| #elif ENABLED(MAPPER_CECF) | ||||
| 
 | ||||
|   char charset_mapper(char c) { | ||||
|   char charset_mapper(const char c) { | ||||
|     static uint8_t utf_hi_char; // UTF-8 high part
 | ||||
|     static bool seen_ce = false; | ||||
|     uint8_t d = c; | ||||
| @ -243,7 +243,7 @@ | ||||
| 
 | ||||
| #elif ENABLED(MAPPER_D0D1_MOD) | ||||
| 
 | ||||
|   char charset_mapper(char c) { | ||||
|   char charset_mapper(const char c) { | ||||
|     // it is a Russian alphabet translation
 | ||||
|     // except 0401 --> 0xa2 = Ё, 0451 --> 0xb5 = ё
 | ||||
|     static uint8_t utf_hi_char; // UTF-8 high part
 | ||||
| @ -280,7 +280,7 @@ | ||||
| 
 | ||||
| #elif ENABLED(MAPPER_D0D1) | ||||
| 
 | ||||
|   char charset_mapper(char c) { | ||||
|   char charset_mapper(const char c) { | ||||
|     static uint8_t utf_hi_char; // UTF-8 high part
 | ||||
|     static bool seen_d5 = false; | ||||
|     uint8_t d = c; | ||||
| @ -311,7 +311,7 @@ | ||||
| 
 | ||||
| #elif ENABLED(MAPPER_E382E383) | ||||
| 
 | ||||
|   char charset_mapper(char c) { | ||||
|   char charset_mapper(const char c) { | ||||
|     static uint8_t utf_hi_char; // UTF-8 high part
 | ||||
|     static bool seen_e3 = false; | ||||
|     static bool seen_82_83 = false; | ||||
| @ -350,7 +350,7 @@ | ||||
| 
 | ||||
|   #define MAPPER_NON | ||||
| 
 | ||||
|   char charset_mapper(char c) { | ||||
|   char charset_mapper(const char c) { | ||||
|     HARDWARE_CHAR_OUT( c ); | ||||
|     return 1; | ||||
|   } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user