diff --git a/Marlin/src/lcd/dogm/dogm_Statusscreen.h b/Marlin/src/lcd/dogm/dogm_Statusscreen.h
index e76b7da598..15578e21d9 100644
--- a/Marlin/src/lcd/dogm/dogm_Statusscreen.h
+++ b/Marlin/src/lcd/dogm/dogm_Statusscreen.h
@@ -57,805 +57,43 @@
// Default Status Screen Heater or Hotends bitmaps
//
#if !STATUS_HEATERS_WIDTH && !STATUS_HOTEND1_WIDTH
-
#if ENABLED(STATUS_COMBINE_HEATERS)
-
- #undef STATUS_HOTEND_ANIM
- #undef STATUS_BED_ANIM
- #define STATUS_HEATERS_XSPACE 24
-
- //
- // Status Screen Combined Heater bitmaps
- //
- #if HAS_HEATED_BED && HOTENDS <= 4
-
- #if HOTENDS == 0
-
- #define STATUS_HEATERS_WIDTH 96
-
- const unsigned char status_heaters_bmp[] PROGMEM = {
- B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
- B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
- B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
- B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
- B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
- B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
- B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
- B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
- B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
- B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
- B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000,
- B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000
- };
-
- #elif HOTENDS == 1
-
- #define STATUS_HEATERS_WIDTH 96
-
- const unsigned char status_heaters_bmp[] PROGMEM = {
- B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
- B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
- B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
- B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
- B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
- B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
- B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
- B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
- B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
- B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
- B00000111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000,
- B00000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000
- };
-
- #elif HOTENDS == 2
-
- #define STATUS_HEATERS_WIDTH 96
-
- const unsigned char status_heaters_bmp[] PROGMEM = {
- B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
- B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
- B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
- B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
- B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
- B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
- B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
- B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
- B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
- B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
- B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000,
- B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000
- };
-
- #elif HOTENDS == 3
-
- #define STATUS_HEATERS_WIDTH 96
-
- const unsigned char status_heaters_bmp[] PROGMEM = {
- B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000100,B00010000,B01000000,
- B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00000010,B00001000,B00100000,
- B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
- B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00000100,B00010000,B01000000,
- B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00001000,B00100000,B10000000,
- B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00010000,B01000001,B00000000,
- B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00010000,B01000001,B00000000,
- B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00001000,B00100000,B10000000,
- B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00000100,B00010000,B01000000,
- B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,
- B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00011111,B11111111,B11111000,
- B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00011111,B11111111,B11111000
- };
-
- #else // HOTENDS > 3
-
- #define STATUS_HEATERS_WIDTH 120
-
- const unsigned char status_heaters_bmp[] PROGMEM = {
- B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000100,B00010000,B01000000,
- B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
- B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
- B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,B00000000,B00000100,B00010000,B01000000,
- B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00011011,B01100000,B00000000,B00001000,B00100000,B10000000,
- B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00011000,B00100000,B00000000,B00010000,B01000001,B00000000,
- B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00111111,B01110000,B00000000,B00010000,B01000001,B00000000,
- B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00111111,B01110000,B00000000,B00001000,B00100000,B10000000,
- B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00000100,B00010000,B01000000,
- B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,
- B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00011111,B11111111,B11111000,
- B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00011111,B11111111,B11111000
- };
-
- #endif // HOTENDS
-
- #define STATUS_BED_TEXT_X (STATUS_HEATERS_WIDTH - 10)
-
- #else // !HAS_HEATED_BED || HOTENDS > 3
-
- #if HOTENDS == 0
-
- #define STATUS_HEATERS_WIDTH 0
-
- #elif HOTENDS == 1
-
- #define STATUS_HEATERS_WIDTH 12
-
- const unsigned char status_heaters_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00111111,B11110000,
- B00111111,B11110000,
- B00111111,B11110000,
- B00011111,B11100000,
- B00011111,B11100000,
- B00111111,B11110000,
- B00111111,B11110000,
- B00111111,B11110000,
- B00001111,B11000000,
- B00000111,B10000000,
- B00000011,B00000000
- };
-
- #elif HOTENDS == 2
-
- #define STATUS_HEATERS_WIDTH 36
-
- const unsigned char status_heaters_bmp[] PROGMEM = {
- B00011111,B11100000,B00000000,B00011111,B11100000,
- B00111110,B11110000,B00000000,B00111100,B11110000,
- B00111100,B11110000,B00000000,B00111011,B01110000,
- B00111010,B11110000,B00000000,B00111111,B01110000,
- B00011110,B11100000,B00000000,B00011110,B11100000,
- B00011110,B11100000,B00000000,B00011101,B11100000,
- B00111110,B11110000,B00000000,B00111011,B11110000,
- B00111110,B11110000,B00000000,B00111000,B01110000,
- B00111111,B11110000,B00000000,B00111111,B11110000,
- B00001111,B11000000,B00000000,B00001111,B11000000,
- B00000111,B10000000,B00000000,B00000111,B10000000,
- B00000011,B00000000,B00000000,B00000011,B00000000
- };
-
- #elif HOTENDS == 3
-
- #define STATUS_HEATERS_WIDTH 60
-
- const unsigned char status_heaters_bmp[] PROGMEM = {
- B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,
- B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,
- B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,
- B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,
- B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,
- B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,
- B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,
- B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,
- B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,
- B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,
- B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,
- B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
- };
-
- #elif HOTENDS == 4
-
- #define STATUS_HEATERS_WIDTH 84
-
- const unsigned char status_heaters_bmp[] PROGMEM = {
- B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,
- B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,
- B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,
- B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,
- B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00011011,B01100000,
- B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00011000,B00100000,
- B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00111111,B01110000,
- B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00111111,B01110000,
- B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,
- B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,
- B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,
- B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
- };
-
- #else // HOTENDS > 4
-
- #define STATUS_HEATERS_WIDTH 108
-
- const unsigned char status_heaters_bmp[] PROGMEM = {
- B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,
- B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111000,B01110000,
- B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B11110000,
- B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,B00000000,B00111000,B11110000,
- B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00011011,B01100000,B00000000,B00011111,B01100000,
- B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00011000,B00100000,B00000000,B00011111,B01100000,
- B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,
- B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00111111,B01110000,B00000000,B00111100,B11110000,
- B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,
- B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,
- B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,
- B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
- };
-
- #endif // HOTENDS
-
- #endif // !HAS_HEATED_BED || HOTENDS > 3
-
- #else // !STATUS_COMBINE_HEATERS
-
- //
- // Status Screen Hotends bitmaps
- //
+ #include "status/combined.h"
+ #else
#if HAS_HOTEND
-
- #define STATUS_HOTEND1_WIDTH 16
-
- #define MAX_HOTEND_BITMAPS 5
- #if HOTENDS > MAX_HOTEND_BITMAPS
- #define STATUS_HOTEND_BITMAPS MAX_HOTEND_BITMAPS
- #else
- #define STATUS_HOTEND_BITMAPS HOTENDS
- #endif
-
- #if HOTENDS == 1 || ENABLED(STATUS_HOTEND_NUMBERLESS)
-
- const unsigned char status_hotend_a_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00111111,B11110000,
- B00111111,B11110000,
- B00111111,B11110000,
- B00011111,B11100000,
- B00011111,B11100000,
- B00111111,B11110000,
- B00111111,B11110000,
- B00111111,B11110000,
- B00001111,B11000000,
- B00000111,B10000000,
- B00000011,B00000000
- };
-
- #ifdef STATUS_HOTEND_ANIM
-
- const unsigned char status_hotend_b_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00100000,B00010000,
- B00100000,B00010000,
- B00100000,B00010000,
- B00010000,B00100000,
- B00010000,B00100000,
- B00100000,B00010000,
- B00100000,B00010000,
- B00110000,B00110000,
- B00001000,B01000000,
- B00000100,B10000000,
- B00000011,B00000000
- };
-
- #endif
-
- #elif HOTENDS >= 2
-
- #ifdef STATUS_HOTEND_ANIM
-
- const unsigned char status_hotend1_a_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00111111,B11110000,
- B00111110,B11110000,
- B00111100,B11110000,
- B00011010,B11100000,
- B00011110,B11100000,
- B00111110,B11110000,
- B00111110,B11110000,
- B00111110,B11110000,
- B00001111,B11000000,
- B00000111,B10000000,
- B00000011,B00000000
- };
-
- const unsigned char status_hotend1_b_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00100000,B00010000,
- B00100001,B00010000,
- B00100011,B00010000,
- B00010101,B00100000,
- B00010001,B00100000,
- B00100001,B00010000,
- B00100001,B00010000,
- B00110001,B00110000,
- B00001000,B01000000,
- B00000100,B10000000,
- B00000011,B00000000
- };
-
- const unsigned char status_hotend2_a_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00111111,B11110000,
- B00111100,B11110000,
- B00111011,B01110000,
- B00011111,B01100000,
- B00011110,B11100000,
- B00111101,B11110000,
- B00111011,B11110000,
- B00111000,B01110000,
- B00001111,B11000000,
- B00000111,B10000000,
- B00000011,B00000000
- };
-
- const unsigned char status_hotend2_b_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00100000,B00010000,
- B00100011,B00010000,
- B00100100,B10010000,
- B00010000,B10100000,
- B00010001,B00100000,
- B00100010,B00010000,
- B00100100,B00010000,
- B00110111,B10110000,
- B00001000,B01000000,
- B00000100,B10000000,
- B00000011,B00000000
- };
-
- #else
-
- const unsigned char status_hotend1_a_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00111110,B11110000,
- B00111100,B11110000,
- B00111010,B11110000,
- B00011110,B11100000,
- B00011110,B11100000,
- B00111110,B11110000,
- B00111110,B11110000,
- B00111111,B11110000,
- B00001111,B11000000,
- B00000111,B10000000,
- B00000011,B00000000
- };
-
- const unsigned char status_hotend2_a_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00111100,B11110000,
- B00111011,B01110000,
- B00111111,B01110000,
- B00011110,B11100000,
- B00011101,B11100000,
- B00111011,B11110000,
- B00111000,B01110000,
- B00111111,B11110000,
- B00001111,B11000000,
- B00000111,B10000000,
- B00000011,B00000000
- };
-
- #endif
-
- #if STATUS_HOTEND_BITMAPS >= 3
-
- #ifdef STATUS_HOTEND_ANIM
-
- const unsigned char status_hotend3_a_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00111111,B11110000,
- B00111100,B11110000,
- B00111011,B01110000,
- B00011111,B01100000,
- B00011100,B11100000,
- B00111111,B01110000,
- B00111011,B01110000,
- B00111100,B11110000,
- B00001111,B11000000,
- B00000111,B10000000,
- B00000011,B00000000
- };
-
- const unsigned char status_hotend3_b_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00100000,B00010000,
- B00100011,B00010000,
- B00100100,B10010000,
- B00010000,B10100000,
- B00010011,B00100000,
- B00100000,B10010000,
- B00100100,B10010000,
- B00110011,B00110000,
- B00001000,B01000000,
- B00000100,B10000000,
- B00000011,B00000000
- };
-
- #else
-
- const unsigned char status_hotend3_a_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00111100,B11110000,
- B00111011,B01110000,
- B00111111,B01110000,
- B00011100,B11100000,
- B00011111,B01100000,
- B00111011,B01110000,
- B00111100,B11110000,
- B00111111,B11110000,
- B00001111,B11000000,
- B00000111,B10000000,
- B00000011,B00000000
- };
-
- #endif
-
- #endif
-
- #if STATUS_HOTEND_BITMAPS >= 4
-
- #ifdef STATUS_HOTEND_ANIM
-
- const unsigned char status_hotend4_a_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00111111,B11110000,
- B00111011,B01110000,
- B00111011,B01110000,
- B00011011,B01100000,
- B00011011,B01100000,
- B00111000,B00110000,
- B00111111,B01110000,
- B00111111,B01110000,
- B00001111,B11000000,
- B00000111,B10000000,
- B00000011,B00000000
- };
-
- const unsigned char status_hotend4_b_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00100000,B00010000,
- B00100100,B10010000,
- B00100100,B10010000,
- B00010100,B10100000,
- B00010100,B10100000,
- B00100111,B11010000,
- B00100000,B10010000,
- B00110000,B10110000,
- B00001000,B01000000,
- B00000100,B10000000,
- B00000011,B00000000
- };
-
- #else
-
- const unsigned char status_hotend4_a_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00111011,B01110000,
- B00111011,B01110000,
- B00111011,B01110000,
- B00011011,B01100000,
- B00011000,B00100000,
- B00111111,B01110000,
- B00111111,B01110000,
- B00111111,B11110000,
- B00001111,B11000000,
- B00000111,B10000000,
- B00000011,B00000000
- };
-
- #endif
-
- #endif
-
- #if STATUS_HOTEND_BITMAPS >= 5
-
- #ifdef STATUS_HOTEND_ANIM
-
- const unsigned char status_hotend5_a_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00111111,B11110000,
- B00111000,B01110000,
- B00111011,B11110000,
- B00011000,B11100000,
- B00011111,B01100000,
- B00111111,B01110000,
- B00111011,B01110000,
- B00111100,B11110000,
- B00001111,B11000000,
- B00000111,B10000000,
- B00000011,B00000000
- };
-
- const unsigned char status_hotend5_b_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00100000,B00010000,
- B00100111,B10010000,
- B00100100,B00010000,
- B00010111,B00100000,
- B00010000,B10100000,
- B00100000,B10010000,
- B00100100,B10010000,
- B00110011,B00110000,
- B00001000,B01000000,
- B00000100,B10000000,
- B00000011,B00000000
- };
-
- #else
-
- const unsigned char status_hotend5_a_bmp[] PROGMEM = {
- B00011111,B11100000,
- B00111000,B01110000,
- B00111011,B11110000,
- B00111000,B11110000,
- B00011111,B01100000,
- B00011111,B01100000,
- B00111011,B01110000,
- B00111100,B11110000,
- B00111111,B11110000,
- B00001111,B11000000,
- B00000111,B10000000,
- B00000011,B00000000
- };
-
- #endif
-
- #endif
-
- #endif
-
+ #include "status/hotend.h"
#else
#define STATUS_HEATERS_HEIGHT 20
#endif
-
- #endif
-
-#endif // !STATUS_HEATERS_WIDTH && !STATUS_HOTEND1_WIDTH
-
-// LASER / SPINDLE
-#if !STATUS_CUTTER_WIDTH && HAS_CUTTER
- #define STATUS_CUTTER_WIDTH 24
- #define STATUS_CUTTER_X 80
- #if ENABLED(LASER_FEATURE)
- #ifdef STATUS_CUTTER_ANIM
- const unsigned char status_cutter_on_bmp[] PROGMEM = {
- B00000000,B00100100,B00000000,
- B00000000,B01100110,B00000000,
- B00000000,B11000011,B00000000,
- B00000001,B10011001,B10000000,
- B00000011,B00100100,B11000000,
- B00000000,B01000010,B00000000,
- B00000000,B01000010,B00000000,
- B00000011,B00100100,B11000000,
- B00000001,B10011001,B10000000,
- B00000000,B11000011,B00000000,
- B00000000,B01100110,B00000000,
- B00000000,B00100100,B00000000
- };
- const unsigned char status_cutter_bmp[] PROGMEM = {
- B00000000,B00100100,B00000000,
- B00000000,B01100110,B00000000,
- B00000000,B00000000,B00000000,
- B00000001,B00000000,B10000000,
- B00000011,B00000000,B11000000,
- B00000000,B00011000,B00000000,
- B00000000,B00011000,B00000000,
- B00000011,B00000000,B11000000,
- B00000001,B00000000,B10000000,
- B00000000,B00000000,B00000000,
- B00000000,B01100110,B00000000,
- B00000000,B00100100,B00000000
- };
- #else
- const unsigned char status_cutter_bmp[] PROGMEM = {
- B00000000,B00100100,B00000000,
- B00000000,B01100110,B00000000,
- B00000000,B11000011,B00000000,
- B00000001,B10000001,B10000000,
- B00000011,B00000000,B11000000,
- B00000000,B00000000,B00000000,
- B00000000,B00000000,B00000000,
- B00000011,B00000000,B11000000,
- B00000001,B10000001,B10000000,
- B00000000,B11000011,B00000000,
- B00000000,B01100110,B00000000,
- B00000000,B00100100,B00000000
- };
- #endif
- #else
- #ifdef STATUS_CUTTER_ANIM
- const unsigned char status_cutter_on_bmp[] PROGMEM = {
- B00000001,B11111110,B10000000,
- B00000000,B11000000,B00000000,
- B00000001,B10000000,B10000000,
- B00000001,B00000000,B10000000,
- B00000001,B11111100,B10000000,
- B00000000,B11100000,B00000000,
- B00000001,B11000000,B10000000,
- B00000000,B10000001,B00000000,
- B00000000,B01111010,B00000000,
- B00000000,B00110100,B00000000,
- B00000000,B00011000,B00000000,
- B00000000,B00000000,B00000000
- };
- const unsigned char status_cutter_bmp[] PROGMEM = {
- B00000001,B11111110,B10000000,
- B00000000,B11000000,B00000000,
- B00000001,B10000000,B10000000,
- B00000001,B00000000,B10000000,
- B00000001,B11111100,B10000000,
- B00000000,B11100000,B00000000,
- B00000001,B11000000,B10000000,
- B00000000,B10000001,B00000000,
- B00000000,B01111010,B00000000,
- B00000000,B00110100,B00000000,
- B00000000,B00011000,B00000000,
- B00000000,B00000000,B00000000
- };
- #else
- const unsigned char status_cutter_bmp[] PROGMEM = {
- B00000001,B11000010,B10000000,
- B00000001,B00011100,B10000000,
- B00000000,B11100001,B00000000,
- B00000001,B00001110,B10000000,
- B00000001,B01110000,B10000000,
- B00000000,B10000111,B10000000,
- B00000001,B00111111,B10000000,
- B00000000,B11111111,B00000000,
- B00000000,B01111110,B00000000,
- B00000000,B00111100,B00000000,
- B00000000,B00011000,B00000000,
- B00000000,B00000000,B00000000
- };
- #endif
- #endif
-#endif // LASER / SPINDLE
-
-//
-// Default Status Screen Bed bitmaps
-//
-#if !STATUS_BED_WIDTH && HAS_HEATED_BED && DISABLED(STATUS_COMBINE_HEATERS)
-
- #if ENABLED(STATUS_ALT_BED_BITMAP)
-
- #define STATUS_BED_ANIM
- #define STATUS_BED_WIDTH 24
- #ifndef STATUS_BED_X
- #define STATUS_BED_X (LCD_PIXEL_WIDTH - (STATUS_BED_BYTEWIDTH + STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8)
- #endif
- #define STATUS_BED_TEXT_X (STATUS_BED_X + 11)
-
- const unsigned char status_bed_bmp[] PROGMEM = {
- B11111111,B11111111,B11000000,
- B01000000,B00000000,B00100000,
- B00100000,B00000000,B00010000,
- B00010000,B00000000,B00001000,
- B00001000,B00000000,B00000100,
- B00000100,B00000000,B00000010,
- B00000011,B11111111,B11111111
- };
-
- const unsigned char status_bed_on_bmp[] PROGMEM = {
- B00000010,B00100010,B00000000,
- B00000100,B01000100,B00000000,
- B00000100,B01000100,B00000000,
- B00000010,B00100010,B00000000,
- B00000001,B00010001,B00000000,
- B11111111,B11111111,B11000000,
- B01000000,B10001000,B10100000,
- B00100001,B00010001,B00010000,
- B00010010,B00100010,B00001000,
- B00001000,B00000000,B00000100,
- B00000100,B00000000,B00000010,
- B00000011,B11111111,B11111111
- };
-
- #else
-
- #define STATUS_BED_WIDTH 21
- #ifndef STATUS_BED_X
- #define STATUS_BED_X (LCD_PIXEL_WIDTH - (STATUS_BED_BYTEWIDTH + STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8)
- #endif
-
- #ifdef STATUS_BED_ANIM
-
- const unsigned char status_bed_bmp[] PROGMEM = {
- B00011111,B11111111,B11111000,
- B00011111,B11111111,B11111000
- };
-
- const unsigned char status_bed_on_bmp[] PROGMEM = {
- B00000100,B00010000,B01000000,
- B00000010,B00001000,B00100000,
- B00000010,B00001000,B00100000,
- B00000100,B00010000,B01000000,
- B00001000,B00100000,B10000000,
- B00010000,B01000001,B00000000,
- B00010000,B01000001,B00000000,
- B00001000,B00100000,B10000000,
- B00000100,B00010000,B01000000,
- B00000000,B00000000,B00000000,
- B00011111,B11111111,B11111000,
- B00011111,B11111111,B11111000
- };
-
- #else
-
- const unsigned char status_bed_bmp[] PROGMEM = {
- B00000100,B00010000,B01000000,
- B00000010,B00001000,B00100000,
- B00000010,B00001000,B00100000,
- B00000100,B00010000,B01000000,
- B00001000,B00100000,B10000000,
- B00010000,B01000001,B00000000,
- B00010000,B01000001,B00000000,
- B00001000,B00100000,B10000000,
- B00000100,B00010000,B01000000,
- B00000000,B00000000,B00000000,
- B00011111,B11111111,B11111000,
- B00011111,B11111111,B11111000
- };
-
- #endif
-
#endif
#endif
+//
+// Laser / Spindle
+//
+#if !STATUS_CUTTER_WIDTH && HAS_CUTTER
+ #include "status/cutter.h"
+#endif
+#ifndef STATUS_CUTTER_WIDTH
+ #define STATUS_CUTTER_WIDTH 0
+#endif
+
+//
+// Bed
+//
+#if !STATUS_BED_WIDTH && HAS_HEATED_BED && DISABLED(STATUS_COMBINE_HEATERS)
+ #include "status/bed.h"
+#endif
#ifndef STATUS_BED_WIDTH
#define STATUS_BED_WIDTH 0
#endif
+//
+// Chamber
+//
#if !STATUS_CHAMBER_WIDTH && HAS_TEMP_CHAMBER && ((HOTENDS <= 4 && !HAS_HEATED_BED) || (HOTENDS <= 3 && HAS_HEATED_BED))
- #define STATUS_CHAMBER_WIDTH 21
- #if STATUS_HEATERS_WIDTH
- #if ENABLED(STATUS_COMBINE_HEATERS)
- #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - 2 - (STATUS_CHAMBER_BYTEWIDTH) * 8)
- #elif HAS_FAN0 && HAS_HEATED_BED && HOTENDS <= 2
- #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - 2 - (STATUS_HEATERS_BYTEWIDTH - STATUS_CHAMBER_BYTEWIDTH) * 8)
- #elif HAS_FAN0 && !HAS_HEATED_BED
- #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - (STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8)
- #else
- #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - (STATUS_CHAMBER_BYTEWIDTH) * 8)
- #endif
- #endif
-
- #ifdef STATUS_CHAMBER_ANIM
-
- const unsigned char status_chamber_bmp[] PROGMEM = {
- B00011111,B11111111,B11111000,
- B00010000,B00000000,B00001000,
- B00010000,B00000000,B00001000,
- B00010000,B00000000,B00001000,
- B00010000,B00000000,B00001000,
- B00010000,B00000000,B00001000,
- B00010000,B00000000,B00001000,
- B00010000,B00000000,B00001000,
- B00010000,B00000000,B00001000,
- B00010000,B00000000,B00001000,
- B00011111,B11111111,B11111000,
- B00011111,B11111111,B11111000
- };
- const unsigned char status_chamber_on_bmp[] PROGMEM = {
- B00011111,B11111111,B11111000,
- B00010000,B00000000,B00001000,
- B00010000,B10000100,B00001000,
- B00010000,B01000010,B00001000,
- B00010000,B01000010,B00001000,
- B00010000,B10000100,B00001000,
- B00010001,B00001000,B00001000,
- B00010001,B00001000,B00001000,
- B00010000,B10000100,B00001000,
- B00010000,B00000000,B00001000,
- B00011111,B11111111,B11111000,
- B00011111,B11111111,B11111000
- };
-
- #else
-
- const unsigned char status_chamber_bmp[] PROGMEM = {
- B00011111,B11111111,B11111000,
- B00010000,B00000000,B00001000,
- B00010000,B10000100,B00001000,
- B00010000,B01000010,B00001000,
- B00010000,B01000010,B00001000,
- B00010000,B10000100,B00001000,
- B00010001,B00001000,B00001000,
- B00010001,B00001000,B00001000,
- B00010000,B10000100,B00001000,
- B00010000,B00000000,B00001000,
- B00011111,B11111111,B11111000,
- B00011111,B11111111,B11111000
- };
-
- #endif
+ #include "status/chamber.h"
#endif
-
#ifndef STATUS_CHAMBER_WIDTH
#define STATUS_CHAMBER_WIDTH 0
#endif
@@ -881,427 +119,7 @@
// Provide default Fan Bitmaps
//
#if !STATUS_FAN_WIDTH && STATUS_FAN_FRAMES > 0
-
- // Provide a fan animation if none exists
-
- #if STATUS_FAN_FRAMES <= 2
-
- #define STATUS_FAN_Y 2
- #define STATUS_FAN_WIDTH 20
-
- #if ENABLED(STATUS_ALT_FAN_BITMAP)
-
- const unsigned char status_fan0_bmp[] PROGMEM = {
- B00000001,B11111110,B00000000,
- B00000110,B00000001,B10000000,
- B00001000,B11111100,B01000000,
- B00010000,B11111100,B00100000,
- B00010000,B01111000,B00100000,
- B00100000,B00110000,B00010000,
- B00101100,B00000000,B11010000,
- B00101110,B00110001,B11010000,
- B00101111,B01111011,B11010000,
- B00101111,B01111011,B11010000,
- B00101110,B00110001,B11010000,
- B00101100,B00000000,B11010000,
- B00100000,B00110000,B00010000,
- B00010000,B01111000,B00100000,
- B00010000,B11111100,B00100000,
- B00001000,B11111100,B01000000,
- B00000110,B00000001,B10000000,
- B00000001,B11111110,B00000000
- };
-
- #if STATUS_FAN_FRAMES == 2
- const unsigned char status_fan1_bmp[] PROGMEM = {
- B00000001,B11111110,B00000000,
- B00000110,B00000001,B10000000,
- B00001001,B10000110,B01000000,
- B00010011,B10000111,B00100000,
- B00010111,B10000111,B10100000,
- B00101111,B10000111,B11010000,
- B00101111,B00000011,B11010000,
- B00100000,B00110000,B00010000,
- B00100000,B01111000,B00010000,
- B00100000,B01111000,B00010000,
- B00100000,B00110000,B00010000,
- B00101111,B00000011,B11010000,
- B00101111,B10000111,B11010000,
- B00010111,B10000111,B10100000,
- B00010011,B10000111,B00100000,
- B00001001,B10000110,B01000000,
- B00000110,B00000001,B10000000,
- B00000001,B11111110,B00000000
- };
- #endif
-
- #else // !STATUS_ALT_FAN_BITMAP
-
- const unsigned char status_fan0_bmp[] PROGMEM = {
- B00111111,B11111111,B11110000,
- B00111000,B00000000,B01110000,
- B00110000,B11111100,B00110000,
- B00100000,B11111100,B00010000,
- B00100000,B01111000,B00010000,
- B00100000,B00110000,B00010000,
- B00101100,B00000000,B11010000,
- B00101110,B00110001,B11010000,
- B00101111,B01111011,B11010000,
- B00101111,B01111011,B11010000,
- B00101110,B00110001,B11010000,
- B00101100,B00000000,B11010000,
- B00100000,B00110000,B00010000,
- B00100000,B01111000,B00010000,
- B00100000,B11111100,B00010000,
- B00110000,B11111100,B00110000,
- B00111000,B00000000,B01110000,
- B00111111,B11111111,B11110000
- };
-
- #if STATUS_FAN_FRAMES == 2
- const unsigned char status_fan1_bmp[] PROGMEM = {
- B00111111,B11111111,B11110000,
- B00111000,B00000000,B01110000,
- B00110001,B10000110,B00110000,
- B00100011,B10000111,B00010000,
- B00100111,B10000111,B10010000,
- B00101111,B10000111,B11010000,
- B00101111,B00000011,B11010000,
- B00100000,B00110000,B00010000,
- B00100000,B01111000,B00010000,
- B00100000,B01111000,B00010000,
- B00100000,B00110000,B00010000,
- B00101111,B00000011,B11010000,
- B00101111,B10000111,B11010000,
- B00100111,B10000111,B10010000,
- B00100011,B10000111,B00010000,
- B00110001,B10000110,B00110000,
- B00111000,B00000000,B01110000,
- B00111111,B11111111,B11110000
- };
- #endif
-
- #endif // !STATUS_ALT_FAN_BITMAP
-
- #elif STATUS_FAN_FRAMES == 3
-
- #define STATUS_FAN_WIDTH 20
-
- #if ENABLED(STATUS_ALT_FAN_BITMAP)
-
- const unsigned char status_fan0_bmp[] PROGMEM = {
- B00000001,B11111111,B00000000,
- B00000110,B00000000,B11000000,
- B00001001,B00000001,B00100000,
- B00010111,B10000011,B11010000,
- B00010111,B10000011,B11010000,
- B00101111,B11000111,B11101000,
- B00100111,B11000111,B11001000,
- B00100001,B11111111,B00001000,
- B00100000,B01111100,B00001000,
- B00100000,B01111100,B00001000,
- B00100000,B01111100,B00001000,
- B00100001,B11111111,B00001000,
- B00100111,B11000111,B11001000,
- B00101111,B11000111,B11101000,
- B00010111,B10000011,B11010000,
- B00010111,B10000011,B11010000,
- B00001001,B00000001,B00100000,
- B00000110,B00000000,B11000000,
- B00000001,B11111111,B00000000
- };
- const unsigned char status_fan1_bmp[] PROGMEM = {
- B00000001,B11111111,B00000000,
- B00000110,B00110000,B11000000,
- B00001001,B11110000,B00100000,
- B00010001,B11110000,B00010000,
- B00010000,B11110000,B00010000,
- B00100000,B11110000,B01101000,
- B00100000,B00110001,B11101000,
- B00100000,B00111001,B11101000,
- B00100000,B01111111,B11111000,
- B00111111,B11111111,B11111000,
- B00111111,B11111100,B00001000,
- B00101111,B00111000,B00001000,
- B00101110,B00011000,B00001000,
- B00101100,B00011110,B00001000,
- B00010000,B00011110,B00010000,
- B00010000,B00011111,B00010000,
- B00001000,B00011111,B00100000,
- B00000110,B00011000,B11000000,
- B00000001,B11111111,B00000000
- };
- const unsigned char status_fan2_bmp[] PROGMEM = {
- B00000001,B11111111,B00000000,
- B00000110,B00011000,B11000000,
- B00001000,B00011111,B00100000,
- B00010000,B00011111,B10010000,
- B00010100,B00011111,B00010000,
- B00101110,B00011110,B00001000,
- B00101111,B00011100,B00001000,
- B00101111,B10111000,B00001000,
- B00111111,B11111100,B00001000,
- B00111111,B11111111,B11111000,
- B00100000,B01111111,B11111000,
- B00100000,B00111011,B11101000,
- B00100000,B01110001,B11101000,
- B00100000,B11110000,B11101000,
- B00010001,B11110000,B01010000,
- B00010011,B11110000,B00010000,
- B00001001,B11110000,B00100000,
- B00000110,B00110000,B11000000,
- B00000001,B11111111,B00000000
- };
-
- #else // !STATUS_ALT_FAN_BITMAP
-
- const unsigned char status_fan0_bmp[] PROGMEM = {
- B00111111,B11111111,B11111000,
- B00111110,B00000000,B11111000,
- B00111001,B00000001,B00111000,
- B00110111,B10000011,B11011000,
- B00110111,B10000011,B11011000,
- B00101111,B11000111,B11101000,
- B00100111,B11000111,B11001000,
- B00100001,B11111111,B00001000,
- B00100000,B01111100,B00001000,
- B00100000,B01111100,B00001000,
- B00100000,B01111100,B00001000,
- B00100001,B11111111,B00001000,
- B00100111,B11000111,B11001000,
- B00101111,B11000111,B11101000,
- B00110111,B10000011,B11011000,
- B00110111,B10000011,B11011000,
- B00111001,B00000001,B00111000,
- B00111110,B00000000,B11111000,
- B00111111,B11111111,B11111000
- };
- const unsigned char status_fan1_bmp[] PROGMEM = {
- B00111111,B11111111,B11111000,
- B00111110,B00110000,B11111000,
- B00111001,B11110000,B00111000,
- B00110001,B11110000,B00011000,
- B00110000,B11110000,B00011000,
- B00100000,B11110000,B01101000,
- B00100000,B00110001,B11101000,
- B00100000,B00111001,B11101000,
- B00100000,B01111111,B11111000,
- B00111111,B11111111,B11111000,
- B00111111,B11111100,B00001000,
- B00101111,B00111000,B00001000,
- B00101110,B00011000,B00001000,
- B00101100,B00011110,B00001000,
- B00110000,B00011110,B00011000,
- B00110000,B00011111,B00011000,
- B00111000,B00011111,B00111000,
- B00111110,B00011000,B11111000,
- B00111111,B11111111,B11111000
- };
- const unsigned char status_fan2_bmp[] PROGMEM = {
- B00111111,B11111111,B11111000,
- B00111110,B00011000,B11111000,
- B00111000,B00011111,B00111000,
- B00110000,B00011111,B10011000,
- B00110100,B00011111,B00011000,
- B00101110,B00011110,B00001000,
- B00101111,B00011100,B00001000,
- B00101111,B10111000,B00001000,
- B00111111,B11111100,B00001000,
- B00111111,B11111111,B11111000,
- B00100000,B01111111,B11111000,
- B00100000,B00111011,B11101000,
- B00100000,B01110001,B11101000,
- B00100000,B11110000,B11101000,
- B00110001,B11110000,B01011000,
- B00110011,B11110000,B00011000,
- B00111001,B11110000,B00111000,
- B00111110,B00110000,B11111000,
- B00111111,B11111111,B11111000
- };
-
- #endif // !STATUS_ALT_FAN_BITMAP
-
- #elif STATUS_FAN_FRAMES == 4
-
- #define STATUS_FAN_WIDTH 20
-
- #if ENABLED(STATUS_ALT_FAN_BITMAP)
-
- const unsigned char status_fan0_bmp[] PROGMEM = {
- B00000001,B11111111,B00000000,
- B00000110,B00000000,B11000000,
- B00001000,B00111111,B00100000,
- B00010000,B01111110,B00010000,
- B00010000,B01111100,B00010000,
- B00101000,B01111100,B00001000,
- B00101100,B00111000,B00001000,
- B00101111,B00111001,B11001000,
- B00101111,B11111111,B11101000,
- B00101111,B11000111,B11101000,
- B00101111,B11111111,B11101000,
- B00100111,B00111001,B11101000,
- B00100000,B00111000,B01101000,
- B00100000,B01111100,B00101000,
- B00010000,B01111100,B00010000,
- B00010000,B11111100,B00010000,
- B00001001,B11111000,B00100000,
- B00000110,B00000000,B11000000,
- B00000001,B11111111,B00000000
- };
- const unsigned char status_fan1_bmp[] PROGMEM = {
- B00000001,B11111111,B00000000,
- B00000110,B00000000,B11000000,
- B00001000,B00001111,B00100000,
- B00010100,B00011111,B11010000,
- B00010110,B00011111,B10010000,
- B00101111,B00011111,B00001000,
- B00101111,B10011110,B00001000,
- B00101111,B11111100,B00001000,
- B00101111,B11011100,B00001000,
- B00100111,B11101111,B11001000,
- B00100000,B01110111,B11101000,
- B00100000,B01111111,B11101000,
- B00100000,B11110011,B11101000,
- B00100001,B11110001,B11101000,
- B00010011,B11110000,B11010000,
- B00010111,B11110000,B01010000,
- B00001001,B11100000,B00100000,
- B00000110,B00000000,B11000000,
- B00000001,B11111111,B00000000
- };
- const unsigned char status_fan2_bmp[] PROGMEM = {
- B00000001,B11111111,B00000000,
- B00000110,B10000000,B11000000,
- B00001001,B10000000,B00100000,
- B00010111,B10000001,B11010000,
- B00010111,B11000011,B11010000,
- B00100111,B11000111,B11101000,
- B00100011,B11000111,B11111000,
- B00100001,B11111111,B10001000,
- B00100000,B01101100,B00001000,
- B00100000,B01101100,B00001000,
- B00100000,B01101100,B00001000,
- B00100011,B11111111,B00001000,
- B00111111,B11000111,B10001000,
- B00101111,B11000111,B11001000,
- B00010111,B10000111,B11010000,
- B00010111,B00000011,B11010000,
- B00001000,B00000011,B00100000,
- B00000110,B00000010,B11000000,
- B00000001,B11111111,B00000000
- };
- const unsigned char status_fan3_bmp[] PROGMEM = {
- B00000001,B11111111,B00000000,
- B00000110,B00000000,B11000000,
- B00001001,B11110000,B00100000,
- B00010001,B11100000,B00010000,
- B00010001,B11100000,B00010000,
- B00100001,B11100001,B11101000,
- B00100000,B11110011,B11101000,
- B00100000,B01111111,B11101000,
- B00100000,B01110111,B11101000,
- B00101000,B11101110,B00101000,
- B00101111,B11011100,B00001000,
- B00101111,B11111100,B00001000,
- B00101111,B10011110,B00001000,
- B00101111,B00001111,B00001000,
- B00010000,B00001111,B00010000,
- B00010000,B00001111,B00010000,
- B00001000,B00011111,B00100000,
- B00000110,B00000000,B11000000,
- B00000001,B11111111,B00000000
- };
-
- #else // !STATUS_ALT_FAN_BITMAP
-
- const unsigned char status_fan0_bmp[] PROGMEM = {
- B00111111,B11111111,B11111000,
- B00111110,B00000000,B11111000,
- B00111000,B00111111,B00111000,
- B00110000,B01111110,B00011000,
- B00110000,B01111100,B00011000,
- B00101000,B01111100,B00001000,
- B00101100,B00111000,B00001000,
- B00101111,B00111001,B11001000,
- B00101111,B11111111,B11101000,
- B00101111,B11000111,B11101000,
- B00101111,B11111111,B11101000,
- B00100111,B00111001,B11101000,
- B00100000,B00111000,B01101000,
- B00100000,B01111100,B00101000,
- B00110000,B01111100,B00011000,
- B00110000,B11111100,B00011000,
- B00111001,B11111000,B00111000,
- B00111110,B00000000,B11111000,
- B00111111,B11111111,B11111000
- };
- const unsigned char status_fan1_bmp[] PROGMEM = {
- B00111111,B11111111,B11111000,
- B00111110,B00000000,B11111000,
- B00111000,B00001111,B00111000,
- B00110100,B00011111,B11011000,
- B00110110,B00011111,B10011000,
- B00101111,B00011111,B00001000,
- B00101111,B10011110,B00001000,
- B00101111,B11111100,B00001000,
- B00101111,B11011100,B00001000,
- B00100111,B11101111,B11001000,
- B00100000,B01110111,B11101000,
- B00100000,B01111111,B11101000,
- B00100000,B11110011,B11101000,
- B00100001,B11110001,B11101000,
- B00110011,B11110000,B11011000,
- B00110111,B11110000,B01011000,
- B00111001,B11100000,B00111000,
- B00111110,B00000000,B11111000,
- B00111111,B11111111,B11111000
- };
- const unsigned char status_fan2_bmp[] PROGMEM = {
- B00111111,B11111111,B11111000,
- B00111110,B10000000,B11111000,
- B00111001,B10000000,B00111000,
- B00110111,B10000001,B11011000,
- B00110111,B11000011,B11011000,
- B00100111,B11000111,B11101000,
- B00100011,B11000111,B11111000,
- B00100001,B11111111,B10001000,
- B00100000,B01101100,B00001000,
- B00100000,B01101100,B00001000,
- B00100000,B01101100,B00001000,
- B00100011,B11111111,B00001000,
- B00111111,B11000111,B10001000,
- B00101111,B11000111,B11001000,
- B00110111,B10000111,B11011000,
- B00110111,B00000011,B11011000,
- B00111000,B00000011,B00111000,
- B00111110,B00000010,B11111000,
- B00111111,B11111111,B11111000
- };
- const unsigned char status_fan3_bmp[] PROGMEM = {
- B00111111,B11111111,B11111000,
- B00111110,B00000000,B11111000,
- B00111001,B11110000,B00111000,
- B00110001,B11100000,B00011000,
- B00110001,B11100000,B00011000,
- B00100001,B11100001,B11101000,
- B00100000,B11110011,B11101000,
- B00100000,B01111111,B11101000,
- B00100000,B01110111,B11101000,
- B00101000,B11101110,B00101000,
- B00101111,B11011100,B00001000,
- B00101111,B11111100,B00001000,
- B00101111,B10011110,B00001000,
- B00101111,B00001111,B00001000,
- B00110000,B00001111,B00011000,
- B00110000,B00001111,B00011000,
- B00111000,B00011111,B00111000,
- B00111110,B00000000,B11111000,
- B00111111,B11111111,B11111000
- };
-
- #endif // !STATUS_ALT_FAN_BITMAP
-
- #endif
+ #include "status/fan.h"
#else
#undef STATUS_FAN_FRAMES
#define STATUS_FAN_WIDTH 0
@@ -1325,7 +143,6 @@
#endif
#if ENABLED(CUSTOM_STATUS_SCREEN_IMAGE)
-
//
// Disable the logo bitmap if insufficient space
//
@@ -1341,7 +158,7 @@
#undef STATUS_LOGO_WIDTH
#endif
- #if !defined(STATUS_HEATERS_X) && ((HAS_MULTI_HOTEND && STATUS_LOGO_WIDTH && BED_OR_CHAMBER_OR_FAN) || (HOTENDS >= 3 && !BED_OR_CHAMBER_OR_FAN))
+ #if !defined(STATUS_HEATERS_X) && ((HAS_HOTEND && STATUS_LOGO_WIDTH && BED_OR_CHAMBER_OR_FAN) || (HOTENDS >= 3 && !BED_OR_CHAMBER_OR_FAN))
#define _STATUS_HEATERS_X(H,S,N) ((LCD_PIXEL_WIDTH - (H * (S + N)) - (_EXTRA_WIDTH) + (STATUS_LOGO_WIDTH)) / 2)
#if STATUS_HOTEND1_WIDTH
#if HOTENDS > 2
@@ -1353,7 +170,6 @@
#define STATUS_HEATERS_X _STATUS_HEATERS_X(1, STATUS_HEATERS_WIDTH, 4)
#endif
#endif
-
#endif
//
@@ -1367,14 +183,18 @@
#endif
#if STATUS_LOGO_WIDTH
#ifndef STATUS_LOGO_X
- #define STATUS_LOGO_X 0
- #endif
- #ifndef STATUS_LOGO_Y
- #define STATUS_LOGO_Y _MIN(0U, (20 - (STATUS_LOGO_HEIGHT)) / 2)
+ #ifdef STATUS_HEATERS_X
+ #define STATUS_LOGO_X ((STATUS_HEATERS_X - (STATUS_LOGO_WIDTH) - 1) / 2)
+ #else
+ #define STATUS_LOGO_X 0
+ #endif
#endif
#ifndef STATUS_LOGO_HEIGHT
#define STATUS_LOGO_HEIGHT (sizeof(status_logo_bmp) / (STATUS_LOGO_BYTEWIDTH))
#endif
+ #ifndef STATUS_LOGO_Y
+ #define STATUS_LOGO_Y _MAX(0L, (28L - _MIN(28L, STATUS_LOGO_HEIGHT)) / 2L)
+ #endif
static_assert(
sizeof(status_logo_bmp) == (STATUS_LOGO_BYTEWIDTH) * (STATUS_LOGO_HEIGHT),
"Status logo bitmap (status_logo_bmp) dimensions don't match data."
diff --git a/Marlin/src/lcd/dogm/status/bed.h b/Marlin/src/lcd/dogm/status/bed.h
new file mode 100644
index 0000000000..c484a12929
--- /dev/null
+++ b/Marlin/src/lcd/dogm/status/bed.h
@@ -0,0 +1,110 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+//
+// lcd/dogm/status/bed.h - Status Screen Bed bitmaps
+//
+
+#if ENABLED(STATUS_ALT_BED_BITMAP)
+
+ #define STATUS_BED_ANIM
+ #define STATUS_BED_WIDTH 24
+ #ifndef STATUS_BED_X
+ #define STATUS_BED_X (LCD_PIXEL_WIDTH - (STATUS_BED_BYTEWIDTH + STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8)
+ #endif
+ #define STATUS_BED_TEXT_X (STATUS_BED_X + 11)
+
+ const unsigned char status_bed_bmp[] PROGMEM = {
+ B11111111,B11111111,B11000000,
+ B01000000,B00000000,B00100000,
+ B00100000,B00000000,B00010000,
+ B00010000,B00000000,B00001000,
+ B00001000,B00000000,B00000100,
+ B00000100,B00000000,B00000010,
+ B00000011,B11111111,B11111111
+ };
+
+ const unsigned char status_bed_on_bmp[] PROGMEM = {
+ B00000010,B00100010,B00000000,
+ B00000100,B01000100,B00000000,
+ B00000100,B01000100,B00000000,
+ B00000010,B00100010,B00000000,
+ B00000001,B00010001,B00000000,
+ B11111111,B11111111,B11000000,
+ B01000000,B10001000,B10100000,
+ B00100001,B00010001,B00010000,
+ B00010010,B00100010,B00001000,
+ B00001000,B00000000,B00000100,
+ B00000100,B00000000,B00000010,
+ B00000011,B11111111,B11111111
+ };
+
+#else
+
+ #define STATUS_BED_WIDTH 21
+ #ifndef STATUS_BED_X
+ #define STATUS_BED_X (LCD_PIXEL_WIDTH - (STATUS_BED_BYTEWIDTH + STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8)
+ #endif
+
+ #ifdef STATUS_BED_ANIM
+
+ const unsigned char status_bed_bmp[] PROGMEM = {
+ B00011111,B11111111,B11111000,
+ B00011111,B11111111,B11111000
+ };
+
+ const unsigned char status_bed_on_bmp[] PROGMEM = {
+ B00000100,B00010000,B01000000,
+ B00000010,B00001000,B00100000,
+ B00000010,B00001000,B00100000,
+ B00000100,B00010000,B01000000,
+ B00001000,B00100000,B10000000,
+ B00010000,B01000001,B00000000,
+ B00010000,B01000001,B00000000,
+ B00001000,B00100000,B10000000,
+ B00000100,B00010000,B01000000,
+ B00000000,B00000000,B00000000,
+ B00011111,B11111111,B11111000,
+ B00011111,B11111111,B11111000
+ };
+
+ #else
+
+ const unsigned char status_bed_bmp[] PROGMEM = {
+ B00000100,B00010000,B01000000,
+ B00000010,B00001000,B00100000,
+ B00000010,B00001000,B00100000,
+ B00000100,B00010000,B01000000,
+ B00001000,B00100000,B10000000,
+ B00010000,B01000001,B00000000,
+ B00010000,B01000001,B00000000,
+ B00001000,B00100000,B10000000,
+ B00000100,B00010000,B01000000,
+ B00000000,B00000000,B00000000,
+ B00011111,B11111111,B11111000,
+ B00011111,B11111111,B11111000
+ };
+
+ #endif
+
+#endif
diff --git a/Marlin/src/lcd/dogm/status/chamber.h b/Marlin/src/lcd/dogm/status/chamber.h
new file mode 100644
index 0000000000..787a90884a
--- /dev/null
+++ b/Marlin/src/lcd/dogm/status/chamber.h
@@ -0,0 +1,89 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+//
+// lcd/dogm/status/chamber.h - Status Screen Chamber bitmaps
+//
+
+#define STATUS_CHAMBER_WIDTH 21
+#if STATUS_HEATERS_WIDTH
+ #if ENABLED(STATUS_COMBINE_HEATERS)
+ #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - 2 - (STATUS_CHAMBER_BYTEWIDTH) * 8)
+ #elif HAS_FAN0 && HAS_HEATED_BED && HOTENDS <= 2
+ #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - 2 - (STATUS_HEATERS_BYTEWIDTH - STATUS_CHAMBER_BYTEWIDTH) * 8)
+ #elif HAS_FAN0 && !HAS_HEATED_BED
+ #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - (STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8)
+ #else
+ #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - (STATUS_CHAMBER_BYTEWIDTH) * 8)
+ #endif
+#endif
+
+#ifdef STATUS_CHAMBER_ANIM
+
+ const unsigned char status_chamber_bmp[] PROGMEM = {
+ B00011111,B11111111,B11111000,
+ B00010000,B00000000,B00001000,
+ B00010000,B00000000,B00001000,
+ B00010000,B00000000,B00001000,
+ B00010000,B00000000,B00001000,
+ B00010000,B00000000,B00001000,
+ B00010000,B00000000,B00001000,
+ B00010000,B00000000,B00001000,
+ B00010000,B00000000,B00001000,
+ B00010000,B00000000,B00001000,
+ B00011111,B11111111,B11111000,
+ B00011111,B11111111,B11111000
+ };
+ const unsigned char status_chamber_on_bmp[] PROGMEM = {
+ B00011111,B11111111,B11111000,
+ B00010000,B00000000,B00001000,
+ B00010000,B10000100,B00001000,
+ B00010000,B01000010,B00001000,
+ B00010000,B01000010,B00001000,
+ B00010000,B10000100,B00001000,
+ B00010001,B00001000,B00001000,
+ B00010001,B00001000,B00001000,
+ B00010000,B10000100,B00001000,
+ B00010000,B00000000,B00001000,
+ B00011111,B11111111,B11111000,
+ B00011111,B11111111,B11111000
+ };
+
+#else
+
+ const unsigned char status_chamber_bmp[] PROGMEM = {
+ B00011111,B11111111,B11111000,
+ B00010000,B00000000,B00001000,
+ B00010000,B10000100,B00001000,
+ B00010000,B01000010,B00001000,
+ B00010000,B01000010,B00001000,
+ B00010000,B10000100,B00001000,
+ B00010001,B00001000,B00001000,
+ B00010001,B00001000,B00001000,
+ B00010000,B10000100,B00001000,
+ B00010000,B00000000,B00001000,
+ B00011111,B11111111,B11111000,
+ B00011111,B11111111,B11111000
+ };
+
+#endif
diff --git a/Marlin/src/lcd/dogm/status/combined.h b/Marlin/src/lcd/dogm/status/combined.h
new file mode 100644
index 0000000000..69aad5b00e
--- /dev/null
+++ b/Marlin/src/lcd/dogm/status/combined.h
@@ -0,0 +1,236 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+//
+// lcd/dogm/status/combined.h - Status Screen Combined Heater bitmaps
+//
+
+#undef STATUS_HOTEND_ANIM
+#undef STATUS_BED_ANIM
+#define STATUS_HEATERS_XSPACE 24
+
+#if HAS_HEATED_BED && HOTENDS <= 4
+
+ #if HOTENDS == 0
+
+ #define STATUS_HEATERS_WIDTH 96
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000
+ };
+
+ #elif HOTENDS == 1
+
+ #define STATUS_HEATERS_WIDTH 96
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
+ B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
+ B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
+ B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
+ B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
+ B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
+ B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
+ B00000111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000,
+ B00000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000
+ };
+
+ #elif HOTENDS == 2
+
+ #define STATUS_HEATERS_WIDTH 96
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
+ B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
+ B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
+ B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
+ B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
+ B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
+ B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
+ B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000,
+ B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000
+ };
+
+ #elif HOTENDS == 3
+
+ #define STATUS_HEATERS_WIDTH 96
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000100,B00010000,B01000000,
+ B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00000010,B00001000,B00100000,
+ B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
+ B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00000100,B00010000,B01000000,
+ B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00001000,B00100000,B10000000,
+ B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00010000,B01000001,B00000000,
+ B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00010000,B01000001,B00000000,
+ B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00001000,B00100000,B10000000,
+ B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00000100,B00010000,B01000000,
+ B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,
+ B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00011111,B11111111,B11111000,
+ B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00011111,B11111111,B11111000
+ };
+
+ #else // HOTENDS > 3
+
+ #define STATUS_HEATERS_WIDTH 120
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000100,B00010000,B01000000,
+ B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
+ B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
+ B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,B00000000,B00000100,B00010000,B01000000,
+ B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00011011,B01100000,B00000000,B00001000,B00100000,B10000000,
+ B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00011000,B00100000,B00000000,B00010000,B01000001,B00000000,
+ B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00111111,B01110000,B00000000,B00010000,B01000001,B00000000,
+ B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00111111,B01110000,B00000000,B00001000,B00100000,B10000000,
+ B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00000100,B00010000,B01000000,
+ B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,
+ B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00011111,B11111111,B11111000,
+ B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00011111,B11111111,B11111000
+ };
+
+ #endif // HOTENDS
+
+ #define STATUS_BED_TEXT_X (STATUS_HEATERS_WIDTH - 10)
+
+#else // !HAS_HEATED_BED || HOTENDS > 3
+
+ #if HOTENDS == 0
+
+ #define STATUS_HEATERS_WIDTH 0
+
+ #elif HOTENDS == 1
+
+ #define STATUS_HEATERS_WIDTH 12
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111111,B11110000,
+ B00111111,B11110000,
+ B00111111,B11110000,
+ B00011111,B11100000,
+ B00011111,B11100000,
+ B00111111,B11110000,
+ B00111111,B11110000,
+ B00111111,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ #elif HOTENDS == 2
+
+ #define STATUS_HEATERS_WIDTH 36
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,B00000000,B00011111,B11100000,
+ B00111110,B11110000,B00000000,B00111100,B11110000,
+ B00111100,B11110000,B00000000,B00111011,B01110000,
+ B00111010,B11110000,B00000000,B00111111,B01110000,
+ B00011110,B11100000,B00000000,B00011110,B11100000,
+ B00011110,B11100000,B00000000,B00011101,B11100000,
+ B00111110,B11110000,B00000000,B00111011,B11110000,
+ B00111110,B11110000,B00000000,B00111000,B01110000,
+ B00111111,B11110000,B00000000,B00111111,B11110000,
+ B00001111,B11000000,B00000000,B00001111,B11000000,
+ B00000111,B10000000,B00000000,B00000111,B10000000,
+ B00000011,B00000000,B00000000,B00000011,B00000000
+ };
+
+ #elif HOTENDS == 3
+
+ #define STATUS_HEATERS_WIDTH 60
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,
+ B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,
+ B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,
+ B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,
+ B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,
+ B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,
+ B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,
+ B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,
+ B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,
+ B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,
+ B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,
+ B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
+ };
+
+ #elif HOTENDS == 4
+
+ #define STATUS_HEATERS_WIDTH 84
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,
+ B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,
+ B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,
+ B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,
+ B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00011011,B01100000,
+ B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00011000,B00100000,
+ B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00111111,B01110000,
+ B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00111111,B01110000,
+ B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,
+ B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,
+ B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,
+ B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
+ };
+
+ #else // HOTENDS > 4
+
+ #define STATUS_HEATERS_WIDTH 108
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,
+ B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111000,B01110000,
+ B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B11110000,
+ B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,B00000000,B00111000,B11110000,
+ B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00011011,B01100000,B00000000,B00011111,B01100000,
+ B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00011000,B00100000,B00000000,B00011111,B01100000,
+ B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,
+ B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00111111,B01110000,B00000000,B00111100,B11110000,
+ B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,
+ B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,
+ B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,
+ B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
+ };
+
+ #endif // HOTENDS
+
+#endif // !HAS_HEATED_BED || HOTENDS > 3
diff --git a/Marlin/src/lcd/dogm/status/cutter.h b/Marlin/src/lcd/dogm/status/cutter.h
new file mode 100644
index 0000000000..0e3b9dd188
--- /dev/null
+++ b/Marlin/src/lcd/dogm/status/cutter.h
@@ -0,0 +1,123 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+//
+// lcd/dogm/status/cutter.h - Status Screen Laser / Spindle bitmaps
+//
+
+#define STATUS_CUTTER_WIDTH 24
+#define STATUS_CUTTER_X 80
+
+#if ENABLED(LASER_FEATURE)
+ #ifdef STATUS_CUTTER_ANIM
+ const unsigned char status_cutter_on_bmp[] PROGMEM = {
+ B00000000,B00100100,B00000000,
+ B00000000,B01100110,B00000000,
+ B00000000,B11000011,B00000000,
+ B00000001,B10011001,B10000000,
+ B00000011,B00100100,B11000000,
+ B00000000,B01000010,B00000000,
+ B00000000,B01000010,B00000000,
+ B00000011,B00100100,B11000000,
+ B00000001,B10011001,B10000000,
+ B00000000,B11000011,B00000000,
+ B00000000,B01100110,B00000000,
+ B00000000,B00100100,B00000000
+ };
+ const unsigned char status_cutter_bmp[] PROGMEM = {
+ B00000000,B00100100,B00000000,
+ B00000000,B01100110,B00000000,
+ B00000000,B00000000,B00000000,
+ B00000001,B00000000,B10000000,
+ B00000011,B00000000,B11000000,
+ B00000000,B00011000,B00000000,
+ B00000000,B00011000,B00000000,
+ B00000011,B00000000,B11000000,
+ B00000001,B00000000,B10000000,
+ B00000000,B00000000,B00000000,
+ B00000000,B01100110,B00000000,
+ B00000000,B00100100,B00000000
+ };
+ #else
+ const unsigned char status_cutter_bmp[] PROGMEM = {
+ B00000000,B00100100,B00000000,
+ B00000000,B01100110,B00000000,
+ B00000000,B11000011,B00000000,
+ B00000001,B10000001,B10000000,
+ B00000011,B00000000,B11000000,
+ B00000000,B00000000,B00000000,
+ B00000000,B00000000,B00000000,
+ B00000011,B00000000,B11000000,
+ B00000001,B10000001,B10000000,
+ B00000000,B11000011,B00000000,
+ B00000000,B01100110,B00000000,
+ B00000000,B00100100,B00000000
+ };
+ #endif
+#else
+ #ifdef STATUS_CUTTER_ANIM
+ const unsigned char status_cutter_on_bmp[] PROGMEM = {
+ B00000001,B11111110,B10000000,
+ B00000000,B11000000,B00000000,
+ B00000001,B10000000,B10000000,
+ B00000001,B00000000,B10000000,
+ B00000001,B11111100,B10000000,
+ B00000000,B11100000,B00000000,
+ B00000001,B11000000,B10000000,
+ B00000000,B10000001,B00000000,
+ B00000000,B01111010,B00000000,
+ B00000000,B00110100,B00000000,
+ B00000000,B00011000,B00000000,
+ B00000000,B00000000,B00000000
+ };
+ const unsigned char status_cutter_bmp[] PROGMEM = {
+ B00000001,B11111110,B10000000,
+ B00000000,B11000000,B00000000,
+ B00000001,B10000000,B10000000,
+ B00000001,B00000000,B10000000,
+ B00000001,B11111100,B10000000,
+ B00000000,B11100000,B00000000,
+ B00000001,B11000000,B10000000,
+ B00000000,B10000001,B00000000,
+ B00000000,B01111010,B00000000,
+ B00000000,B00110100,B00000000,
+ B00000000,B00011000,B00000000,
+ B00000000,B00000000,B00000000
+ };
+ #else
+ const unsigned char status_cutter_bmp[] PROGMEM = {
+ B00000001,B11000010,B10000000,
+ B00000001,B00011100,B10000000,
+ B00000000,B11100001,B00000000,
+ B00000001,B00001110,B10000000,
+ B00000001,B01110000,B10000000,
+ B00000000,B10000111,B10000000,
+ B00000001,B00111111,B10000000,
+ B00000000,B11111111,B00000000,
+ B00000000,B01111110,B00000000,
+ B00000000,B00111100,B00000000,
+ B00000000,B00011000,B00000000,
+ B00000000,B00000000,B00000000
+ };
+ #endif
+#endif
diff --git a/Marlin/src/lcd/dogm/status/fan.h b/Marlin/src/lcd/dogm/status/fan.h
new file mode 100644
index 0000000000..65f8e9c230
--- /dev/null
+++ b/Marlin/src/lcd/dogm/status/fan.h
@@ -0,0 +1,443 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+//
+// lcd/dogm/status/fan.h - Status Screen Fan bitmaps
+//
+
+#undef STATUS_FAN_WIDTH
+#define STATUS_FAN_WIDTH 20
+
+#if STATUS_FAN_FRAMES <= 2
+
+ #define STATUS_FAN_Y 2
+
+ #if ENABLED(STATUS_ALT_FAN_BITMAP)
+
+ const unsigned char status_fan0_bmp[] PROGMEM = {
+ B00000001,B11111110,B00000000,
+ B00000110,B00000001,B10000000,
+ B00001000,B11111100,B01000000,
+ B00010000,B11111100,B00100000,
+ B00010000,B01111000,B00100000,
+ B00100000,B00110000,B00010000,
+ B00101100,B00000000,B11010000,
+ B00101110,B00110001,B11010000,
+ B00101111,B01111011,B11010000,
+ B00101111,B01111011,B11010000,
+ B00101110,B00110001,B11010000,
+ B00101100,B00000000,B11010000,
+ B00100000,B00110000,B00010000,
+ B00010000,B01111000,B00100000,
+ B00010000,B11111100,B00100000,
+ B00001000,B11111100,B01000000,
+ B00000110,B00000001,B10000000,
+ B00000001,B11111110,B00000000
+ };
+
+ #if STATUS_FAN_FRAMES == 2
+ const unsigned char status_fan1_bmp[] PROGMEM = {
+ B00000001,B11111110,B00000000,
+ B00000110,B00000001,B10000000,
+ B00001001,B10000110,B01000000,
+ B00010011,B10000111,B00100000,
+ B00010111,B10000111,B10100000,
+ B00101111,B10000111,B11010000,
+ B00101111,B00000011,B11010000,
+ B00100000,B00110000,B00010000,
+ B00100000,B01111000,B00010000,
+ B00100000,B01111000,B00010000,
+ B00100000,B00110000,B00010000,
+ B00101111,B00000011,B11010000,
+ B00101111,B10000111,B11010000,
+ B00010111,B10000111,B10100000,
+ B00010011,B10000111,B00100000,
+ B00001001,B10000110,B01000000,
+ B00000110,B00000001,B10000000,
+ B00000001,B11111110,B00000000
+ };
+ #endif
+
+ #else // !STATUS_ALT_FAN_BITMAP
+
+ const unsigned char status_fan0_bmp[] PROGMEM = {
+ B00111111,B11111111,B11110000,
+ B00111000,B00000000,B01110000,
+ B00110000,B11111100,B00110000,
+ B00100000,B11111100,B00010000,
+ B00100000,B01111000,B00010000,
+ B00100000,B00110000,B00010000,
+ B00101100,B00000000,B11010000,
+ B00101110,B00110001,B11010000,
+ B00101111,B01111011,B11010000,
+ B00101111,B01111011,B11010000,
+ B00101110,B00110001,B11010000,
+ B00101100,B00000000,B11010000,
+ B00100000,B00110000,B00010000,
+ B00100000,B01111000,B00010000,
+ B00100000,B11111100,B00010000,
+ B00110000,B11111100,B00110000,
+ B00111000,B00000000,B01110000,
+ B00111111,B11111111,B11110000
+ };
+
+ #if STATUS_FAN_FRAMES == 2
+ const unsigned char status_fan1_bmp[] PROGMEM = {
+ B00111111,B11111111,B11110000,
+ B00111000,B00000000,B01110000,
+ B00110001,B10000110,B00110000,
+ B00100011,B10000111,B00010000,
+ B00100111,B10000111,B10010000,
+ B00101111,B10000111,B11010000,
+ B00101111,B00000011,B11010000,
+ B00100000,B00110000,B00010000,
+ B00100000,B01111000,B00010000,
+ B00100000,B01111000,B00010000,
+ B00100000,B00110000,B00010000,
+ B00101111,B00000011,B11010000,
+ B00101111,B10000111,B11010000,
+ B00100111,B10000111,B10010000,
+ B00100011,B10000111,B00010000,
+ B00110001,B10000110,B00110000,
+ B00111000,B00000000,B01110000,
+ B00111111,B11111111,B11110000
+ };
+ #endif
+
+ #endif // !STATUS_ALT_FAN_BITMAP
+
+#elif STATUS_FAN_FRAMES == 3
+
+ #if ENABLED(STATUS_ALT_FAN_BITMAP)
+
+ const unsigned char status_fan0_bmp[] PROGMEM = {
+ B00000001,B11111111,B00000000,
+ B00000110,B00000000,B11000000,
+ B00001001,B00000001,B00100000,
+ B00010111,B10000011,B11010000,
+ B00010111,B10000011,B11010000,
+ B00101111,B11000111,B11101000,
+ B00100111,B11000111,B11001000,
+ B00100001,B11111111,B00001000,
+ B00100000,B01111100,B00001000,
+ B00100000,B01111100,B00001000,
+ B00100000,B01111100,B00001000,
+ B00100001,B11111111,B00001000,
+ B00100111,B11000111,B11001000,
+ B00101111,B11000111,B11101000,
+ B00010111,B10000011,B11010000,
+ B00010111,B10000011,B11010000,
+ B00001001,B00000001,B00100000,
+ B00000110,B00000000,B11000000,
+ B00000001,B11111111,B00000000
+ };
+ const unsigned char status_fan1_bmp[] PROGMEM = {
+ B00000001,B11111111,B00000000,
+ B00000110,B00110000,B11000000,
+ B00001001,B11110000,B00100000,
+ B00010001,B11110000,B00010000,
+ B00010000,B11110000,B00010000,
+ B00100000,B11110000,B01101000,
+ B00100000,B00110001,B11101000,
+ B00100000,B00111001,B11101000,
+ B00100000,B01111111,B11111000,
+ B00111111,B11111111,B11111000,
+ B00111111,B11111100,B00001000,
+ B00101111,B00111000,B00001000,
+ B00101110,B00011000,B00001000,
+ B00101100,B00011110,B00001000,
+ B00010000,B00011110,B00010000,
+ B00010000,B00011111,B00010000,
+ B00001000,B00011111,B00100000,
+ B00000110,B00011000,B11000000,
+ B00000001,B11111111,B00000000
+ };
+ const unsigned char status_fan2_bmp[] PROGMEM = {
+ B00000001,B11111111,B00000000,
+ B00000110,B00011000,B11000000,
+ B00001000,B00011111,B00100000,
+ B00010000,B00011111,B10010000,
+ B00010100,B00011111,B00010000,
+ B00101110,B00011110,B00001000,
+ B00101111,B00011100,B00001000,
+ B00101111,B10111000,B00001000,
+ B00111111,B11111100,B00001000,
+ B00111111,B11111111,B11111000,
+ B00100000,B01111111,B11111000,
+ B00100000,B00111011,B11101000,
+ B00100000,B01110001,B11101000,
+ B00100000,B11110000,B11101000,
+ B00010001,B11110000,B01010000,
+ B00010011,B11110000,B00010000,
+ B00001001,B11110000,B00100000,
+ B00000110,B00110000,B11000000,
+ B00000001,B11111111,B00000000
+ };
+
+ #else // !STATUS_ALT_FAN_BITMAP
+
+ const unsigned char status_fan0_bmp[] PROGMEM = {
+ B00111111,B11111111,B11111000,
+ B00111110,B00000000,B11111000,
+ B00111001,B00000001,B00111000,
+ B00110111,B10000011,B11011000,
+ B00110111,B10000011,B11011000,
+ B00101111,B11000111,B11101000,
+ B00100111,B11000111,B11001000,
+ B00100001,B11111111,B00001000,
+ B00100000,B01111100,B00001000,
+ B00100000,B01111100,B00001000,
+ B00100000,B01111100,B00001000,
+ B00100001,B11111111,B00001000,
+ B00100111,B11000111,B11001000,
+ B00101111,B11000111,B11101000,
+ B00110111,B10000011,B11011000,
+ B00110111,B10000011,B11011000,
+ B00111001,B00000001,B00111000,
+ B00111110,B00000000,B11111000,
+ B00111111,B11111111,B11111000
+ };
+ const unsigned char status_fan1_bmp[] PROGMEM = {
+ B00111111,B11111111,B11111000,
+ B00111110,B00110000,B11111000,
+ B00111001,B11110000,B00111000,
+ B00110001,B11110000,B00011000,
+ B00110000,B11110000,B00011000,
+ B00100000,B11110000,B01101000,
+ B00100000,B00110001,B11101000,
+ B00100000,B00111001,B11101000,
+ B00100000,B01111111,B11111000,
+ B00111111,B11111111,B11111000,
+ B00111111,B11111100,B00001000,
+ B00101111,B00111000,B00001000,
+ B00101110,B00011000,B00001000,
+ B00101100,B00011110,B00001000,
+ B00110000,B00011110,B00011000,
+ B00110000,B00011111,B00011000,
+ B00111000,B00011111,B00111000,
+ B00111110,B00011000,B11111000,
+ B00111111,B11111111,B11111000
+ };
+ const unsigned char status_fan2_bmp[] PROGMEM = {
+ B00111111,B11111111,B11111000,
+ B00111110,B00011000,B11111000,
+ B00111000,B00011111,B00111000,
+ B00110000,B00011111,B10011000,
+ B00110100,B00011111,B00011000,
+ B00101110,B00011110,B00001000,
+ B00101111,B00011100,B00001000,
+ B00101111,B10111000,B00001000,
+ B00111111,B11111100,B00001000,
+ B00111111,B11111111,B11111000,
+ B00100000,B01111111,B11111000,
+ B00100000,B00111011,B11101000,
+ B00100000,B01110001,B11101000,
+ B00100000,B11110000,B11101000,
+ B00110001,B11110000,B01011000,
+ B00110011,B11110000,B00011000,
+ B00111001,B11110000,B00111000,
+ B00111110,B00110000,B11111000,
+ B00111111,B11111111,B11111000
+ };
+
+ #endif // !STATUS_ALT_FAN_BITMAP
+
+#elif STATUS_FAN_FRAMES == 4
+
+ #if ENABLED(STATUS_ALT_FAN_BITMAP)
+
+ const unsigned char status_fan0_bmp[] PROGMEM = {
+ B00000001,B11111111,B00000000,
+ B00000110,B00000000,B11000000,
+ B00001000,B00111111,B00100000,
+ B00010000,B01111110,B00010000,
+ B00010000,B01111100,B00010000,
+ B00101000,B01111100,B00001000,
+ B00101100,B00111000,B00001000,
+ B00101111,B00111001,B11001000,
+ B00101111,B11111111,B11101000,
+ B00101111,B11000111,B11101000,
+ B00101111,B11111111,B11101000,
+ B00100111,B00111001,B11101000,
+ B00100000,B00111000,B01101000,
+ B00100000,B01111100,B00101000,
+ B00010000,B01111100,B00010000,
+ B00010000,B11111100,B00010000,
+ B00001001,B11111000,B00100000,
+ B00000110,B00000000,B11000000,
+ B00000001,B11111111,B00000000
+ };
+ const unsigned char status_fan1_bmp[] PROGMEM = {
+ B00000001,B11111111,B00000000,
+ B00000110,B00000000,B11000000,
+ B00001000,B00001111,B00100000,
+ B00010100,B00011111,B11010000,
+ B00010110,B00011111,B10010000,
+ B00101111,B00011111,B00001000,
+ B00101111,B10011110,B00001000,
+ B00101111,B11111100,B00001000,
+ B00101111,B11011100,B00001000,
+ B00100111,B11101111,B11001000,
+ B00100000,B01110111,B11101000,
+ B00100000,B01111111,B11101000,
+ B00100000,B11110011,B11101000,
+ B00100001,B11110001,B11101000,
+ B00010011,B11110000,B11010000,
+ B00010111,B11110000,B01010000,
+ B00001001,B11100000,B00100000,
+ B00000110,B00000000,B11000000,
+ B00000001,B11111111,B00000000
+ };
+ const unsigned char status_fan2_bmp[] PROGMEM = {
+ B00000001,B11111111,B00000000,
+ B00000110,B10000000,B11000000,
+ B00001001,B10000000,B00100000,
+ B00010111,B10000001,B11010000,
+ B00010111,B11000011,B11010000,
+ B00100111,B11000111,B11101000,
+ B00100011,B11000111,B11111000,
+ B00100001,B11111111,B10001000,
+ B00100000,B01101100,B00001000,
+ B00100000,B01101100,B00001000,
+ B00100000,B01101100,B00001000,
+ B00100011,B11111111,B00001000,
+ B00111111,B11000111,B10001000,
+ B00101111,B11000111,B11001000,
+ B00010111,B10000111,B11010000,
+ B00010111,B00000011,B11010000,
+ B00001000,B00000011,B00100000,
+ B00000110,B00000010,B11000000,
+ B00000001,B11111111,B00000000
+ };
+ const unsigned char status_fan3_bmp[] PROGMEM = {
+ B00000001,B11111111,B00000000,
+ B00000110,B00000000,B11000000,
+ B00001001,B11110000,B00100000,
+ B00010001,B11100000,B00010000,
+ B00010001,B11100000,B00010000,
+ B00100001,B11100001,B11101000,
+ B00100000,B11110011,B11101000,
+ B00100000,B01111111,B11101000,
+ B00100000,B01110111,B11101000,
+ B00101000,B11101110,B00101000,
+ B00101111,B11011100,B00001000,
+ B00101111,B11111100,B00001000,
+ B00101111,B10011110,B00001000,
+ B00101111,B00001111,B00001000,
+ B00010000,B00001111,B00010000,
+ B00010000,B00001111,B00010000,
+ B00001000,B00011111,B00100000,
+ B00000110,B00000000,B11000000,
+ B00000001,B11111111,B00000000
+ };
+
+ #else // !STATUS_ALT_FAN_BITMAP
+
+ const unsigned char status_fan0_bmp[] PROGMEM = {
+ B00111111,B11111111,B11111000,
+ B00111110,B00000000,B11111000,
+ B00111000,B00111111,B00111000,
+ B00110000,B01111110,B00011000,
+ B00110000,B01111100,B00011000,
+ B00101000,B01111100,B00001000,
+ B00101100,B00111000,B00001000,
+ B00101111,B00111001,B11001000,
+ B00101111,B11111111,B11101000,
+ B00101111,B11000111,B11101000,
+ B00101111,B11111111,B11101000,
+ B00100111,B00111001,B11101000,
+ B00100000,B00111000,B01101000,
+ B00100000,B01111100,B00101000,
+ B00110000,B01111100,B00011000,
+ B00110000,B11111100,B00011000,
+ B00111001,B11111000,B00111000,
+ B00111110,B00000000,B11111000,
+ B00111111,B11111111,B11111000
+ };
+ const unsigned char status_fan1_bmp[] PROGMEM = {
+ B00111111,B11111111,B11111000,
+ B00111110,B00000000,B11111000,
+ B00111000,B00001111,B00111000,
+ B00110100,B00011111,B11011000,
+ B00110110,B00011111,B10011000,
+ B00101111,B00011111,B00001000,
+ B00101111,B10011110,B00001000,
+ B00101111,B11111100,B00001000,
+ B00101111,B11011100,B00001000,
+ B00100111,B11101111,B11001000,
+ B00100000,B01110111,B11101000,
+ B00100000,B01111111,B11101000,
+ B00100000,B11110011,B11101000,
+ B00100001,B11110001,B11101000,
+ B00110011,B11110000,B11011000,
+ B00110111,B11110000,B01011000,
+ B00111001,B11100000,B00111000,
+ B00111110,B00000000,B11111000,
+ B00111111,B11111111,B11111000
+ };
+ const unsigned char status_fan2_bmp[] PROGMEM = {
+ B00111111,B11111111,B11111000,
+ B00111110,B10000000,B11111000,
+ B00111001,B10000000,B00111000,
+ B00110111,B10000001,B11011000,
+ B00110111,B11000011,B11011000,
+ B00100111,B11000111,B11101000,
+ B00100011,B11000111,B11111000,
+ B00100001,B11111111,B10001000,
+ B00100000,B01101100,B00001000,
+ B00100000,B01101100,B00001000,
+ B00100000,B01101100,B00001000,
+ B00100011,B11111111,B00001000,
+ B00111111,B11000111,B10001000,
+ B00101111,B11000111,B11001000,
+ B00110111,B10000111,B11011000,
+ B00110111,B00000011,B11011000,
+ B00111000,B00000011,B00111000,
+ B00111110,B00000010,B11111000,
+ B00111111,B11111111,B11111000
+ };
+ const unsigned char status_fan3_bmp[] PROGMEM = {
+ B00111111,B11111111,B11111000,
+ B00111110,B00000000,B11111000,
+ B00111001,B11110000,B00111000,
+ B00110001,B11100000,B00011000,
+ B00110001,B11100000,B00011000,
+ B00100001,B11100001,B11101000,
+ B00100000,B11110011,B11101000,
+ B00100000,B01111111,B11101000,
+ B00100000,B01110111,B11101000,
+ B00101000,B11101110,B00101000,
+ B00101111,B11011100,B00001000,
+ B00101111,B11111100,B00001000,
+ B00101111,B10011110,B00001000,
+ B00101111,B00001111,B00001000,
+ B00110000,B00001111,B00011000,
+ B00110000,B00001111,B00011000,
+ B00111000,B00011111,B00111000,
+ B00111110,B00000000,B11111000,
+ B00111111,B11111111,B11111000
+ };
+
+ #endif // !STATUS_ALT_FAN_BITMAP
+
+#endif
diff --git a/Marlin/src/lcd/dogm/status/hotend.h b/Marlin/src/lcd/dogm/status/hotend.h
new file mode 100644
index 0000000000..559fa50018
--- /dev/null
+++ b/Marlin/src/lcd/dogm/status/hotend.h
@@ -0,0 +1,336 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+//
+// lcd/dogm/status/hotend.h - Status Screen Hotends bitmaps
+//
+
+#define STATUS_HOTEND1_WIDTH 16
+
+#define MAX_HOTEND_BITMAPS 5
+#if HOTENDS > MAX_HOTEND_BITMAPS
+ #define STATUS_HOTEND_BITMAPS MAX_HOTEND_BITMAPS
+#else
+ #define STATUS_HOTEND_BITMAPS HOTENDS
+#endif
+
+#if HOTENDS == 1 || ENABLED(STATUS_HOTEND_NUMBERLESS)
+
+ const unsigned char status_hotend_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111111,B11110000,
+ B00111111,B11110000,
+ B00111111,B11110000,
+ B00011111,B11100000,
+ B00011111,B11100000,
+ B00111111,B11110000,
+ B00111111,B11110000,
+ B00111111,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ #ifdef STATUS_HOTEND_ANIM
+
+ const unsigned char status_hotend_b_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00100000,B00010000,
+ B00100000,B00010000,
+ B00100000,B00010000,
+ B00010000,B00100000,
+ B00010000,B00100000,
+ B00100000,B00010000,
+ B00100000,B00010000,
+ B00110000,B00110000,
+ B00001000,B01000000,
+ B00000100,B10000000,
+ B00000011,B00000000
+ };
+
+ #endif
+
+#elif HOTENDS >= 2
+
+ #ifdef STATUS_HOTEND_ANIM
+
+ const unsigned char status_hotend1_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111111,B11110000,
+ B00111110,B11110000,
+ B00111100,B11110000,
+ B00011010,B11100000,
+ B00011110,B11100000,
+ B00111110,B11110000,
+ B00111110,B11110000,
+ B00111110,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ const unsigned char status_hotend1_b_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00100000,B00010000,
+ B00100001,B00010000,
+ B00100011,B00010000,
+ B00010101,B00100000,
+ B00010001,B00100000,
+ B00100001,B00010000,
+ B00100001,B00010000,
+ B00110001,B00110000,
+ B00001000,B01000000,
+ B00000100,B10000000,
+ B00000011,B00000000
+ };
+
+ const unsigned char status_hotend2_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111111,B11110000,
+ B00111100,B11110000,
+ B00111011,B01110000,
+ B00011111,B01100000,
+ B00011110,B11100000,
+ B00111101,B11110000,
+ B00111011,B11110000,
+ B00111000,B01110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ const unsigned char status_hotend2_b_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00100000,B00010000,
+ B00100011,B00010000,
+ B00100100,B10010000,
+ B00010000,B10100000,
+ B00010001,B00100000,
+ B00100010,B00010000,
+ B00100100,B00010000,
+ B00110111,B10110000,
+ B00001000,B01000000,
+ B00000100,B10000000,
+ B00000011,B00000000
+ };
+
+ #else
+
+ const unsigned char status_hotend1_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111110,B11110000,
+ B00111100,B11110000,
+ B00111010,B11110000,
+ B00011110,B11100000,
+ B00011110,B11100000,
+ B00111110,B11110000,
+ B00111110,B11110000,
+ B00111111,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ const unsigned char status_hotend2_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111100,B11110000,
+ B00111011,B01110000,
+ B00111111,B01110000,
+ B00011110,B11100000,
+ B00011101,B11100000,
+ B00111011,B11110000,
+ B00111000,B01110000,
+ B00111111,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ #endif
+
+ #if STATUS_HOTEND_BITMAPS >= 3
+
+ #ifdef STATUS_HOTEND_ANIM
+
+ const unsigned char status_hotend3_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111111,B11110000,
+ B00111100,B11110000,
+ B00111011,B01110000,
+ B00011111,B01100000,
+ B00011100,B11100000,
+ B00111111,B01110000,
+ B00111011,B01110000,
+ B00111100,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ const unsigned char status_hotend3_b_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00100000,B00010000,
+ B00100011,B00010000,
+ B00100100,B10010000,
+ B00010000,B10100000,
+ B00010011,B00100000,
+ B00100000,B10010000,
+ B00100100,B10010000,
+ B00110011,B00110000,
+ B00001000,B01000000,
+ B00000100,B10000000,
+ B00000011,B00000000
+ };
+
+ #else
+
+ const unsigned char status_hotend3_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111100,B11110000,
+ B00111011,B01110000,
+ B00111111,B01110000,
+ B00011100,B11100000,
+ B00011111,B01100000,
+ B00111011,B01110000,
+ B00111100,B11110000,
+ B00111111,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ #endif
+
+ #endif
+
+ #if STATUS_HOTEND_BITMAPS >= 4
+
+ #ifdef STATUS_HOTEND_ANIM
+
+ const unsigned char status_hotend4_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111111,B11110000,
+ B00111011,B01110000,
+ B00111011,B01110000,
+ B00011011,B01100000,
+ B00011011,B01100000,
+ B00111000,B00110000,
+ B00111111,B01110000,
+ B00111111,B01110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ const unsigned char status_hotend4_b_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00100000,B00010000,
+ B00100100,B10010000,
+ B00100100,B10010000,
+ B00010100,B10100000,
+ B00010100,B10100000,
+ B00100111,B11010000,
+ B00100000,B10010000,
+ B00110000,B10110000,
+ B00001000,B01000000,
+ B00000100,B10000000,
+ B00000011,B00000000
+ };
+
+ #else
+
+ const unsigned char status_hotend4_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111011,B01110000,
+ B00111011,B01110000,
+ B00111011,B01110000,
+ B00011011,B01100000,
+ B00011000,B00100000,
+ B00111111,B01110000,
+ B00111111,B01110000,
+ B00111111,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ #endif
+
+ #endif
+
+ #if STATUS_HOTEND_BITMAPS >= 5
+
+ #ifdef STATUS_HOTEND_ANIM
+
+ const unsigned char status_hotend5_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111111,B11110000,
+ B00111000,B01110000,
+ B00111011,B11110000,
+ B00011000,B11100000,
+ B00011111,B01100000,
+ B00111111,B01110000,
+ B00111011,B01110000,
+ B00111100,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ const unsigned char status_hotend5_b_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00100000,B00010000,
+ B00100111,B10010000,
+ B00100100,B00010000,
+ B00010111,B00100000,
+ B00010000,B10100000,
+ B00100000,B10010000,
+ B00100100,B10010000,
+ B00110011,B00110000,
+ B00001000,B01000000,
+ B00000100,B10000000,
+ B00000011,B00000000
+ };
+
+ #else
+
+ const unsigned char status_hotend5_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111000,B01110000,
+ B00111011,B11110000,
+ B00111000,B11110000,
+ B00011111,B01100000,
+ B00011111,B01100000,
+ B00111011,B01110000,
+ B00111100,B11110000,
+ B00111111,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ #endif
+
+ #endif
+
+#endif