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
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -460,15 +460,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -460,15 +460,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -460,15 +460,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -460,15 +460,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
#define USE_SMALL_INFOFONT
|
#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -473,15 +473,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -460,15 +460,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -460,15 +460,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -460,15 +460,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -468,15 +468,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -460,15 +460,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -462,15 +462,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -462,15 +462,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -462,15 +462,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -467,15 +467,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -462,15 +462,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -460,15 +460,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -460,15 +460,19 @@
|
|||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
// for dogm lcd displays you can choose some additional fonts:
|
// Some additional options are available for graphical displays:
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
|
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
|
||||||
// we don't have a big font for Cyrillic, Kana
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_BIG_EDIT_FONT
|
//#define USE_BIG_EDIT_FONT
|
||||||
|
|
||||||
// If you have spare 2300Byte of progmem and want to use a
|
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
|
||||||
// smaller font on the Info-screen uncomment the next line.
|
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
|
||||||
//#define USE_SMALL_INFOFONT
|
//#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
|
#endif // DOGLCD
|
||||||
|
|
||||||
// @section safety
|
// @section safety
|
||||||
|
@ -276,7 +276,13 @@
|
|||||||
|
|
||||||
#include INCLUDE_LANGUAGE
|
#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.
|
#define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -2250,7 +2250,7 @@ void kill_screen(const char* lcd_msg) {
|
|||||||
END_SCREEN();
|
END_SCREEN();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_filament_change_show_message(FilamentChangeMessage message) {
|
void lcd_filament_change_show_message(const FilamentChangeMessage message) {
|
||||||
switch (message) {
|
switch (message) {
|
||||||
case FILAMENT_CHANGE_MESSAGE_INIT:
|
case FILAMENT_CHANGE_MESSAGE_INIT:
|
||||||
defer_return_to_status = true;
|
defer_return_to_status = true;
|
||||||
@ -2849,20 +2849,20 @@ void lcd_finishstatus(bool persist=false) {
|
|||||||
|
|
||||||
bool lcd_hasstatus() { return (lcd_status_message[0] != '\0'); }
|
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;
|
if (lcd_status_message_level > 0) return;
|
||||||
strncpy(lcd_status_message, message, 3 * (LCD_WIDTH));
|
strncpy(lcd_status_message, message, 3 * (LCD_WIDTH));
|
||||||
lcd_finishstatus(persist);
|
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;
|
if (level < lcd_status_message_level) return;
|
||||||
lcd_status_message_level = level;
|
lcd_status_message_level = level;
|
||||||
strncpy_P(lcd_status_message, message, 3 * (LCD_WIDTH));
|
strncpy_P(lcd_status_message, message, 3 * (LCD_WIDTH));
|
||||||
lcd_finishstatus(level > 0);
|
lcd_finishstatus(level > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_setalertstatuspgm(const char* message) {
|
void lcd_setalertstatuspgm(const char* const message) {
|
||||||
lcd_setstatuspgm(message, 1);
|
lcd_setstatuspgm(message, 1);
|
||||||
#if ENABLED(ULTIPANEL)
|
#if ENABLED(ULTIPANEL)
|
||||||
lcd_return_to_status();
|
lcd_return_to_status();
|
||||||
@ -2872,7 +2872,7 @@ void lcd_setalertstatuspgm(const char* message) {
|
|||||||
void lcd_reset_alert_level() { lcd_status_message_level = 0; }
|
void lcd_reset_alert_level() { lcd_status_message_level = 0; }
|
||||||
|
|
||||||
#if HAS_LCD_CONTRAST
|
#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);
|
lcd_contrast = constrain(value, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX);
|
||||||
u8g.setContrast(lcd_contrast);
|
u8g.setContrast(lcd_contrast);
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,7 @@
|
|||||||
void lcd_quick_feedback(); // Audible feedback for a button click - could also be visual
|
void lcd_quick_feedback(); // Audible feedback for a button click - could also be visual
|
||||||
|
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#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
|
#endif // FILAMENT_CHANGE_FEATURE
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@ -156,8 +156,8 @@
|
|||||||
inline void lcd_update() {}
|
inline void lcd_update() {}
|
||||||
inline void lcd_init() {}
|
inline void lcd_init() {}
|
||||||
inline bool lcd_hasstatus() { return false; }
|
inline bool lcd_hasstatus() { return false; }
|
||||||
inline void lcd_setstatus(const char* message, const bool persist=false) { UNUSED(message); UNUSED(persist); }
|
inline void lcd_setstatus(const char* const 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_setstatuspgm(const char* const message, const uint8_t level=0) { UNUSED(message); UNUSED(level); }
|
||||||
inline void lcd_buttons_update() {}
|
inline void lcd_buttons_update() {}
|
||||||
inline void lcd_reset_alert_level() {}
|
inline void lcd_reset_alert_level() {}
|
||||||
inline bool lcd_detected() { return true; }
|
inline bool lcd_detected() { return true; }
|
||||||
|
@ -54,6 +54,7 @@
|
|||||||
#include "_Bootscreen.h"
|
#include "_Bootscreen.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Only Western languages support big / small fonts
|
||||||
#if DISABLED(DISPLAY_CHARSET_ISO10646_1)
|
#if DISABLED(DISPLAY_CHARSET_ISO10646_1)
|
||||||
#undef USE_BIG_EDIT_FONT
|
#undef USE_BIG_EDIT_FONT
|
||||||
#undef USE_SMALL_INFOFONT
|
#undef USE_SMALL_INFOFONT
|
||||||
@ -122,7 +123,7 @@
|
|||||||
#if ENABLED(USE_BIG_EDIT_FONT)
|
#if ENABLED(USE_BIG_EDIT_FONT)
|
||||||
#define FONT_MENU_EDIT_NAME 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 13
|
||||||
#define LCD_WIDTH_EDIT 14
|
#define LCD_WIDTH_EDIT 14
|
||||||
#else
|
#else
|
||||||
#define FONT_MENU_EDIT_NAME FONT_MENU_NAME
|
#define FONT_MENU_EDIT_NAME FONT_MENU_NAME
|
||||||
@ -183,8 +184,15 @@
|
|||||||
int lcd_contrast;
|
int lcd_contrast;
|
||||||
static char currentfont = 0;
|
static char currentfont = 0;
|
||||||
|
|
||||||
static void lcd_setFont(char font_nr) {
|
// The current graphical page being rendered
|
||||||
switch(font_nr) {
|
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_STATUSMENU : {u8g.setFont(FONT_STATUSMENU_NAME); currentfont = FONT_STATUSMENU;}; break;
|
||||||
case FONT_MENU : {u8g.setFont(FONT_MENU_NAME); currentfont = FONT_MENU;}; 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_SPECIAL : {u8g.setFont(FONT_SPECIAL_NAME); currentfont = FONT_SPECIAL;}; 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)) {
|
if ((c > 0) && (c <= LCD_STR_SPECIAL_MAX)) {
|
||||||
u8g.setFont(FONT_SPECIAL_NAME);
|
u8g.setFont(FONT_SPECIAL_NAME);
|
||||||
u8g.print(c);
|
u8g.print(c);
|
||||||
@ -202,7 +210,7 @@ void lcd_print(char c) {
|
|||||||
else charset_mapper(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)) {
|
if ((c > 0) && (c <= LCD_STR_SPECIAL_MAX)) {
|
||||||
u8g.setFont(FONT_SPECIAL_NAME);
|
u8g.setFont(FONT_SPECIAL_NAME);
|
||||||
u8g.print(c);
|
u8g.print(c);
|
||||||
@ -212,7 +220,7 @@ char lcd_print_and_count(char c) {
|
|||||||
else return charset_mapper(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);
|
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
|
#endif // SHOW_CUSTOM_BOOTSCREEN
|
||||||
|
|
||||||
int offx = (u8g.getWidth() - (START_BMPWIDTH)) / 2;
|
const uint8_t offx = (u8g.getWidth() - (START_BMPWIDTH)) / 2;
|
||||||
|
|
||||||
#if ENABLED(START_BMPHIGH)
|
#if ENABLED(START_BMPHIGH)
|
||||||
int offy = 0;
|
constexpr uint8_t offy = 0;
|
||||||
#else
|
#else
|
||||||
int offy = DOG_CHAR_HEIGHT;
|
constexpr uint8_t offy = DOG_CHAR_HEIGHT;
|
||||||
#endif
|
#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) {
|
if (show_bootscreen) {
|
||||||
u8g.firstPage();
|
u8g.firstPage();
|
||||||
@ -278,7 +286,7 @@ static void lcd_implementation_init() {
|
|||||||
#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
|
||||||
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(txt1X, u8g.getHeight() - (DOG_CHAR_HEIGHT) * 3 / 2, STRING_SPLASH_LINE1);
|
||||||
u8g.drawStr(txt2X, u8g.getHeight() - (DOG_CHAR_HEIGHT) * 1 / 2, STRING_SPLASH_LINE2);
|
u8g.drawStr(txt2X, u8g.getHeight() - (DOG_CHAR_HEIGHT) * 1 / 2, STRING_SPLASH_LINE2);
|
||||||
#endif
|
#endif
|
||||||
@ -307,37 +315,41 @@ static void lcd_implementation_clear() { } // Automatically cleared by Picture L
|
|||||||
// Status Screen
|
// Status Screen
|
||||||
//
|
//
|
||||||
|
|
||||||
FORCE_INLINE void _draw_centered_temp(int temp, int x, int y) {
|
FORCE_INLINE void _draw_centered_temp(const int temp, const uint8_t x, const uint8_t y) {
|
||||||
int degsize = 6 * (temp >= 100 ? 3 : temp >= 10 ? 2 : 1); // number's pixel width
|
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
|
u8g.setPrintPos(x - (18 - degsize) / 2, y); // move left if shorter
|
||||||
lcd_print(itostr3(temp));
|
lcd_print(itostr3(temp));
|
||||||
lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
|
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
|
#if HAS_TEMP_BED
|
||||||
bool isBed = heater < 0;
|
bool isBed = heater < 0;
|
||||||
#else
|
#else
|
||||||
const bool isBed = false;
|
const bool isBed = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_draw_centered_temp((isBed ? thermalManager.degTargetBed() : thermalManager.degTargetHotend(heater)) + 0.5, x, 7);
|
if (PAGE_UNDER(7))
|
||||||
|
_draw_centered_temp((isBed ? thermalManager.degTargetBed() : thermalManager.degTargetHotend(heater)) + 0.5, x, 7);
|
||||||
|
|
||||||
_draw_centered_temp((isBed ? thermalManager.degBed() : thermalManager.degHotend(heater)) + 0.5, x, 28);
|
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)) {
|
||||||
y = isBed ? 18 : 17;
|
const uint8_t h = isBed ? 7 : 8,
|
||||||
if (isBed ? thermalManager.isHeatingBed() : thermalManager.isHeatingHotend(heater)) {
|
y = isBed ? 18 : 17;
|
||||||
u8g.setColorIndex(0); // white on black
|
if (isBed ? thermalManager.isHeatingBed() : thermalManager.isHeatingHotend(heater)) {
|
||||||
u8g.drawBox(x + h, y, 2, 2);
|
u8g.setColorIndex(0); // white on black
|
||||||
u8g.setColorIndex(1); // black on white
|
u8g.drawBox(x + h, y, 2, 2);
|
||||||
}
|
u8g.setColorIndex(1); // black on white
|
||||||
else {
|
}
|
||||||
u8g.drawBox(x + h, y, 2, 2);
|
else {
|
||||||
|
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)
|
if (blink)
|
||||||
lcd_printPGM(pstr);
|
lcd_printPGM(pstr);
|
||||||
else {
|
else {
|
||||||
@ -357,49 +369,107 @@ FORCE_INLINE void _draw_axis_label(AxisEnum axis, const char *pstr, bool blink)
|
|||||||
//#define DOGM_SD_PERCENT
|
//#define DOGM_SD_PERCENT
|
||||||
|
|
||||||
static void lcd_implementation_status_screen() {
|
static void lcd_implementation_status_screen() {
|
||||||
u8g.setColorIndex(1); // black on white
|
|
||||||
|
|
||||||
bool blink = lcd_blink();
|
bool blink = lcd_blink();
|
||||||
|
|
||||||
// Symbols menu graphics, animated fan
|
// Black color, white background
|
||||||
u8g.drawBitmapP(9, 1, STATUS_SCREENBYTEWIDTH, STATUS_SCREENHEIGHT,
|
u8g.setColorIndex(1);
|
||||||
#if HAS_FAN0
|
|
||||||
blink && fanSpeeds[0] ? status_screen0_bmp : status_screen1_bmp
|
|
||||||
#else
|
|
||||||
status_screen0_bmp
|
|
||||||
#endif
|
|
||||||
);
|
|
||||||
|
|
||||||
// Status Menu Font for SD info, Heater status, Fan, XYZ
|
// Status Menu Font
|
||||||
lcd_setFont(FONT_STATUSMENU);
|
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
|
||||||
|
#else
|
||||||
|
status_screen0_bmp
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Temperature Graphics and Info
|
||||||
|
//
|
||||||
|
|
||||||
|
if (PAGE_UNDER(28)) {
|
||||||
|
// Extruders
|
||||||
|
HOTEND_LOOP() _draw_heater_status(5 + e * 25, e);
|
||||||
|
|
||||||
|
// Heated bed
|
||||||
|
#if HOTENDS < 4 && HAS_TEMP_BED
|
||||||
|
_draw_heater_status(81, -1);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (PAGE_CONTAINS(20, 27)) {
|
||||||
|
// Fan
|
||||||
|
u8g.setPrintPos(104, 27);
|
||||||
|
#if HAS_FAN0
|
||||||
|
int per = ((fanSpeeds[0] + 1) * 100) / 256;
|
||||||
|
if (per) {
|
||||||
|
lcd_print(itostr3(per));
|
||||||
|
u8g.print('%');
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if ENABLED(SDSUPPORT)
|
#if ENABLED(SDSUPPORT)
|
||||||
|
|
||||||
|
//
|
||||||
// SD Card Symbol
|
// 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));
|
|
||||||
|
|
||||||
|
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
|
// Progress bar frame
|
||||||
u8g.drawFrame(54, 49, 73, 4 - (TALL_FONT_CORRECTION));
|
//
|
||||||
|
|
||||||
|
if (PAGE_CONTAINS(49, 52 - (TALL_FONT_CORRECTION)))
|
||||||
|
u8g.drawFrame(54, 49, 73, 4 - (TALL_FONT_CORRECTION)); // 49-52 (or 49-51)
|
||||||
|
|
||||||
// SD Card Progress bar and clock
|
|
||||||
if (IS_SD_PRINTING) {
|
if (IS_SD_PRINTING) {
|
||||||
|
|
||||||
|
//
|
||||||
// Progress bar solid part
|
// Progress bar solid part
|
||||||
u8g.drawBox(55, 50, (unsigned int)(71 * card.percentDone() * 0.01), 2 - (TALL_FONT_CORRECTION));
|
//
|
||||||
|
|
||||||
|
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 ENABLED(DOGM_SD_PERCENT)
|
||||||
// Percent complete
|
if (PAGE_CONTAINS(41, 48)) {
|
||||||
u8g.setPrintPos(55, 48);
|
// Percent complete
|
||||||
u8g.print(itostr3(card.percentDone()));
|
u8g.setPrintPos(55, 48);
|
||||||
u8g.print('%');
|
u8g.print(itostr3(card.percentDone()));
|
||||||
|
u8g.print('%');
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
char buffer[10];
|
//
|
||||||
duration_t elapsed = print_job_timer.duration();
|
// Elapsed Time
|
||||||
bool has_days = (elapsed.value > 60*60*24L);
|
//
|
||||||
elapsed.toDigital(buffer, has_days);
|
|
||||||
|
|
||||||
#if DISABLED(DOGM_SD_PERCENT)
|
#if DISABLED(DOGM_SD_PERCENT)
|
||||||
#define SD_DURATION_X 71
|
#define SD_DURATION_X 71
|
||||||
@ -407,113 +477,167 @@ static void lcd_implementation_status_screen() {
|
|||||||
#define SD_DURATION_X 89
|
#define SD_DURATION_X 89
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
u8g.setPrintPos(SD_DURATION_X + (has_days ? 0 : 9), 48);
|
if (PAGE_CONTAINS(41, 48)) {
|
||||||
lcd_print(buffer);
|
|
||||||
|
|
||||||
#endif
|
char buffer[10];
|
||||||
|
duration_t elapsed = print_job_timer.duration();
|
||||||
|
bool has_days = (elapsed.value > 60*60*24L);
|
||||||
|
elapsed.toDigital(buffer, has_days);
|
||||||
|
|
||||||
// Extruders
|
u8g.setPrintPos(SD_DURATION_X + (has_days ? 0 : 9), 48);
|
||||||
HOTEND_LOOP() _draw_heater_status(5 + e * 25, e);
|
lcd_print(buffer);
|
||||||
|
|
||||||
// Heated bed
|
|
||||||
#if HOTENDS < 4 && HAS_TEMP_BED
|
|
||||||
_draw_heater_status(81, -1);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Fan
|
|
||||||
u8g.setPrintPos(104, 27);
|
|
||||||
#if HAS_FAN0
|
|
||||||
int per = ((fanSpeeds[0] + 1) * 100) / 256;
|
|
||||||
if (per) {
|
|
||||||
lcd_print(itostr3(per));
|
|
||||||
u8g.print('%');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#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
|
#endif
|
||||||
|
|
||||||
// X, Y, Z-Coordinates
|
|
||||||
// Before homing the axis letters are blinking 'X' <-> '?'.
|
// 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 axis is homed but axis_known_position is false the axis letters are blinking 'X' <-> ' '.
|
||||||
// When everything is ok you see a constant 'X'.
|
// When everything is ok you see a constant 'X'.
|
||||||
#define XYZ_BASELINE 38
|
|
||||||
|
|
||||||
#if ENABLED(USE_SMALL_INFOFONT)
|
static char xstring[5], ystring[5], zstring[7];
|
||||||
u8g.drawBox(0, 30, LCD_PIXEL_WIDTH, 10);
|
|
||||||
#else
|
|
||||||
u8g.drawBox(0, 30, LCD_PIXEL_WIDTH, 9);
|
|
||||||
#endif
|
|
||||||
u8g.setColorIndex(0); // white on black
|
|
||||||
|
|
||||||
u8g.setPrintPos(2, XYZ_BASELINE);
|
// At the first page, regenerate the XYZ strings
|
||||||
_draw_axis_label(X_AXIS, PSTR(MSG_X), blink);
|
if (page.page == 0) {
|
||||||
u8g.setPrintPos(10, XYZ_BASELINE);
|
strcpy(xstring, ftostr4sign(current_position[X_AXIS]));
|
||||||
lcd_print(ftostr4sign(current_position[X_AXIS]));
|
strcpy(ystring, ftostr4sign(current_position[Y_AXIS]));
|
||||||
|
strcpy(zstring, ftostr52sp(current_position[Z_AXIS] + 0.00001));
|
||||||
|
}
|
||||||
|
|
||||||
u8g.setPrintPos(43, XYZ_BASELINE);
|
if (PAGE_CONTAINS(XYZ_FRAME_TOP, XYZ_FRAME_TOP + XYZ_FRAME_HEIGHT - 1)) {
|
||||||
_draw_axis_label(Y_AXIS, PSTR(MSG_Y), blink);
|
|
||||||
u8g.setPrintPos(51, XYZ_BASELINE);
|
|
||||||
lcd_print(ftostr4sign(current_position[Y_AXIS]));
|
|
||||||
|
|
||||||
u8g.setPrintPos(83, XYZ_BASELINE);
|
#if ENABLED(XYZ_HOLLOW_FRAME)
|
||||||
_draw_axis_label(Z_AXIS, PSTR(MSG_Z), blink);
|
u8g.drawFrame(0, XYZ_FRAME_TOP, LCD_PIXEL_WIDTH, XYZ_FRAME_HEIGHT); // 8: 29-40 7: 29-39
|
||||||
u8g.setPrintPos(91, XYZ_BASELINE);
|
#else
|
||||||
lcd_print(ftostr52sp(current_position[Z_AXIS] + 0.00001));
|
u8g.drawBox(0, XYZ_FRAME_TOP, LCD_PIXEL_WIDTH, XYZ_FRAME_HEIGHT); // 8: 30-39 7: 30-37
|
||||||
|
#endif
|
||||||
|
|
||||||
u8g.setColorIndex(1); // black on white
|
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(0 * XYZ_SPACING + X_LABEL_POS, XYZ_BASELINE);
|
||||||
|
_draw_axis_label(X_AXIS, PSTR(MSG_X), blink);
|
||||||
|
u8g.setPrintPos(0 * XYZ_SPACING + X_VALUE_POS, XYZ_BASELINE);
|
||||||
|
lcd_print(xstring);
|
||||||
|
|
||||||
|
u8g.setPrintPos(1 * XYZ_SPACING + X_LABEL_POS, XYZ_BASELINE);
|
||||||
|
_draw_axis_label(Y_AXIS, PSTR(MSG_Y), blink);
|
||||||
|
u8g.setPrintPos(1 * XYZ_SPACING + X_VALUE_POS, XYZ_BASELINE);
|
||||||
|
lcd_print(ystring);
|
||||||
|
|
||||||
|
u8g.setPrintPos(2 * XYZ_SPACING + X_LABEL_POS, XYZ_BASELINE);
|
||||||
|
_draw_axis_label(Z_AXIS, PSTR(MSG_Z), blink);
|
||||||
|
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
|
// Feedrate
|
||||||
lcd_setFont(FONT_MENU);
|
//
|
||||||
u8g.setPrintPos(3, 49);
|
|
||||||
lcd_print(LCD_STR_FEEDRATE[0]);
|
|
||||||
|
|
||||||
lcd_setFont(FONT_STATUSMENU);
|
if (PAGE_CONTAINS(50 - INFO_FONT_HEIGHT, 49)) {
|
||||||
u8g.setPrintPos(12, 49);
|
lcd_setFont(FONT_MENU);
|
||||||
lcd_print(itostr3(feedrate_percentage));
|
u8g.setPrintPos(3, 49);
|
||||||
u8g.print('%');
|
lcd_print(LCD_STR_FEEDRATE[0]);
|
||||||
|
|
||||||
|
lcd_setFont(FONT_STATUSMENU);
|
||||||
|
u8g.setPrintPos(12, 49);
|
||||||
|
lcd_print(itostr3(feedrate_percentage));
|
||||||
|
u8g.print('%');
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
// Status line
|
// Status line
|
||||||
#if ENABLED(USE_SMALL_INFOFONT)
|
//
|
||||||
u8g.setPrintPos(0, 62);
|
|
||||||
#else
|
#define STATUS_BASELINE (54 + INFO_FONT_HEIGHT)
|
||||||
u8g.setPrintPos(0, 63);
|
|
||||||
#endif
|
if (PAGE_CONTAINS(STATUS_BASELINE + 1 - INFO_FONT_HEIGHT, STATUS_BASELINE)) {
|
||||||
#if DISABLED(FILAMENT_LCD_DISPLAY)
|
u8g.setPrintPos(0, STATUS_BASELINE);
|
||||||
lcd_print(lcd_status_message);
|
|
||||||
#else
|
#if DISABLED(FILAMENT_LCD_DISPLAY)
|
||||||
if (PENDING(millis(), previous_lcd_status_ms + 5000UL)) { //Display both Status message line and Filament display on the last line
|
|
||||||
lcd_print(lcd_status_message);
|
lcd_print(lcd_status_message);
|
||||||
}
|
#else
|
||||||
else {
|
if (PENDING(millis(), previous_lcd_status_ms + 5000UL)) { //Display both Status message line and Filament display on the last line
|
||||||
lcd_printPGM(PSTR("dia:"));
|
lcd_print(lcd_status_message);
|
||||||
lcd_print(ftostr12ns(filament_width_meas));
|
}
|
||||||
lcd_printPGM(PSTR(" factor:"));
|
else {
|
||||||
lcd_print(itostr3(100.0 * volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM]));
|
lcd_printPGM(PSTR("dia:"));
|
||||||
u8g.print('%');
|
lcd_print(ftostr12ns(filament_width_meas));
|
||||||
}
|
lcd_printPGM(PSTR(" factor:"));
|
||||||
#endif
|
lcd_print(itostr3(100.0 * volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM]));
|
||||||
|
u8g.print('%');
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLED(ULTIPANEL)
|
#if ENABLED(ULTIPANEL)
|
||||||
|
|
||||||
|
uint8_t row_y1, row_y2;
|
||||||
|
|
||||||
// Set the colors for a menu item based on whether it is selected
|
// 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) {
|
if (isSelected) {
|
||||||
u8g.setColorIndex(1); // black on white
|
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
|
u8g.setColorIndex(0); // following text must be white on black
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
u8g.setColorIndex(1); // unmarked text is black on white
|
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)
|
#if ENABLED(LCD_INFO_MENU) || ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||||
|
|
||||||
// Draw a static line of text in the same idiom as a menu item
|
// 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);
|
lcd_implementation_mark_as_selected(row, invert);
|
||||||
|
|
||||||
|
if (!PAGE_CONTAINS(row_y1, row_y2)) return;
|
||||||
|
|
||||||
char c;
|
char c;
|
||||||
int8_t n = LCD_WIDTH - (START_COL);
|
int8_t n = LCD_WIDTH - (START_COL);
|
||||||
|
|
||||||
@ -535,20 +659,20 @@ static void lcd_implementation_status_screen() {
|
|||||||
#endif // LCD_INFO_MENU || FILAMENT_CHANGE_FEATURE
|
#endif // LCD_INFO_MENU || FILAMENT_CHANGE_FEATURE
|
||||||
|
|
||||||
// Draw a generic menu item
|
// 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);
|
UNUSED(pre_char);
|
||||||
|
|
||||||
char c;
|
|
||||||
uint8_t n = LCD_WIDTH - (START_COL) - 2;
|
|
||||||
|
|
||||||
lcd_implementation_mark_as_selected(row, isSelected);
|
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);
|
n -= lcd_print_and_count(c);
|
||||||
pstr++;
|
pstr++;
|
||||||
}
|
}
|
||||||
while (n--) u8g.print(' ');
|
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);
|
lcd_print(post_char);
|
||||||
u8g.print(' ');
|
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, '>', ' ')
|
#define lcd_implementation_drawmenu_function(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', ' ')
|
||||||
|
|
||||||
// Draw a menu item with an editable value
|
// 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) {
|
static void _drawmenu_setting_edit_generic(const bool isSelected, const uint8_t row, const char* pstr, const char* const data, const 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;
|
|
||||||
|
|
||||||
lcd_implementation_mark_as_selected(row, isSelected);
|
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);
|
n -= lcd_print_and_count(c);
|
||||||
pstr++;
|
pstr++;
|
||||||
}
|
}
|
||||||
u8g.print(':');
|
u8g.print(':');
|
||||||
while (n--) 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);
|
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_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))
|
#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* const pstr, const char* const value=NULL) {
|
||||||
uint8_t rows = 1;
|
const uint8_t labellen = lcd_strlen_P(pstr), vallen = lcd_strlen(value);
|
||||||
uint8_t lcd_width = LCD_WIDTH - (START_COL), char_width = DOG_CHAR_WIDTH;
|
uint8_t lcd_width, char_width,
|
||||||
uint8_t vallen = lcd_strlen(value);
|
rows = (labellen > LCD_WIDTH - 2 - vallen) ? 2 : 1;
|
||||||
|
|
||||||
#if ENABLED(USE_BIG_EDIT_FONT)
|
#if ENABLED(USE_BIG_EDIT_FONT)
|
||||||
if (lcd_strlen_P(pstr) <= LCD_WIDTH_EDIT - 1) {
|
if (labellen <= LCD_WIDTH_EDIT - 1) {
|
||||||
lcd_setFont(FONT_MENU_EDIT);
|
if (labellen >= LCD_WIDTH_EDIT - vallen) rows = 2;
|
||||||
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 - vallen) rows = 2;
|
lcd_setFont(FONT_MENU_EDIT);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
lcd_width = LCD_WIDTH - (START_COL);
|
||||||
|
char_width = DOG_CHAR_WIDTH;
|
||||||
lcd_setFont(FONT_MENU);
|
lcd_setFont(FONT_MENU);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
lcd_width = LCD_WIDTH - (START_COL);
|
||||||
|
char_width = DOG_CHAR_WIDTH;
|
||||||
#endif
|
#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;
|
if (PAGE_CONTAINS(baseline + 1 - (DOG_CHAR_HEIGHT_EDIT), baseline)) {
|
||||||
float rowHeight = u8g.getHeight() / (rows + 1); // 1/(rows+1) = 1/2 or 1/3
|
u8g.setPrintPos(0, baseline);
|
||||||
|
lcd_printPGM(pstr);
|
||||||
|
}
|
||||||
|
|
||||||
u8g.setPrintPos(0, rowHeight + kHalfChar);
|
|
||||||
lcd_printPGM(pstr);
|
|
||||||
if (value != NULL) {
|
if (value != NULL) {
|
||||||
u8g.print(':');
|
baseline += (rows - 1) * segmentHeight;
|
||||||
u8g.setPrintPos((lcd_width - 1 - vallen) * char_width, rows * rowHeight + kHalfChar);
|
if (PAGE_CONTAINS(baseline + 1 - (DOG_CHAR_HEIGHT_EDIT), baseline)) {
|
||||||
lcd_print(value);
|
u8g.print(':');
|
||||||
|
u8g.setPrintPos((lcd_width - 1 - vallen) * char_width, baseline);
|
||||||
|
lcd_print(value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLED(SDSUPPORT)
|
#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);
|
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]) {
|
if (longFilename[0]) {
|
||||||
filename = longFilename;
|
filename = longFilename;
|
||||||
longFilename[n] = '\0';
|
longFilename[n] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
lcd_implementation_mark_as_selected(row, isSelected);
|
|
||||||
|
|
||||||
if (isDir) lcd_print(LCD_STR_FOLDER[0]);
|
if (isDir) lcd_print(LCD_STR_FOLDER[0]);
|
||||||
while ((c = *filename)) {
|
|
||||||
|
while (char c = *filename) {
|
||||||
n -= lcd_print_and_count(c);
|
n -= lcd_print_and_count(c);
|
||||||
filename++;
|
filename++;
|
||||||
}
|
}
|
||||||
|
@ -195,7 +195,7 @@ extern volatile uint8_t buttons; //an extended version of the last checked butt
|
|||||||
|
|
||||||
static void lcd_set_custom_characters(
|
static void lcd_set_custom_characters(
|
||||||
#if ENABLED(LCD_PROGRESS_BAR)
|
#if ENABLED(LCD_PROGRESS_BAR)
|
||||||
bool info_screen_charset = true
|
const bool info_screen_charset = true
|
||||||
#endif
|
#endif
|
||||||
) {
|
) {
|
||||||
static byte bedTemp[8] = {
|
static byte bedTemp[8] = {
|
||||||
@ -341,7 +341,7 @@ static void lcd_set_custom_characters(
|
|||||||
|
|
||||||
static void lcd_implementation_init(
|
static void lcd_implementation_init(
|
||||||
#if ENABLED(LCD_PROGRESS_BAR)
|
#if ENABLED(LCD_PROGRESS_BAR)
|
||||||
bool info_screen_charset = true
|
const bool info_screen_charset = true
|
||||||
#endif
|
#endif
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@ -385,7 +385,7 @@ void lcd_printPGM(const char *str) {
|
|||||||
for (; char c = pgm_read_byte(str); ++str) charset_mapper(c);
|
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);
|
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)
|
#if ENABLED(SHOW_BOOTSCREEN)
|
||||||
|
|
||||||
void lcd_erase_line(int line) {
|
void lcd_erase_line(const int line) {
|
||||||
lcd.setCursor(0, line);
|
lcd.setCursor(0, line);
|
||||||
for (int i = 0; i < LCD_WIDTH; i++)
|
for (uint8_t i = LCD_WIDTH + 1; --i;)
|
||||||
lcd_print(' ');
|
lcd_print(' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scroll the PSTR 'text' in a 'len' wide field for 'time' milliseconds at position col,line
|
// 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};
|
char tmp[LCD_WIDTH + 1] = {0};
|
||||||
int n = max(lcd_strlen_P(text) - len, 0);
|
int n = max(lcd_strlen_P(text) - len, 0);
|
||||||
for (int i = 0; i <= n; i++) {
|
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;
|
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, 0); lcd.print('\x00'); lcd_printPGM(PSTR( "------" )); lcd.print('\x01');
|
||||||
lcd.setCursor(indent, 1); lcd_printPGM(PSTR("|Marlin|")); lcd_printPGM(extra);
|
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));
|
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)
|
if (blink)
|
||||||
lcd_printPGM(pstr);
|
lcd_printPGM(pstr);
|
||||||
else {
|
else {
|
||||||
@ -794,7 +794,7 @@ static void lcd_implementation_status_screen() {
|
|||||||
|
|
||||||
#if ENABLED(LCD_INFO_MENU) || ENABLED(FILAMENT_CHANGE_FEATURE)
|
#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);
|
UNUSED(invert);
|
||||||
char c;
|
char c;
|
||||||
int8_t n = LCD_WIDTH;
|
int8_t n = LCD_WIDTH;
|
||||||
@ -816,7 +816,7 @@ static void lcd_implementation_status_screen() {
|
|||||||
|
|
||||||
#endif // LCD_INFO_MENU || FILAMENT_CHANGE_FEATURE
|
#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;
|
char c;
|
||||||
uint8_t n = LCD_WIDTH - 2;
|
uint8_t n = LCD_WIDTH - 2;
|
||||||
lcd.setCursor(0, row);
|
lcd.setCursor(0, row);
|
||||||
@ -829,7 +829,7 @@ static void lcd_implementation_status_screen() {
|
|||||||
lcd.print(post_char);
|
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;
|
char c;
|
||||||
uint8_t n = LCD_WIDTH - 2 - lcd_strlen(data);
|
uint8_t n = LCD_WIDTH - 2 - lcd_strlen(data);
|
||||||
lcd.setCursor(0, row);
|
lcd.setCursor(0, row);
|
||||||
@ -842,7 +842,7 @@ static void lcd_implementation_status_screen() {
|
|||||||
while (n--) lcd.print(' ');
|
while (n--) lcd.print(' ');
|
||||||
lcd_print(data);
|
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;
|
char c;
|
||||||
uint8_t n = LCD_WIDTH - 2 - lcd_strlen_P(data);
|
uint8_t n = LCD_WIDTH - 2 - lcd_strlen_P(data);
|
||||||
lcd.setCursor(0, row);
|
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_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))
|
#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.setCursor(1, 1);
|
||||||
lcd_printPGM(pstr);
|
lcd_printPGM(pstr);
|
||||||
if (value != NULL) {
|
if (value != NULL) {
|
||||||
@ -891,7 +891,7 @@ static void lcd_implementation_status_screen() {
|
|||||||
|
|
||||||
#if ENABLED(SDSUPPORT)
|
#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);
|
UNUSED(pstr);
|
||||||
char c;
|
char c;
|
||||||
uint8_t n = LCD_WIDTH - concat;
|
uint8_t n = LCD_WIDTH - concat;
|
||||||
@ -909,11 +909,11 @@ static void lcd_implementation_status_screen() {
|
|||||||
lcd.print(post_char);
|
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, ' ');
|
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]);
|
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
|
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 ST7920_NCS() {WRITE(ST7920_CS_PIN,0);}
|
#define U8G_DELAY() delayMicroseconds(DOGM_SPI_DELAY_US)
|
||||||
#define ST7920_SET_CMD() {ST7920_SWSPI_SND_8BIT(0xf8);u8g_10MicroDelay();}
|
#else
|
||||||
#define ST7920_SET_DAT() {ST7920_SWSPI_SND_8BIT(0xfa);u8g_10MicroDelay();}
|
#define U8G_DELAY() 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();}
|
#endif
|
||||||
#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_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_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 u8g_dev_rrd_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
|
||||||
uint8_t i, y;
|
uint8_t i, y;
|
||||||
@ -167,13 +173,13 @@ uint8_t u8g_dev_rrd_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, vo
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#if PAGE_HEIGHT == 8
|
#if PAGE_HEIGHT == 8
|
||||||
return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg);
|
return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg);
|
||||||
#elif PAGE_HEIGHT == 16
|
#elif PAGE_HEIGHT == 16
|
||||||
return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg);
|
return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg);
|
||||||
#else
|
#else
|
||||||
return u8g_dev_pb32h1_base_fn(u8g, dev, msg, arg);
|
return u8g_dev_pb32h1_base_fn(u8g, dev, msg, arg);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t u8g_dev_st7920_128x64_rrd_buf[(LCD_PIXEL_WIDTH) * (PAGE_HEIGHT) / 8] U8G_NOCOMMON;
|
uint8_t u8g_dev_st7920_128x64_rrd_buf[(LCD_PIXEL_WIDTH) * (PAGE_HEIGHT) / 8] U8G_NOCOMMON;
|
||||||
|
@ -48,34 +48,34 @@
|
|||||||
#if ENABLED(MAPPER_C2C3)
|
#if ENABLED(MAPPER_C2C3)
|
||||||
const PROGMEM uint8_t utf_recode[] =
|
const PROGMEM uint8_t utf_recode[] =
|
||||||
{ // 0 1 2 3 4 5 6 7 8 9 a b c d e f This is fair for symbols
|
{ // 0 1 2 3 4 5 6 7 8 9 a b c d e f This is fair for symbols
|
||||||
0x20,0x3f,0xec,0xed,0x3f,0x5c,0x7c,0x3f,0x22,0x63,0x61,0x7f,0x3f,0x3f,0x52,0xb0, // c2a
|
0x20,0x3f,0xec,0xed,0x3f,0x5c,0x7c,0x3f,0x22,0x63,0x61,0x7f,0x3f,0x3f,0x52,0xb0, // c2a
|
||||||
// ' ' ¢ £ l " c a « R
|
//' ' ¢ £ l " c a « R
|
||||||
0xdf,0x3f,0x32,0x33,0x27,0xe4,0xf1,0xa5,0x2c,0x31,0xdf,0x7e,0x3f,0x3f,0x3f,0x3f, // c2b but relatively bad for letters.
|
0xdf,0x3f,0x32,0x33,0x27,0xe4,0xf1,0xa5,0x2c,0x31,0xdf,0x7e,0x3f,0x3f,0x3f,0x3f, // c2b but relatively bad for letters.
|
||||||
// ° 2 3 ` N p . , 1 ° »
|
// ° 2 3 ` N p . , 1 ° »
|
||||||
0x3f,0x3f,0x3f,0x3f,0xe1,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, // c38
|
0x3f,0x3f,0x3f,0x3f,0xe1,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, // c38
|
||||||
// ä
|
// ä
|
||||||
0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xef,0x78,0x3f,0x3f,0x3f,0x3f,0xf5,0x3f,0x3f,0xe2, // c39 missing characters display as '?'
|
0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xef,0x78,0x3f,0x3f,0x3f,0x3f,0xf5,0x3f,0x3f,0xe2, // c39 missing characters display as '?'
|
||||||
// ö x ü ß
|
// ö x ü ß
|
||||||
0x3f,0x3f,0x3f,0x3f,0xe1,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, // c3a
|
0x3f,0x3f,0x3f,0x3f,0xe1,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, // c3a
|
||||||
// ä
|
// ä
|
||||||
0x3f,0xee,0x3f,0x3f,0x3f,0x3f,0xef,0xfd,0x3f,0x3f,0x3f,0x3f,0xf5,0x3f,0x3f,0x3f // c3b
|
0x3f,0xee,0x3f,0x3f,0x3f,0x3f,0xef,0xfd,0x3f,0x3f,0x3f,0x3f,0xf5,0x3f,0x3f,0x3f // c3b
|
||||||
// n ö ÷ ü
|
// n ö ÷ ü
|
||||||
};
|
};
|
||||||
#elif ENABLED(MAPPER_E382E383)
|
#elif ENABLED(MAPPER_E382E383)
|
||||||
const PROGMEM uint8_t utf_recode[] =
|
const PROGMEM uint8_t utf_recode[] =
|
||||||
{ // 0 1 2 3 4 5 6 7 8 9 a b c d e f
|
{ // 0 1 2 3 4 5 6 7 8 9 a b c d e f
|
||||||
0x3d,0xb1,0xb1,0xa8,0xb2,0xa9,0xb3,0xaa,0xb4,0xab,0xb5,0xb6,0xb6,0xb7,0xb7,0xb8, // e382a Please test and correct
|
0x3d,0xb1,0xb1,0xa8,0xb2,0xa9,0xb3,0xaa,0xb4,0xab,0xb5,0xb6,0xb6,0xb7,0xb7,0xb8, // e382a Please test and correct
|
||||||
// = ア ア ィ イ ゥ ウ ェ エ ォ オ ガ ガ キ キ ク
|
// = ア ア ィ イ ゥ ウ ェ エ ォ オ ガ ガ キ キ ク
|
||||||
0xb8,0xb9,0xb9,0xba,0xba,0xbb,0xbb,0xbc,0xbc,0xbd,0xbd,0xbe,0xbe,0xbf,0xbf,0xc0, // e382b
|
0xb8,0xb9,0xb9,0xba,0xba,0xbb,0xbb,0xbc,0xbc,0xbd,0xbd,0xbe,0xbe,0xbf,0xbf,0xc0, // e382b
|
||||||
// ク ケ ケ コ コ サ サ シ シ ス ス セ セ ソ ソ タ
|
// ク ケ ケ コ コ サ サ シ シ ス ス セ セ ソ ソ タ
|
||||||
0xc0,0xc1,0xc1,0xc2,0xc2,0xc2,0xc3,0xc3,0xc4,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca, // e3838
|
0xc0,0xc1,0xc1,0xc2,0xc2,0xc2,0xc3,0xc3,0xc4,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca, // e3838
|
||||||
// タ チ チ ッ ッ ッ テ テ ト ト ナ ニ ヌ ネ ノ ハ
|
// タ チ チ ッ ッ ッ テ テ ト ト ナ ニ ヌ ネ ノ ハ
|
||||||
0xca,0xca,0xcb,0xcb,0xcb,0xcc,0xcc,0xcc,0xcd,0xcd,0xcd,0xce,0xce,0xce,0xcf,0xd0, // e3839
|
0xca,0xca,0xcb,0xcb,0xcb,0xcc,0xcc,0xcc,0xcd,0xcd,0xcd,0xce,0xce,0xce,0xcf,0xd0, // e3839
|
||||||
// ハ ハ ヒ ヒ ヒ フ フ フ ヘ ヘ ヘ ホ ホ ホ マ ミ
|
// ハ ハ ヒ ヒ ヒ フ フ フ ヘ ヘ ヘ ホ ホ ホ マ ミ
|
||||||
0xd1,0xd2,0xd3,0xd4,0xd4,0xd5,0xd5,0xae,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdc, // e383a
|
0xd1,0xd2,0xd3,0xd4,0xd4,0xd5,0xd5,0xae,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdc, // e383a
|
||||||
// ム メ モ ャ ャ ユ ユ ョ ヨ ラ リ ル レ ロ ワ ワ
|
// ム メ モ ャ ャ ユ ユ ョ ヨ ラ リ ル レ ロ ワ ワ
|
||||||
0xec,0xa7,0xa6,0xdd,0xcc,0x3f,0x3f,0x3f,0x3f,0x3f,0xa6,0xa5,0xb0,0xa4,0xa4,0x3f // e383b
|
0xec,0xa7,0xa6,0xdd,0xcc,0x3f,0x3f,0x3f,0x3f,0x3f,0xa6,0xa5,0xb0,0xa4,0xa4,0x3f // e383b
|
||||||
// ヰ ヱ ヲ ン フ ? ? ? ? ? ヲ ・ ー ヽ ヽ ?
|
// ヰ ヱ ヲ ン フ ? ? ? ? ? ヲ ・ ー ヽ ヽ ?
|
||||||
};
|
};
|
||||||
#elif ENABLED(MAPPER_D0D1)
|
#elif ENABLED(MAPPER_D0D1)
|
||||||
#error "Cyrillic on a JAPANESE display makes no sense. There are no matching symbols."
|
#error "Cyrillic on a JAPANESE display makes no sense. There are no matching symbols."
|
||||||
@ -85,31 +85,31 @@
|
|||||||
#if ENABLED(MAPPER_C2C3)
|
#if ENABLED(MAPPER_C2C3)
|
||||||
const PROGMEM uint8_t utf_recode[] =
|
const PROGMEM uint8_t utf_recode[] =
|
||||||
{ // 0 1 2 3 4 5 6 7 8 9 a b c d e f This is relative complete.
|
{ // 0 1 2 3 4 5 6 7 8 9 a b c d e f This is relative complete.
|
||||||
0x20,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0x22,0xa9,0xaa,0xab,0x3f,0x3f,0xae,0x3f, // c2a ¡¢£¤¥¦§¨©ª«¬®¯
|
0x20,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0x22,0xa9,0xaa,0xab,0x3f,0x3f,0xae,0x3f, // c2a ¡¢£¤¥¦§¨©ª«¬®¯
|
||||||
// ' ' ¡ ¢ £ ¤ ¥ ¦ § " © ª « ? ? ® ?
|
//' ' ¡ ¢ £ ¤ ¥ ¦ § " © ª « ? ? ® ?
|
||||||
0xb0,0xb1,0xb2,0xb3,0x27,0xb5,0xb6,0xb7,0x2c,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf, // c2b °±²³´µ¶·¸¹º»¼½¾¿
|
0xb0,0xb1,0xb2,0xb3,0x27,0xb5,0xb6,0xb7,0x2c,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf, // c2b °±²³´µ¶·¸¹º»¼½¾¿
|
||||||
// ° ± ³ ² ? µ ¶ · , ¹ º » ¼ ½ ¾ ¿
|
// ° ± ³ ² ? µ ¶ · , ¹ º » ¼ ½ ¾ ¿
|
||||||
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf, // c38 ÀÁÃÄÅÆÇÈÉÊËÌÍÎÏ
|
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf, // c38 ÀÁÃÄÅÆÇÈÉÊËÌÍÎÏ
|
||||||
// À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï
|
// À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï
|
||||||
0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf, // c39 ÐÑÓÔÕÖ×ØÙÚÛÜÝÞß
|
0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf, // c39 ÐÑÓÔÕÖ×ØÙÚÛÜÝÞß
|
||||||
// Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
|
// Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
|
||||||
0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef, // c3a àáãäåæçèéêëìíîï
|
0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef, // c3a àáãäåæçèéêëìíîï
|
||||||
// à á â ã ä å æ ç è é ê ë ì í î ï
|
// à á â ã ä å æ ç è é ê ë ì í î ï
|
||||||
0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff // c3b ðñóôõö÷øùúûüýþÿ
|
0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff // c3b ðñóôõö÷øùúûüýþÿ
|
||||||
// ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
|
// ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
|
||||||
};
|
};
|
||||||
#elif ENABLED(MAPPER_D0D1)
|
#elif ENABLED(MAPPER_D0D1)
|
||||||
#define MAPPER_D0D1_MOD
|
#define MAPPER_D0D1_MOD
|
||||||
const PROGMEM uint8_t utf_recode[] =
|
const PROGMEM uint8_t utf_recode[] =
|
||||||
{//0 1 2 3 4 5 6 7 8 9 a b c d e f
|
{//0 1 2 3 4 5 6 7 8 9 a b c d e f
|
||||||
0x41,0x80,0x42,0x92,0x81,0x45,0x82,0x83,0x84,0x85,0x4b,0x86,0x4d,0x48,0x4f,0x87, // d0a
|
0x41,0x80,0x42,0x92,0x81,0x45,0x82,0x83,0x84,0x85,0x4b,0x86,0x4d,0x48,0x4f,0x87, // d0a
|
||||||
// A Б B Г Д E Ж З И Й K Л M H O П
|
// A Б B Г Д E Ж З И Й K Л M H O П
|
||||||
0x50,0x43,0x54,0x88,0xd8,0x58,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x62,0x8f,0xac,0xad, // d0b
|
0x50,0x43,0x54,0x88,0xd8,0x58,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x62,0x8f,0xac,0xad, // d0b
|
||||||
// P C T У Ф X Ч ч Ш Щ Ъ Ы b Э Ю Я
|
// P C T У Ф X Ч ч Ш Щ Ъ Ы b Э Ю Я
|
||||||
0x61,0x36,0x42,0x92,0x81,0x65,0x82,0xb3,0x84,0x85,0x6b,0x86,0x4d,0x48,0x6f,0x87, // d18
|
0x61,0x36,0x42,0x92,0x81,0x65,0x82,0xb3,0x84,0x85,0x6b,0x86,0x4d,0x48,0x6f,0x87, // d18
|
||||||
// a 6 B Г Д e Ж ³ И Й k Л M H o П
|
// a 6 B Г Д e Ж ³ И Й k Л M H o П
|
||||||
0x70,0x63,0x54,0x79,0xd8,0x78,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x62,0x8f,0xac,0xad // d19
|
0x70,0x63,0x54,0x79,0xd8,0x78,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x62,0x8f,0xac,0xad // d19
|
||||||
// p c T y Ф x Ч ч Ш Щ Ъ Ы b Э Ю Я
|
// p c T y Ф x Ч ч Ш Щ Ъ Ы b Э Ю Я
|
||||||
};
|
};
|
||||||
#elif ENABLED(MAPPER_E382E383)
|
#elif ENABLED(MAPPER_E382E383)
|
||||||
#error "Katakana on a WESTERN display makes no sense. There are no matching symbols."
|
#error "Katakana on a WESTERN display makes no sense. There are no matching symbols."
|
||||||
@ -121,23 +121,23 @@
|
|||||||
// it is a Russian alphabet translation
|
// it is a Russian alphabet translation
|
||||||
// except 0401 --> 0xa2 = Ё, 0451 --> 0xb5 = ё
|
// except 0401 --> 0xa2 = Ё, 0451 --> 0xb5 = ё
|
||||||
const PROGMEM uint8_t utf_recode[] =
|
const PROGMEM uint8_t utf_recode[] =
|
||||||
{ 0x41,0xa0,0x42,0xa1,0xe0,0x45,0xa3,0xa4, // unicode U+0400 to U+047f
|
{ 0x41,0xa0,0x42,0xa1,0xe0,0x45,0xa3,0xa4, // unicode U+0400 to U+047f
|
||||||
// A Б->Ё B Г Д E Ж З // 0 Ѐ Ё Ђ Ѓ Є Ѕ І Ї
|
// A Б->Ё B Г Д E Ж З // 0 Ѐ Ё Ђ Ѓ Є Ѕ І Ї
|
||||||
0xa5,0xa6,0x4b,0xa7,0x4d,0x48,0x4f,0xa8, // Ј Љ Њ Ћ Ќ Ѝ Ў Џ
|
0xa5,0xa6,0x4b,0xa7,0x4d,0x48,0x4f,0xa8, // Ј Љ Њ Ћ Ќ Ѝ Ў Џ
|
||||||
// И Й K Л M H O П // 1 А Б В Г Д Е Ж З
|
// И Й K Л M H O П // 1 А Б В Г Д Е Ж З
|
||||||
0x50,0x43,0x54,0xa9,0xaa,0x58,0xe1,0xab, // И Й К Л М Н О П
|
0x50,0x43,0x54,0xa9,0xaa,0x58,0xe1,0xab, // И Й К Л М Н О П
|
||||||
// P C T У Ф X Ч ч // 2 Р С Т У Ф Х Г Ч
|
// P C T У Ф X Ч ч // 2 Р С Т У Ф Х Г Ч
|
||||||
0xac,0xe2,0xad,0xae,0x62,0xaf,0xb0,0xb1, // Ш Щ Ъ Ы Ь Э Ю Я
|
0xac,0xe2,0xad,0xae,0x62,0xaf,0xb0,0xb1, // Ш Щ Ъ Ы Ь Э Ю Я
|
||||||
// Ш Щ Ъ Ы b Э Ю Я // 3 а б в г д е ж з
|
// Ш Щ Ъ Ы b Э Ю Я // 3 а б в г д е ж з
|
||||||
0x61,0xb2,0xb3,0xb4,0xe3,0x65,0xb6,0xb7, // и й к л м н о п
|
0x61,0xb2,0xb3,0xb4,0xe3,0x65,0xb6,0xb7, // и й к л м н о п
|
||||||
// a б->ё в г д e ж з // 4 р с т у ф х ц ч
|
// a б->ё в г д e ж з // 4 р с т у ф х ц ч
|
||||||
0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0x6f,0xbe, // ш щ ъ ы ь э ю я
|
0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0x6f,0xbe, // ш щ ъ ы ь э ю я
|
||||||
// и й к л м н o п // 5 ѐ ё ђ ѓ є ѕ і ї
|
// и й к л м н o п // 5 ѐ ё ђ ѓ є ѕ і ї
|
||||||
0x70,0x63,0xbf,0x79,0xe4,0x78,0xe5,0xc0, // ј љ њ ћ ќ ѝ ў џ
|
0x70,0x63,0xbf,0x79,0xe4,0x78,0xe5,0xc0, // ј љ њ ћ ќ ѝ ў џ
|
||||||
// p c т y ф x ц ч // 6 Ѡ ѡ Ѣ ѣ Ѥ ѥ Ѧ ѧ
|
// p c т y ф x ц ч // 6 Ѡ ѡ Ѣ ѣ Ѥ ѥ Ѧ ѧ
|
||||||
0xc1,0xe6,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7 // Ѫ ѩ Ѫ ѫ Ѭ ѭ Ѯ ѯ
|
0xc1,0xe6,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7 // Ѫ ѩ Ѫ ѫ Ѭ ѭ Ѯ ѯ
|
||||||
// ш щ ъ ы ь э ю я // 7 Ѱ ѱ Ѳ ѳ Ѵ ѵ Ѷ ѷ
|
// ш щ ъ ы ь э ю я // 7 Ѱ ѱ Ѳ ѳ Ѵ ѵ Ѷ ѷ
|
||||||
}; // ѻ ѹ Ѻ ѻ Ѽ ѽ Ѿ ѿ
|
}; // ѻ ѹ Ѻ ѻ Ѽ ѽ Ѿ ѿ
|
||||||
#elif ENABLED(MAPPER_C2C3)
|
#elif ENABLED(MAPPER_C2C3)
|
||||||
#error "Western languages on a CYRILLIC display makes no sense. There are no matching symbols."
|
#error "Western languages on a CYRILLIC display makes no sense. There are no matching symbols."
|
||||||
#elif ENABLED(MAPPER_E382E383)
|
#elif ENABLED(MAPPER_E382E383)
|
||||||
@ -150,7 +150,7 @@
|
|||||||
|
|
||||||
#if ENABLED(MAPPER_C2C3)
|
#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 uint8_t utf_hi_char; // UTF-8 high part
|
||||||
static bool seen_c2 = false;
|
static bool seen_c2 = false;
|
||||||
uint8_t d = c;
|
uint8_t d = c;
|
||||||
@ -181,7 +181,7 @@
|
|||||||
|
|
||||||
#elif ENABLED(MAPPER_CECF)
|
#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 uint8_t utf_hi_char; // UTF-8 high part
|
||||||
static bool seen_ce = false;
|
static bool seen_ce = false;
|
||||||
uint8_t d = c;
|
uint8_t d = c;
|
||||||
@ -212,7 +212,7 @@
|
|||||||
|
|
||||||
#elif ENABLED(MAPPER_CECF)
|
#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 uint8_t utf_hi_char; // UTF-8 high part
|
||||||
static bool seen_ce = false;
|
static bool seen_ce = false;
|
||||||
uint8_t d = c;
|
uint8_t d = c;
|
||||||
@ -243,7 +243,7 @@
|
|||||||
|
|
||||||
#elif ENABLED(MAPPER_D0D1_MOD)
|
#elif ENABLED(MAPPER_D0D1_MOD)
|
||||||
|
|
||||||
char charset_mapper(char c) {
|
char charset_mapper(const char c) {
|
||||||
// it is a Russian alphabet translation
|
// it is a Russian alphabet translation
|
||||||
// except 0401 --> 0xa2 = Ё, 0451 --> 0xb5 = ё
|
// except 0401 --> 0xa2 = Ё, 0451 --> 0xb5 = ё
|
||||||
static uint8_t utf_hi_char; // UTF-8 high part
|
static uint8_t utf_hi_char; // UTF-8 high part
|
||||||
@ -280,7 +280,7 @@
|
|||||||
|
|
||||||
#elif ENABLED(MAPPER_D0D1)
|
#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 uint8_t utf_hi_char; // UTF-8 high part
|
||||||
static bool seen_d5 = false;
|
static bool seen_d5 = false;
|
||||||
uint8_t d = c;
|
uint8_t d = c;
|
||||||
@ -311,7 +311,7 @@
|
|||||||
|
|
||||||
#elif ENABLED(MAPPER_E382E383)
|
#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 uint8_t utf_hi_char; // UTF-8 high part
|
||||||
static bool seen_e3 = false;
|
static bool seen_e3 = false;
|
||||||
static bool seen_82_83 = false;
|
static bool seen_82_83 = false;
|
||||||
@ -350,7 +350,7 @@
|
|||||||
|
|
||||||
#define MAPPER_NON
|
#define MAPPER_NON
|
||||||
|
|
||||||
char charset_mapper(char c) {
|
char charset_mapper(const char c) {
|
||||||
HARDWARE_CHAR_OUT( c );
|
HARDWARE_CHAR_OUT( c );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user