Browse Source

CHAMBER integration to GLCD (#14981)

Ludy 5 years ago
parent
commit
6172cd2528
2 changed files with 257 additions and 179 deletions
  1. 210
    143
      Marlin/src/lcd/dogm/dogm_Statusscreen.h
  2. 47
    36
      Marlin/src/lcd/dogm/status_screen_DOGM.cpp

+ 210
- 143
Marlin/src/lcd/dogm/dogm_Statusscreen.h View File

29
  */
29
  */
30
 
30
 
31
 #include "../../inc/MarlinConfig.h"
31
 #include "../../inc/MarlinConfig.h"
32
+#include "ultralcd_DOGM.h"
32
 
33
 
33
 #define BW(N) ((N + 7) / 8)
34
 #define BW(N) ((N + 7) / 8)
34
 
35
 
35
-#if ENABLED(CUSTOM_STATUS_SCREEN_IMAGE)
36
+#if ENABLED(CUSTOM_STATUS_SCREEN_IMAGE) && DISABLED(STATUS_COMBINE_HEATERS)
36
 
37
 
38
+  #undef STATUS_HEATERS_X
39
+  #undef STATUS_BED_X
37
   /**
40
   /**
38
    * Custom _Statusscreen.h files can define:
41
    * Custom _Statusscreen.h files can define:
39
    * - A custom logo image
42
    * - A custom logo image
50
 
53
 
51
 #endif
54
 #endif
52
 
55
 
53
-#if ENABLED(STATUS_COMBINE_HEATERS)
54
-  #undef STATUS_HOTEND_ANIM
55
-  #undef STATUS_BED_ANIM
56
-#endif
57
-
58
 //
56
 //
59
 // Default Status Screen Heater or Hotends bitmaps
57
 // Default Status Screen Heater or Hotends bitmaps
60
 //
58
 //
61
-
62
 #if !STATUS_HEATERS_WIDTH && !STATUS_HOTEND1_WIDTH
59
 #if !STATUS_HEATERS_WIDTH && !STATUS_HOTEND1_WIDTH
63
 
60
 
64
   #if ENABLED(STATUS_COMBINE_HEATERS)
61
   #if ENABLED(STATUS_COMBINE_HEATERS)
65
 
62
 
63
+    #undef STATUS_HOTEND_ANIM
64
+    #undef STATUS_BED_ANIM
65
+    #define STATUS_HEATERS_XSPACE 24
66
+
66
     //
67
     //
67
     // Status Screen Combined Heater bitmaps
68
     // Status Screen Combined Heater bitmaps
68
     //
69
     //
70
+    #if HAS_HEATED_BED && HOTENDS <= 4
69
 
71
 
70
-    #if HAS_HEATED_BED && HOTENDS == 0
71
-      #define STATUS_HEATERS_X 80
72
-    #endif
73
-
74
-    #if HAS_HEATED_BED && HOTENDS <= 3
75
-
76
-      #define STATUS_BED_WIDTH  21
77
-
78
-      #if HOTENDS == 0
79
-
80
-        #define STATUS_HEATERS_WIDTH  21
81
-
82
-        const unsigned char status_heaters_bmp[] PROGMEM = {
83
-          B00000100,B00010000,B01000000,
84
-          B00000010,B00001000,B00100000,
85
-          B00000010,B00001000,B00100000,
86
-          B00000100,B00010000,B01000000,
87
-          B00001000,B00100000,B10000000,
88
-          B00010000,B01000001,B00000000,
89
-          B00010000,B01000001,B00000000,
90
-          B00001000,B00100000,B10000000,
91
-          B00000100,B00010000,B01000000,
92
-          B00000000,B00000000,B00000000,
93
-          B00011111,B11111111,B11111000,
94
-          B00011111,B11111111,B11111000
95
-        };
96
-
97
-      #elif HOTENDS == 1
72
+      #if HOTENDS == 1
98
 
73
 
99
-        #define STATUS_HEATERS_WIDTH  90
100
-        #define STATUS_BED_X 80
74
+        #define STATUS_HEATERS_WIDTH 96
75
+        #define STATUS_BED_TEXT_X   (STATUS_HEATERS_WIDTH - 10)
101
 
76
 
102
         const unsigned char status_heaters_bmp[] PROGMEM = {
77
         const unsigned char status_heaters_bmp[] PROGMEM = {
103
           B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
78
           B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
116
 
91
 
117
       #elif HOTENDS == 2
92
       #elif HOTENDS == 2
118
 
93
 
119
-        #define STATUS_HEATERS_WIDTH  90
94
+        #define STATUS_HEATERS_WIDTH 96
95
+        #define STATUS_BED_TEXT_X   (STATUS_HEATERS_WIDTH - 10)
120
 
96
 
121
         const unsigned char status_heaters_bmp[] PROGMEM = {
97
         const unsigned char status_heaters_bmp[] PROGMEM = {
122
           B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
98
           B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
133
           B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000
109
           B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000
134
         };
110
         };
135
 
111
 
136
-      #else // HOTENDS > 2
112
+      #elif HOTENDS == 3
137
 
113
 
138
-        #define STATUS_HEATERS_WIDTH  90
114
+        #define STATUS_HEATERS_WIDTH 96
115
+        #define STATUS_BED_TEXT_X   (STATUS_HEATERS_WIDTH - 10)
139
 
116
 
140
         const unsigned char status_heaters_bmp[] PROGMEM = {
117
         const unsigned char status_heaters_bmp[] PROGMEM = {
141
           B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000100,B00010000,B01000000,
118
           B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000100,B00010000,B01000000,
152
           B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00011111,B11111111,B11111000
129
           B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00011111,B11111111,B11111000
153
         };
130
         };
154
 
131
 
132
+      #else // HOTENDS > 3
133
+
134
+        #define STATUS_HEATERS_WIDTH 120
135
+        #define STATUS_BED_TEXT_X   (STATUS_HEATERS_WIDTH - 10)
136
+
137
+        const unsigned char status_heaters_bmp[] PROGMEM = {
138
+          B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000100,B00010000,B01000000,
139
+          B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
140
+          B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
141
+          B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,B00000000,B00000100,B00010000,B01000000,
142
+          B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00011011,B01100000,B00000000,B00001000,B00100000,B10000000,
143
+          B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00011000,B00100000,B00000000,B00010000,B01000001,B00000000,
144
+          B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00111111,B01110000,B00000000,B00010000,B01000001,B00000000,
145
+          B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00111111,B01110000,B00000000,B00001000,B00100000,B10000000,
146
+          B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00000100,B00010000,B01000000,
147
+          B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,
148
+          B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00011111,B11111111,B11111000,
149
+          B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00011111,B11111111,B11111000
150
+        };
151
+
155
       #endif // HOTENDS
152
       #endif // HOTENDS
156
 
153
 
157
     #else // !HAS_HEATED_BED || HOTENDS > 3
154
     #else // !HAS_HEATED_BED || HOTENDS > 3
158
 
155
 
159
       #if HOTENDS == 1
156
       #if HOTENDS == 1
160
 
157
 
161
-        #define STATUS_HEATERS_WIDTH  11
158
+        #define STATUS_HEATERS_WIDTH  12
162
 
159
 
163
         const unsigned char status_heaters_bmp[] PROGMEM = {
160
         const unsigned char status_heaters_bmp[] PROGMEM = {
164
           B00011111,B11100000,
161
           B00011111,B11100000,
213
           B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
210
           B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
214
         };
211
         };
215
 
212
 
216
-      #elif HOTENDS > 3
213
+      #elif HOTENDS == 4
217
 
214
 
218
         #define STATUS_HEATERS_WIDTH  84
215
         #define STATUS_HEATERS_WIDTH  84
219
 
216
 
232
           B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
229
           B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
233
         };
230
         };
234
 
231
 
232
+      #elif HOTENDS > 4
233
+
234
+        #define STATUS_HEATERS_WIDTH  108
235
+
236
+        const unsigned char status_heaters_bmp[] PROGMEM = {
237
+          B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,
238
+          B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111000,B01110000,
239
+          B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B11110000,
240
+          B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,B00000000,B00111000,B11110000,
241
+          B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00011011,B01100000,B00000000,B00011111,B01100000,
242
+          B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00011000,B00100000,B00000000,B00011111,B01100000,
243
+          B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,
244
+          B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00111111,B01110000,B00000000,B00111100,B11110000,
245
+          B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,
246
+          B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,
247
+          B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,
248
+          B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
249
+        };
250
+
235
       #endif // HOTENDS
251
       #endif // HOTENDS
236
 
252
 
237
     #endif // !HAS_HEATED_BED || HOTENDS > 3
253
     #endif // !HAS_HEATED_BED || HOTENDS > 3
241
     //
257
     //
242
     // Status Screen Hotends bitmaps
258
     // Status Screen Hotends bitmaps
243
     //
259
     //
244
-
245
     #if HOTENDS
260
     #if HOTENDS
246
 
261
 
247
-      #define STATUS_HOTEND1_WIDTH  12
262
+      #define STATUS_HOTEND1_WIDTH  16
263
+
264
+      #define MAX_HOTEND_BITMAPS     5
265
+      #if HOTENDS > MAX_HOTEND_BITMAPS
266
+        #define STATUS_HOTEND_BITMAPS MAX_HOTEND_BITMAPS
267
+      #else
268
+        #define STATUS_HOTEND_BITMAPS HOTENDS
269
+      #endif
248
 
270
 
249
       #if HOTENDS == 1 || ENABLED(STATUS_HOTEND_NUMBERLESS)
271
       #if HOTENDS == 1 || ENABLED(STATUS_HOTEND_NUMBERLESS)
250
 
272
 
286
 
308
 
287
         #if HOTENDS >= 2
309
         #if HOTENDS >= 2
288
 
310
 
289
-          #if HAS_HEATED_BED
290
-            #define MAX_HOTEND_BITMAPS 3
291
-          #else
292
-            #define MAX_HOTEND_BITMAPS 4
293
-          #endif
294
-          #if HOTENDS > MAX_HOTEND_BITMAPS
295
-            #define STATUS_HOTEND_BITMAPS MAX_HOTEND_BITMAPS
296
-          #else
297
-            #define STATUS_HOTEND_BITMAPS HOTENDS
298
-          #endif
299
-
300
           #ifdef STATUS_HOTEND_ANIM
311
           #ifdef STATUS_HOTEND_ANIM
301
 
312
 
302
             const unsigned char status_hotend1_a_bmp[] PROGMEM = {
313
             const unsigned char status_hotend1_a_bmp[] PROGMEM = {
450
 
461
 
451
         #endif
462
         #endif
452
 
463
 
453
-        #if STATUS_HOTEND_BITMAPS >= 4 && !HAS_HEATED_BED
464
+        #if STATUS_HOTEND_BITMAPS >= 4
454
 
465
 
455
           #ifdef STATUS_HOTEND_ANIM
466
           #ifdef STATUS_HOTEND_ANIM
456
 
467
 
505
 
516
 
506
         #endif
517
         #endif
507
 
518
 
508
-        #if STATUS_HOTEND_BITMAPS >= 5 && !HAS_HEATED_BED
519
+        #if STATUS_HOTEND_BITMAPS >= 5
509
 
520
 
510
           #ifdef STATUS_HOTEND_ANIM
521
           #ifdef STATUS_HOTEND_ANIM
511
 
522
 
571
 //
582
 //
572
 // Default Status Screen Bed bitmaps
583
 // Default Status Screen Bed bitmaps
573
 //
584
 //
574
-
575
-#if !STATUS_BED_WIDTH && DISABLED(STATUS_COMBINE_HEATERS) && HAS_HEATED_BED && HOTENDS < 4
585
+#if !STATUS_BED_WIDTH && HAS_HEATED_BED && DISABLED(STATUS_COMBINE_HEATERS)
576
 
586
 
577
   #if ENABLED(STATUS_ALT_BED_BITMAP)
587
   #if ENABLED(STATUS_ALT_BED_BITMAP)
578
 
588
 
579
     #define STATUS_BED_ANIM
589
     #define STATUS_BED_ANIM
580
     #define STATUS_BED_WIDTH  24
590
     #define STATUS_BED_WIDTH  24
581
     #ifndef STATUS_BED_X
591
     #ifndef STATUS_BED_X
582
-      #define STATUS_BED_X    72
592
+      #define STATUS_BED_X   (LCD_PIXEL_WIDTH - (STATUS_BED_BYTEWIDTH + STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8)
583
     #endif
593
     #endif
584
-    #define STATUS_BED_TEXT_X (STATUS_BED_X + 13)
594
+    #define STATUS_BED_TEXT_X (STATUS_BED_X + 11)
585
 
595
 
586
     const unsigned char status_bed_bmp[] PROGMEM = {
596
     const unsigned char status_bed_bmp[] PROGMEM = {
587
       B11111111,B11111111,B11000000,
597
       B11111111,B11111111,B11000000,
612
 
622
 
613
     #define STATUS_BED_WIDTH  21
623
     #define STATUS_BED_WIDTH  21
614
     #ifndef STATUS_BED_X
624
     #ifndef STATUS_BED_X
615
-      #define STATUS_BED_X    80
625
+      #define STATUS_BED_X   (LCD_PIXEL_WIDTH - (STATUS_BED_BYTEWIDTH + STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8)
616
     #endif
626
     #endif
617
 
627
 
618
     #ifdef STATUS_BED_ANIM
628
     #ifdef STATUS_BED_ANIM
657
     #endif
667
     #endif
658
 
668
 
659
   #endif
669
   #endif
670
+#else
671
+  #define STATUS_BED_WIDTH 0
672
+#endif
660
 
673
 
661
-#endif // !STATUS_BED_WIDTH && !STATUS_COMBINE_HEATERS && HAS_HEATED_BED && HOTENDS < 4
674
+#if !STATUS_CHAMBER_WIDTH && HAS_HEATED_CHAMBER && ((HOTENDS <= 4 && !HAS_HEATED_BED) || (HOTENDS <= 3 && HAS_HEATED_BED))
662
 
675
 
663
-#if HAS_HEATED_CHAMBER
676
+  #define STATUS_CHAMBER_WIDTH 21
664
 
677
 
665
-  #define STATUS_CHAMBER_WIDTH 16
678
+  #if STATUS_HEATERS_WIDTH
679
+    #if ENABLED(STATUS_COMBINE_HEATERS)
680
+      #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - 2 - (STATUS_CHAMBER_BYTEWIDTH) * 8)
681
+    #elif HAS_FAN0 && HAS_HEATED_BED && HOTENDS <= 2
682
+      #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - 2 - (STATUS_HEATERS_BYTEWIDTH - STATUS_CHAMBER_BYTEWIDTH) * 8)
683
+    #elif HAS_FAN0 && !HAS_HEATED_BED
684
+      #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - (STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8)
685
+    #else
686
+      #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - (STATUS_CHAMBER_BYTEWIDTH) * 8)
687
+    #endif
688
+  #endif
666
 
689
 
667
   #ifdef STATUS_CHAMBER_ANIM
690
   #ifdef STATUS_CHAMBER_ANIM
668
 
691
 
669
     const unsigned char status_chamber_bmp[] PROGMEM = {
692
     const unsigned char status_chamber_bmp[] PROGMEM = {
670
-      B11111111,B11111111,
671
-      B10000000,B00000001,
672
-      B10000000,B00000001,
673
-      B10000000,B00000001,
674
-      B10000000,B00000001,
675
-      B10000000,B00000001,
676
-      B10000000,B00000001,
677
-      B10000000,B00000001,
678
-      B10000000,B00000001,
679
-      B10000000,B00000001,
680
-      B11111111,B11111111,
681
-      B11111111,B11111111
693
+      B00011111,B11111111,B11111000,
694
+      B00010000,B00000000,B00001000,
695
+      B00010000,B00000000,B00001000,
696
+      B00010000,B00000000,B00001000,
697
+      B00010000,B00000000,B00001000,
698
+      B00010000,B00000000,B00001000,
699
+      B00010000,B00000000,B00001000,
700
+      B00010000,B00000000,B00001000,
701
+      B00010000,B00000000,B00001000,
702
+      B00010000,B00000000,B00001000,
703
+      B00011111,B11111111,B11111000,
704
+      B00011111,B11111111,B11111000
682
     };
705
     };
683
 
706
 
684
     const unsigned char status_chamber_on_bmp[] PROGMEM = {
707
     const unsigned char status_chamber_on_bmp[] PROGMEM = {
685
-      B11111111,B11111111,
686
-      B10000000,B00000001,
687
-      B10000100,B00100001,
688
-      B10000010,B00010001,
689
-      B10000010,B00010001,
690
-      B10000100,B00100001,
691
-      B10001000,B01000001,
692
-      B10001000,B01000001,
693
-      B10000100,B00100001,
694
-      B10000000,B00000001,
695
-      B11111111,B11111111,
696
-      B11111111,B11111111
708
+      B00011111,B11111111,B11111000,
709
+      B00010000,B00000000,B00001000,
710
+      B00010000,B10000100,B00001000,
711
+      B00010000,B01000010,B00001000,
712
+      B00010000,B01000010,B00001000,
713
+      B00010000,B10000100,B00001000,
714
+      B00010001,B00001000,B00001000,
715
+      B00010001,B00001000,B00001000,
716
+      B00010000,B10000100,B00001000,
717
+      B00010000,B00000000,B00001000,
718
+      B00011111,B11111111,B11111000,
719
+      B00011111,B11111111,B11111000
697
     };
720
     };
698
 
721
 
699
   #else
722
   #else
700
 
723
 
701
     const unsigned char status_chamber_bmp[] PROGMEM = {
724
     const unsigned char status_chamber_bmp[] PROGMEM = {
702
-      B11111111,B11111111,
703
-      B10000000,B00000001,
704
-      B10000100,B00100001,
705
-      B10000010,B00010001,
706
-      B10000010,B00010001,
707
-      B10000100,B00100001,
708
-      B10001000,B01000001,
709
-      B10001000,B01000001,
710
-      B10000100,B00100001,
711
-      B10000000,B00000001,
712
-      B11111111,B11111111,
713
-      B11111111,B11111111
725
+      B00011111,B11111111,B11111000,
726
+      B00010000,B00000000,B00001000,
727
+      B00010000,B10000100,B00001000,
728
+      B00010000,B01000010,B00001000,
729
+      B00010000,B01000010,B00001000,
730
+      B00010000,B10000100,B00001000,
731
+      B00010001,B00001000,B00001000,
732
+      B00010001,B00001000,B00001000,
733
+      B00010000,B10000100,B00001000,
734
+      B00010000,B00000000,B00001000,
735
+      B00011111,B11111111,B11111000,
736
+      B00011111,B11111111,B11111000
714
     };
737
     };
715
 
738
 
716
   #endif
739
   #endif
740
+#else // HAS_HEATED_CHAMBER
741
+  #define STATUS_CHAMBER_WIDTH 0
742
+#endif
717
 
743
 
718
-#endif // HAS_HEATED_CHAMBER
744
+#define BED_CHAM (HAS_HEATED_BED || HAS_HEATED_CHAMBER)
745
+#define BED_CHAM_FAN (BED_CHAM || HAS_FAN0)
719
 
746
 
720
-// Can also be overridden in Configuration.h
747
+// Can also be overridden in Configuration_adv.h
721
 // If you can afford it, try the 3-frame fan animation!
748
 // If you can afford it, try the 3-frame fan animation!
722
 // Don't compile in the fan animation with no fan
749
 // Don't compile in the fan animation with no fan
723
-#if !HAS_FAN0
750
+#if !HAS_FAN0 || (HOTENDS == 5 || (HOTENDS == 4 && BED_CHAM) || (ENABLED(STATUS_COMBINE_HEATERS) && HAS_HEATED_CHAMBER))
724
   #undef STATUS_FAN_FRAMES
751
   #undef STATUS_FAN_FRAMES
725
-#elif !defined(STATUS_FAN_FRAMES)
752
+#elif !STATUS_FAN_FRAMES
726
   #define STATUS_FAN_FRAMES 2
753
   #define STATUS_FAN_FRAMES 2
727
 #elif STATUS_FAN_FRAMES > 4
754
 #elif STATUS_FAN_FRAMES > 4
728
   #error "A maximum of 4 fan animation frames is currently supported."
755
   #error "A maximum of 4 fan animation frames is currently supported."
729
 #endif
756
 #endif
730
 
757
 
758
+#if HOTENDS > 4
759
+  #undef STATUS_LOGO_WIDTH
760
+  #undef STATUS_HEATERS_XSPACE
761
+  #define STATUS_HEATERS_XSPACE 24
762
+#endif
763
+
731
 //
764
 //
732
 // Provide default Fan Bitmaps
765
 // Provide default Fan Bitmaps
733
 //
766
 //
734
-#if !defined(STATUS_FAN_WIDTH) && STATUS_FAN_FRAMES > 0
767
+#if !STATUS_FAN_WIDTH && STATUS_FAN_FRAMES > 0
735
 
768
 
736
   // Provide a fan animation if none exists
769
   // Provide a fan animation if none exists
737
 
770
 
836
 
869
 
837
   #elif STATUS_FAN_FRAMES == 3
870
   #elif STATUS_FAN_FRAMES == 3
838
 
871
 
839
-    #define STATUS_FAN_WIDTH 21
872
+    #define STATUS_FAN_WIDTH 20
840
 
873
 
841
     #if ENABLED(STATUS_ALT_FAN_BITMAP)
874
     #if ENABLED(STATUS_ALT_FAN_BITMAP)
842
 
875
 
974
 
1007
 
975
   #elif STATUS_FAN_FRAMES == 4
1008
   #elif STATUS_FAN_FRAMES == 4
976
 
1009
 
977
-    #define STATUS_FAN_WIDTH 21
1010
+    #define STATUS_FAN_WIDTH 20
978
 
1011
 
979
     #if ENABLED(STATUS_ALT_FAN_BITMAP)
1012
     #if ENABLED(STATUS_ALT_FAN_BITMAP)
980
 
1013
 
1153
     #endif // !STATUS_ALT_FAN_BITMAP
1186
     #endif // !STATUS_ALT_FAN_BITMAP
1154
 
1187
 
1155
   #endif
1188
   #endif
1189
+#else
1190
+  #undef STATUS_FAN_FRAMES
1191
+  #define STATUS_FAN_WIDTH 0
1192
+#endif
1193
+
1194
+#if ENABLED(CUSTOM_STATUS_SCREEN_IMAGE)
1195
+
1196
+  #if STATUS_HOTEND1_WIDTH
1197
+    #define HAS_SPACES ((LCD_PIXEL_WIDTH - (HOTENDS * STATUS_HOTEND1_WIDTH) - STATUS_BED_WIDTH - STATUS_CHAMBER_WIDTH - STATUS_FAN_WIDTH - 24) < STATUS_LOGO_WIDTH ? true : false)
1198
+  #elif STATUS_HEATERS_WIDTH
1199
+    #define HAS_SPACES (((LCD_PIXEL_WIDTH - STATUS_HEATERS_WIDTH - STATUS_BED_WIDTH - STATUS_CHAMBER_WIDTH - STATUS_FAN_WIDTH - 20) < STATUS_LOGO_WIDTH) ? true : false)
1200
+  #endif
1201
+
1202
+  #if HAS_SPACES
1203
+    #undef STATUS_LOGO_WIDTH
1204
+  #endif
1205
+
1206
+  #if (HOTENDS > 1 && STATUS_LOGO_WIDTH && BED_CHAM_FAN) || ( HOTENDS >= 3 && !BED_CHAM_FAN)
1207
+    #define _STATUS_HEATERS_X(H,S,N) (((LCD_PIXEL_WIDTH - (H * (S + N)) - STATUS_LOGO_WIDTH - STATUS_BED_WIDTH - STATUS_CHAMBER_WIDTH - STATUS_FAN_WIDTH) / 2) + STATUS_LOGO_WIDTH)
1208
+    #if STATUS_HOTEND1_WIDTH
1209
+      #if HOTENDS > 2
1210
+        #define STATUS_HEATERS_X _STATUS_HEATERS_X(HOTENDS, STATUS_HOTEND1_WIDTH, 6)
1211
+      #else
1212
+        #define STATUS_HEATERS_X _STATUS_HEATERS_X(HOTENDS, STATUS_HOTEND1_WIDTH, 4)
1213
+      #endif
1214
+    #else
1215
+      #define STATUS_HEATERS_X _STATUS_HEATERS_X(1, STATUS_HEATERS_WIDTH, 4)
1216
+    #endif
1217
+  #endif
1156
 
1218
 
1157
 #endif
1219
 #endif
1158
 
1220
 
1187
 #if STATUS_HOTEND1_WIDTH || STATUS_HEATERS_WIDTH
1249
 #if STATUS_HOTEND1_WIDTH || STATUS_HEATERS_WIDTH
1188
 
1250
 
1189
   #ifndef STATUS_HEATERS_XSPACE
1251
   #ifndef STATUS_HEATERS_XSPACE
1190
-    #define STATUS_HEATERS_XSPACE 24 // Like the included bitmaps
1252
+    #if (HOTENDS == 3 || HOTENDS == 4) && ENABLED(STATUS_COMBINE_HEATERS)
1253
+      #define STATUS_HEATERS_XSPACE 24
1254
+    #else
1255
+      #define STATUS_HEATERS_XSPACE 26 // Like the included bitmaps
1256
+    #endif
1191
   #endif
1257
   #endif
1192
 
1258
 
1193
   #ifndef STATUS_HEATERS_X
1259
   #ifndef STATUS_HEATERS_X
1194
     #if STATUS_LOGO_BYTEWIDTH
1260
     #if STATUS_LOGO_BYTEWIDTH
1195
-      #define STATUS_HEATERS_X ((STATUS_LOGO_BYTEWIDTH + 0) * 8)
1261
+      #define STATUS_HEATERS_X (STATUS_LOGO_BYTEWIDTH * 8)
1262
+    #elif ((STATUS_CHAMBER_WIDTH || STATUS_FAN_WIDTH) && (STATUS_BED_WIDTH  && STATUS_HOTEND_BITMAPS == 3)) || \
1263
+          ((STATUS_CHAMBER_WIDTH || STATUS_FAN_WIDTH  ||  STATUS_BED_WIDTH) && STATUS_HOTEND_BITMAPS == 4)
1264
+      #define STATUS_HEATERS_X 5
1196
     #else
1265
     #else
1197
-      #define STATUS_HEATERS_X 8 // Like the included bitmaps
1266
+      #if ENABLED(STATUS_COMBINE_HEATERS) && HAS_HEATED_BED && HOTENDS <= 4
1267
+        #define STATUS_HEATERS_X 5
1268
+      #else
1269
+        #define STATUS_HEATERS_X 8 // Like the included bitmaps
1270
+      #endif
1198
     #endif
1271
     #endif
1199
   #endif
1272
   #endif
1200
 
1273
 
1205
   //
1278
   //
1206
   // Hotend images. A base hotend image and optional "ON" state image.
1279
   // Hotend images. A base hotend image and optional "ON" state image.
1207
   //
1280
   //
1208
-
1209
   #ifndef STATUS_HOTEND_BITMAPS
1281
   #ifndef STATUS_HOTEND_BITMAPS
1210
     #define STATUS_HOTEND_BITMAPS 1
1282
     #define STATUS_HOTEND_BITMAPS 1
1211
   #endif
1283
   #endif
1257
   #ifndef STATUS_HOTEND2_X
1329
   #ifndef STATUS_HOTEND2_X
1258
     #define STATUS_HOTEND2_X STATUS_HOTEND1_X + STATUS_HEATERS_XSPACE
1330
     #define STATUS_HOTEND2_X STATUS_HOTEND1_X + STATUS_HEATERS_XSPACE
1259
   #endif
1331
   #endif
1260
-  #ifndef STATUS_HOTEND3_X
1261
-    #define STATUS_HOTEND3_X STATUS_HOTEND2_X + STATUS_HEATERS_XSPACE
1262
-  #endif
1263
-  #ifndef STATUS_HOTEND4_X
1264
-    #define STATUS_HOTEND4_X STATUS_HOTEND3_X + STATUS_HEATERS_XSPACE
1265
-  #endif
1266
-  #ifndef STATUS_HOTEND5_X
1267
-    #define STATUS_HOTEND5_X STATUS_HOTEND4_X + STATUS_HEATERS_XSPACE
1268
-  #endif
1269
-  #ifndef STATUS_HOTEND6_X
1270
-    #define STATUS_HOTEND6_X STATUS_HOTEND5_X + STATUS_HEATERS_XSPACE
1271
-  #endif
1272
 
1332
 
1273
   #if HOTENDS > 2
1333
   #if HOTENDS > 2
1334
+    #ifndef STATUS_HOTEND3_X
1335
+      #define STATUS_HOTEND3_X STATUS_HOTEND2_X + STATUS_HEATERS_XSPACE
1336
+    #endif
1337
+    #ifndef STATUS_HOTEND4_X
1338
+      #define STATUS_HOTEND4_X STATUS_HOTEND3_X + STATUS_HEATERS_XSPACE
1339
+    #endif
1340
+    #ifndef STATUS_HOTEND5_X
1341
+      #define STATUS_HOTEND5_X STATUS_HOTEND4_X + STATUS_HEATERS_XSPACE
1342
+    #endif
1343
+    #ifndef STATUS_HOTEND6_X
1344
+      #define STATUS_HOTEND6_X STATUS_HOTEND5_X + STATUS_HEATERS_XSPACE
1345
+    #endif
1346
+
1274
     constexpr uint8_t status_hotend_x[HOTENDS] = ARRAY_N(HOTENDS, STATUS_HOTEND1_X, STATUS_HOTEND2_X, STATUS_HOTEND3_X, STATUS_HOTEND4_X, STATUS_HOTEND5_X, STATUS_HOTEND6_X);
1347
     constexpr uint8_t status_hotend_x[HOTENDS] = ARRAY_N(HOTENDS, STATUS_HOTEND1_X, STATUS_HOTEND2_X, STATUS_HOTEND3_X, STATUS_HOTEND4_X, STATUS_HOTEND5_X, STATUS_HOTEND6_X);
1275
     #define STATUS_HOTEND_X(N) status_hotend_x[N]
1348
     #define STATUS_HOTEND_X(N) status_hotend_x[N]
1276
   #elif HOTENDS > 1
1349
   #elif HOTENDS > 1
1303
     #endif
1376
     #endif
1304
   #endif
1377
   #endif
1305
 
1378
 
1306
-  #if STATUS_HOTEND_BITMAPS > 1
1379
+  #if STATUS_HOTEND_BITMAPS > 1 && DISABLED(STATUS_HOTEND_NUMBERLESS)
1307
     #define TEST_BITMAP_OFF status_hotend1_a_bmp
1380
     #define TEST_BITMAP_OFF status_hotend1_a_bmp
1308
     #define TEST_BITMAP_ON  status_hotend1_b_bmp
1381
     #define TEST_BITMAP_ON  status_hotend1_b_bmp
1309
   #else
1382
   #else
1341
     #define STATUS_HOTEND_X(N) (STATUS_HEATERS_X + 2 + (N) * (STATUS_HEATERS_XSPACE))
1414
     #define STATUS_HOTEND_X(N) (STATUS_HEATERS_X + 2 + (N) * (STATUS_HEATERS_XSPACE))
1342
   #endif
1415
   #endif
1343
   #ifndef STATUS_HOTEND_TEXT_X
1416
   #ifndef STATUS_HOTEND_TEXT_X
1344
-    #define STATUS_HOTEND_TEXT_X(N) (STATUS_HEATERS_X + 6 + (N) * (STATUS_HEATERS_XSPACE))
1417
+    #if HOTENDS == 4 && STATUS_LOGO_WIDTH
1418
+      #define STATUS_HOTEND_TEXT_X(N) (STATUS_HEATERS_X + 6 + (N) * (STATUS_HEATERS_XSPACE))
1419
+    #else
1420
+      #define STATUS_HOTEND_TEXT_X(N) (STATUS_HEATERS_X + 6 + (N) * (STATUS_HEATERS_XSPACE))
1421
+    #endif
1345
   #endif
1422
   #endif
1346
   #ifndef STATUS_HEATERS_BYTEWIDTH
1423
   #ifndef STATUS_HEATERS_BYTEWIDTH
1347
     #define STATUS_HEATERS_BYTEWIDTH BW(STATUS_HEATERS_WIDTH)
1424
     #define STATUS_HEATERS_BYTEWIDTH BW(STATUS_HEATERS_WIDTH)
1363
 //
1440
 //
1364
 // Chamber Bitmap Properties
1441
 // Chamber Bitmap Properties
1365
 //
1442
 //
1366
-#ifndef STATUS_CHAMBER_WIDTH
1367
-  #define STATUS_CHAMBER_WIDTH 0
1368
-#endif
1369
 #ifndef STATUS_CHAMBER_BYTEWIDTH
1443
 #ifndef STATUS_CHAMBER_BYTEWIDTH
1370
   #define STATUS_CHAMBER_BYTEWIDTH BW(STATUS_CHAMBER_WIDTH)
1444
   #define STATUS_CHAMBER_BYTEWIDTH BW(STATUS_CHAMBER_WIDTH)
1371
 #endif
1445
 #endif
1372
-#if STATUS_CHAMBER_WIDTH && !STATUS_HEATERS_WIDTH
1446
+#if STATUS_CHAMBER_WIDTH
1373
 
1447
 
1374
   #ifndef STATUS_CHAMBER_X
1448
   #ifndef STATUS_CHAMBER_X
1375
-    #define STATUS_CHAMBER_X (128 - (STATUS_FAN_BYTEWIDTH + STATUS_CHAMBER_BYTEWIDTH) * 8)
1449
+    #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - (STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8)
1376
   #endif
1450
   #endif
1377
 
1451
 
1378
   #ifndef STATUS_CHAMBER_HEIGHT
1452
   #ifndef STATUS_CHAMBER_HEIGHT
1388
   #endif
1462
   #endif
1389
 
1463
 
1390
   #ifndef STATUS_CHAMBER_TEXT_X
1464
   #ifndef STATUS_CHAMBER_TEXT_X
1391
-    #define STATUS_CHAMBER_TEXT_X (STATUS_CHAMBER_X + 7)
1465
+    #define STATUS_CHAMBER_TEXT_X (STATUS_CHAMBER_X + 11)
1392
   #endif
1466
   #endif
1393
 
1467
 
1394
   static_assert(
1468
   static_assert(
1407
 //
1481
 //
1408
 // Bed Bitmap Properties
1482
 // Bed Bitmap Properties
1409
 //
1483
 //
1410
-#ifndef STATUS_BED_WIDTH
1411
-  #define STATUS_BED_WIDTH 0
1412
-#endif
1413
 #ifndef STATUS_BED_BYTEWIDTH
1484
 #ifndef STATUS_BED_BYTEWIDTH
1414
   #define STATUS_BED_BYTEWIDTH BW(STATUS_BED_WIDTH)
1485
   #define STATUS_BED_BYTEWIDTH BW(STATUS_BED_WIDTH)
1415
 #endif
1486
 #endif
1416
 #if STATUS_BED_WIDTH && !STATUS_HEATERS_WIDTH
1487
 #if STATUS_BED_WIDTH && !STATUS_HEATERS_WIDTH
1417
 
1488
 
1418
   #ifndef STATUS_BED_X
1489
   #ifndef STATUS_BED_X
1419
-    #define STATUS_BED_X (128 - (STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH + STATUS_BED_BYTEWIDTH) * 8)
1490
+    #define STATUS_BED_X (LCD_PIXEL_WIDTH - (STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH + STATUS_BED_BYTEWIDTH) * 8)
1420
   #endif
1491
   #endif
1421
 
1492
 
1422
   #ifndef STATUS_BED_HEIGHT
1493
   #ifndef STATUS_BED_HEIGHT
1432
   #endif
1503
   #endif
1433
 
1504
 
1434
   #ifndef STATUS_BED_TEXT_X
1505
   #ifndef STATUS_BED_TEXT_X
1435
-    #define STATUS_BED_TEXT_X (STATUS_BED_X + 11)
1506
+    #define STATUS_BED_TEXT_X (STATUS_BED_X + 9)
1436
   #endif
1507
   #endif
1437
 
1508
 
1438
   static_assert(
1509
   static_assert(
1445
       "Status bed bitmap (status_bed_on_bmp) dimensions don't match data."
1516
       "Status bed bitmap (status_bed_on_bmp) dimensions don't match data."
1446
     );
1517
     );
1447
   #endif
1518
   #endif
1448
-
1449
 #endif
1519
 #endif
1450
 
1520
 
1451
 //
1521
 //
1452
 // Fan Bitmap Properties
1522
 // Fan Bitmap Properties
1453
 //
1523
 //
1454
-#ifndef STATUS_FAN_WIDTH
1455
-  #define STATUS_FAN_WIDTH 0
1456
-#endif
1457
 #ifndef STATUS_FAN_BYTEWIDTH
1524
 #ifndef STATUS_FAN_BYTEWIDTH
1458
   #define STATUS_FAN_BYTEWIDTH BW(STATUS_FAN_WIDTH)
1525
   #define STATUS_FAN_BYTEWIDTH BW(STATUS_FAN_WIDTH)
1459
 #endif
1526
 #endif
1460
 #if STATUS_FAN_FRAMES
1527
 #if STATUS_FAN_FRAMES
1461
   #ifndef STATUS_FAN_X
1528
   #ifndef STATUS_FAN_X
1462
-    #define STATUS_FAN_X (128 - (STATUS_FAN_BYTEWIDTH) * 8)
1529
+    #define STATUS_FAN_X (LCD_PIXEL_WIDTH - (STATUS_FAN_BYTEWIDTH) * 8)
1463
   #endif
1530
   #endif
1464
   #ifndef STATUS_FAN_Y
1531
   #ifndef STATUS_FAN_Y
1465
     #define STATUS_FAN_Y 1
1532
     #define STATUS_FAN_Y 1
1466
   #endif
1533
   #endif
1467
   #ifndef STATUS_FAN_TEXT_X
1534
   #ifndef STATUS_FAN_TEXT_X
1468
-    #define STATUS_FAN_TEXT_X 103
1535
+    #define STATUS_FAN_TEXT_X (STATUS_FAN_X - 1)
1469
   #endif
1536
   #endif
1470
   #ifndef STATUS_FAN_TEXT_Y
1537
   #ifndef STATUS_FAN_TEXT_Y
1471
     #define STATUS_FAN_TEXT_Y 28
1538
     #define STATUS_FAN_TEXT_Y 28

+ 47
- 36
Marlin/src/lcd/dogm/status_screen_DOGM.cpp View File

63
 #define EXTRAS_BASELINE (40 + INFO_FONT_ASCENT)
63
 #define EXTRAS_BASELINE (40 + INFO_FONT_ASCENT)
64
 #define STATUS_BASELINE (LCD_PIXEL_HEIGHT - INFO_FONT_DESCENT)
64
 #define STATUS_BASELINE (LCD_PIXEL_HEIGHT - INFO_FONT_DESCENT)
65
 
65
 
66
-#define DO_DRAW_BED (HAS_HEATED_BED && STATUS_BED_WIDTH && HOTENDS <= 3 && DISABLED(STATUS_COMBINE_HEATERS))
67
-#define DO_DRAW_FAN (HAS_FAN0 && STATUS_FAN_WIDTH && STATUS_FAN_FRAMES)
66
+#define DO_DRAW_LOGO (STATUS_LOGO_WIDTH && ENABLED(CUSTOM_STATUS_SCREEN_IMAGE))
67
+#define DO_DRAW_BED (HAS_HEATED_BED && STATUS_BED_WIDTH && HOTENDS <= 4)
68
+#define DO_DRAW_CHAMBER (HAS_HEATED_CHAMBER && STATUS_CHAMBER_WIDTH && HOTENDS <= 4)
69
+#define DO_DRAW_FAN (HAS_FAN0 && STATUS_FAN_WIDTH && HOTENDS <= 4 && defined(STATUS_FAN_FRAMES))
70
+
68
 #define ANIM_HOTEND (HOTENDS && ENABLED(STATUS_HOTEND_ANIM))
71
 #define ANIM_HOTEND (HOTENDS && ENABLED(STATUS_HOTEND_ANIM))
69
 #define ANIM_BED (DO_DRAW_BED && ENABLED(STATUS_BED_ANIM))
72
 #define ANIM_BED (DO_DRAW_BED && ENABLED(STATUS_BED_ANIM))
70
-#define ANIM_CHAMBER (HAS_HEATED_CHAMBER && ENABLED(STATUS_CHAMBER_ANIM))
73
+#define ANIM_CHAMBER (DO_DRAW_CHAMBER && ENABLED(STATUS_CHAMBER_ANIM))
74
+
75
+#define ANIM_HBC (ANIM_HOTEND || ANIM_BED || ANIM_CHAMBER)
71
 
76
 
72
-#if ANIM_HOTEND || ANIM_BED
77
+#if ANIM_HBC
73
   uint8_t heat_bits;
78
   uint8_t heat_bits;
74
 #endif
79
 #endif
75
 #if ANIM_HOTEND
80
 #if ANIM_HOTEND
109
     UNUSED(blink);
114
     UNUSED(blink);
110
   #endif
115
   #endif
111
 
116
 
112
-  #if HAS_HEATED_BED
117
+  #if DO_DRAW_BED && DISABLED(STATUS_COMBINE_HEATERS) || (HAS_HEATED_BED && ENABLED(STATUS_COMBINE_HEATERS) && HOTENDS <= 4)
113
     const bool isBed = heater < 0;
118
     const bool isBed = heater < 0;
114
     #define IFBED(A,B) (isBed ? (A) : (B))
119
     #define IFBED(A,B) (isBed ? (A) : (B))
115
   #else
120
   #else
125
   const uint8_t tx = IFBED(STATUS_BED_TEXT_X, STATUS_HOTEND_TEXT_X(heater));
130
   const uint8_t tx = IFBED(STATUS_BED_TEXT_X, STATUS_HOTEND_TEXT_X(heater));
126
 
131
 
127
   #if ENABLED(MARLIN_DEV_MODE)
132
   #if ENABLED(MARLIN_DEV_MODE)
128
-    const float temp = 20 + (millis() >> 8) % IFBED(100, 200);
129
-    const float target = IFBED(100, 200);
133
+    const float temp = 20 + (millis() >> 8) % IFBED(100, 200),
134
+              target = IFBED(100, 200);
130
   #else
135
   #else
131
     const float temp = IFBED(thermalManager.degBed(), thermalManager.degHotend(heater)),
136
     const float temp = IFBED(thermalManager.degBed(), thermalManager.degHotend(heater)),
132
-                target = IFBED(thermalManager.degTargetBed(), thermalManager.degTargetHotend(heater));
137
+              target = IFBED(thermalManager.degTargetBed(), thermalManager.degTargetHotend(heater));
133
   #endif
138
   #endif
134
 
139
 
135
   #if DISABLED(STATUS_HOTEND_ANIM)
140
   #if DISABLED(STATUS_HOTEND_ANIM)
140
     #define HOTEND_DOT    false
145
     #define HOTEND_DOT    false
141
   #endif
146
   #endif
142
 
147
 
143
-  #if HAS_HEATED_BED && DISABLED(STATUS_BED_ANIM)
148
+  #if DO_DRAW_BED && DISABLED(STATUS_BED_ANIM)
144
     #define STATIC_BED    true
149
     #define STATIC_BED    true
145
     #define BED_DOT       isHeat
150
     #define BED_DOT       isHeat
146
   #else
151
   #else
148
     #define BED_DOT       false
153
     #define BED_DOT       false
149
   #endif
154
   #endif
150
 
155
 
151
-  #if ANIM_HOTEND && ENABLED(STATUS_HOTEND_INVERTED)
156
+  #if ANIM_HOTEND && BOTH(STATUS_HOTEND_INVERTED, STATUS_HOTEND_NUMBERLESS)
157
+    #define OFF_BMP(N) status_hotend_b_bmp
158
+    #define ON_BMP(N)  status_hotend_a_bmp
159
+  #elif ANIM_HOTEND && DISABLED(STATUS_HOTEND_INVERTED) && ENABLED(STATUS_HOTEND_NUMBERLESS)
160
+    #define OFF_BMP(N) status_hotend_a_bmp
161
+    #define ON_BMP(N)  status_hotend_b_bmp
162
+  #elif ANIM_HOTEND && ENABLED(STATUS_HOTEND_INVERTED)
152
     #define OFF_BMP(N) status_hotend##N##_b_bmp
163
     #define OFF_BMP(N) status_hotend##N##_b_bmp
153
     #define ON_BMP(N)  status_hotend##N##_a_bmp
164
     #define ON_BMP(N)  status_hotend##N##_a_bmp
154
   #else
165
   #else
179
     uint8_t tall = uint8_t(perc * BAR_TALL + 0.5f);
190
     uint8_t tall = uint8_t(perc * BAR_TALL + 0.5f);
180
     NOMORE(tall, BAR_TALL);
191
     NOMORE(tall, BAR_TALL);
181
 
192
 
182
-    #ifdef STATUS_HOTEND_ANIM
193
+    #if ANIM_HOTEND
183
       // Draw hotend bitmap, either whole or split by the heating percent
194
       // Draw hotend bitmap, either whole or split by the heating percent
184
       if (IFBED(0, 1)) {
195
       if (IFBED(0, 1)) {
185
-        const uint8_t hx = STATUS_HOTEND_X(heater), bw = STATUS_HOTEND_BYTEWIDTH(heater);
196
+        const uint8_t hx = STATUS_HOTEND_X(heater),
197
+                      bw = STATUS_HOTEND_BYTEWIDTH(heater);
186
         #if ENABLED(STATUS_HEAT_PERCENT)
198
         #if ENABLED(STATUS_HEAT_PERCENT)
187
           if (isHeat && tall <= BAR_TALL) {
199
           if (isHeat && tall <= BAR_TALL) {
188
             const uint8_t ph = STATUS_HEATERS_HEIGHT - 1 - tall;
200
             const uint8_t ph = STATUS_HEATERS_HEIGHT - 1 - tall;
196
     #endif
208
     #endif
197
 
209
 
198
     // Draw a heating progress bar, if specified
210
     // Draw a heating progress bar, if specified
199
-    #if ENABLED(STATUS_HEAT_PERCENT)
211
+    #if DO_DRAW_BED && ENABLED(STATUS_HEAT_PERCENT)
200
 
212
 
201
       if (IFBED(true, STATIC_HOTEND) && isHeat) {
213
       if (IFBED(true, STATIC_HOTEND) && isHeat) {
202
-        const uint8_t bx = IFBED(STATUS_BED_X + STATUS_BED_WIDTH, STATUS_HOTEND_X(heater) + STATUS_HOTEND_WIDTH(heater)) + 1;
214
+        const uint8_t bx = IFBED(STATUS_BED_X + STATUS_BED_WIDTH - 1, STATUS_HOTEND_X(heater) + STATUS_HOTEND_WIDTH(heater)) + 1;
203
         u8g.drawFrame(bx, STATUS_HEATERS_Y, 3, STATUS_HEATERS_HEIGHT);
215
         u8g.drawFrame(bx, STATUS_HEATERS_Y, 3, STATUS_HEATERS_HEIGHT);
204
         if (tall) {
216
         if (tall) {
205
           const uint8_t ph = STATUS_HEATERS_HEIGHT - 1 - tall;
217
           const uint8_t ph = STATUS_HEATERS_HEIGHT - 1 - tall;
233
 
245
 
234
 }
246
 }
235
 
247
 
236
-#if HAS_HEATED_CHAMBER
248
+#if DO_DRAW_CHAMBER
237
 
249
 
238
   FORCE_INLINE void _draw_chamber_status(const bool blink) {
250
   FORCE_INLINE void _draw_chamber_status(const bool blink) {
239
-    const float temp = thermalManager.degChamber(),
251
+    #if ENABLED(MARLIN_DEV_MODE)
252
+	    const float temp = 10 + (millis() >> 8) % CHAMBER_MAXTEMP,
253
+                target = CHAMBER_MAXTEMP;
254
+    #else
255
+      const float temp = thermalManager.degChamber(),
240
                 target = thermalManager.degTargetChamber();
256
                 target = thermalManager.degTargetChamber();
257
+    #endif
241
     #if !HEATER_IDLE_HANDLER
258
     #if !HEATER_IDLE_HANDLER
242
       UNUSED(blink);
259
       UNUSED(blink);
243
     #endif
260
     #endif
299
 
316
 
300
   // At the first page, generate new display values
317
   // At the first page, generate new display values
301
   if (first_page) {
318
   if (first_page) {
302
-    #if ANIM_HOTEND || ANIM_BED || ANIM_CHAMBER
319
+    #if ANIM_HBC
303
       uint8_t new_bits = 0;
320
       uint8_t new_bits = 0;
304
       #if ANIM_HOTEND
321
       #if ANIM_HOTEND
305
         HOTEND_LOOP() if (thermalManager.isHeatingHotend(e) ^ SHOW_ON_STATE) SBI(new_bits, e);
322
         HOTEND_LOOP() if (thermalManager.isHeatingHotend(e) ^ SHOW_ON_STATE) SBI(new_bits, e);
307
       #if ANIM_BED
324
       #if ANIM_BED
308
         if (thermalManager.isHeatingBed() ^ SHOW_ON_STATE) SBI(new_bits, 7);
325
         if (thermalManager.isHeatingBed() ^ SHOW_ON_STATE) SBI(new_bits, 7);
309
       #endif
326
       #endif
310
-      #if ANIM_CHAMBER
327
+      #if DO_DRAW_CHAMBER
311
         if (thermalManager.isHeatingChamber() ^ SHOW_ON_STATE) SBI(new_bits, 6);
328
         if (thermalManager.isHeatingChamber() ^ SHOW_ON_STATE) SBI(new_bits, 6);
312
       #endif
329
       #endif
313
       heat_bits = new_bits;
330
       heat_bits = new_bits;
314
     #endif
331
     #endif
315
     strcpy(xstring, ftostr4sign(LOGICAL_X_POSITION(current_position[X_AXIS])));
332
     strcpy(xstring, ftostr4sign(LOGICAL_X_POSITION(current_position[X_AXIS])));
316
     strcpy(ystring, ftostr4sign(LOGICAL_Y_POSITION(current_position[Y_AXIS])));
333
     strcpy(ystring, ftostr4sign(LOGICAL_Y_POSITION(current_position[Y_AXIS])));
317
-    strcpy(zstring, ftostr52sp(LOGICAL_Z_POSITION(current_position[Z_AXIS])));
334
+    strcpy(zstring, ftostr52sp( LOGICAL_Z_POSITION(current_position[Z_AXIS])));
318
     #if ENABLED(FILAMENT_LCD_DISPLAY)
335
     #if ENABLED(FILAMENT_LCD_DISPLAY)
319
       strcpy(wstring, ftostr12ns(filament_width_meas));
336
       strcpy(wstring, ftostr12ns(filament_width_meas));
320
       strcpy(mstring, i16tostr3(100.0 * (
337
       strcpy(mstring, i16tostr3(100.0 * (
335
     TCNT5 = 0;
352
     TCNT5 = 0;
336
   #endif
353
   #endif
337
 
354
 
338
-  #if STATUS_LOGO_WIDTH
355
+  #if DO_DRAW_LOGO
339
     if (PAGE_CONTAINS(STATUS_LOGO_Y, STATUS_LOGO_Y + STATUS_LOGO_HEIGHT - 1))
356
     if (PAGE_CONTAINS(STATUS_LOGO_Y, STATUS_LOGO_Y + STATUS_LOGO_HEIGHT - 1))
340
       u8g.drawBitmapP(STATUS_LOGO_X, STATUS_LOGO_Y, STATUS_LOGO_BYTEWIDTH, STATUS_LOGO_HEIGHT, status_logo_bmp);
357
       u8g.drawBitmapP(STATUS_LOGO_X, STATUS_LOGO_Y, STATUS_LOGO_BYTEWIDTH, STATUS_LOGO_HEIGHT, status_logo_bmp);
341
   #endif
358
   #endif
346
       u8g.drawBitmapP(STATUS_HEATERS_X, STATUS_HEATERS_Y, STATUS_HEATERS_BYTEWIDTH, STATUS_HEATERS_HEIGHT, status_heaters_bmp);
363
       u8g.drawBitmapP(STATUS_HEATERS_X, STATUS_HEATERS_Y, STATUS_HEATERS_BYTEWIDTH, STATUS_HEATERS_HEIGHT, status_heaters_bmp);
347
   #endif
364
   #endif
348
 
365
 
349
-  #if DO_DRAW_BED
366
+  #if DO_DRAW_BED && DISABLED(STATUS_COMBINE_HEATERS)
350
     #if ANIM_BED
367
     #if ANIM_BED
351
       #define BED_BITMAP(S) ((S) ? status_bed_on_bmp : status_bed_bmp)
368
       #define BED_BITMAP(S) ((S) ? status_bed_on_bmp : status_bed_bmp)
352
     #else
369
     #else
353
       #define BED_BITMAP(S) status_bed_bmp
370
       #define BED_BITMAP(S) status_bed_bmp
354
     #endif
371
     #endif
355
-    const uint8_t bedy = STATUS_BED_Y(BED_ALT()), bedh = STATUS_BED_HEIGHT(BED_ALT());
372
+    const uint8_t bedy = STATUS_BED_Y(BED_ALT()),
373
+                  bedh = STATUS_BED_HEIGHT(BED_ALT());
356
     if (PAGE_CONTAINS(bedy, bedy + bedh - 1))
374
     if (PAGE_CONTAINS(bedy, bedy + bedh - 1))
357
       u8g.drawBitmapP(STATUS_BED_X, bedy, STATUS_BED_BYTEWIDTH, bedh, BED_BITMAP(BED_ALT()));
375
       u8g.drawBitmapP(STATUS_BED_X, bedy, STATUS_BED_BYTEWIDTH, bedh, BED_BITMAP(BED_ALT()));
358
   #endif
376
   #endif
363
     #else
381
     #else
364
       #define CHAMBER_BITMAP(S) status_chamber_bmp
382
       #define CHAMBER_BITMAP(S) status_chamber_bmp
365
     #endif
383
     #endif
366
-    if (PAGE_CONTAINS(STATUS_CHAMBER_Y, STATUS_CHAMBER_Y + STATUS_CHAMBER_HEIGHT - 1))
367
-      u8g.drawBitmapP(
368
-        STATUS_CHAMBER_X, STATUS_CHAMBER_Y,
369
-        STATUS_CHAMBER_BYTEWIDTH, STATUS_CHAMBER_HEIGHT,
370
-        CHAMBER_BITMAP(CHAMBER_ALT())
371
-      );
384
+    const uint8_t chambery = STATUS_CHAMBER_Y(CHAMBER_ALT()),
385
+                  chamberh = STATUS_CHAMBER_HEIGHT(CHAMBER_ALT());
386
+    if (PAGE_CONTAINS(chambery, chambery + chamberh - 1))
387
+      u8g.drawBitmapP(STATUS_CHAMBER_X, chambery, STATUS_CHAMBER_BYTEWIDTH, chamberh, CHAMBER_BITMAP(CHAMBER_ALT()));
372
   #endif
388
   #endif
373
 
389
 
374
   #if DO_DRAW_FAN
390
   #if DO_DRAW_FAN
381
       }
397
       }
382
     #endif
398
     #endif
383
     if (PAGE_CONTAINS(STATUS_FAN_Y, STATUS_FAN_Y + STATUS_FAN_HEIGHT - 1))
399
     if (PAGE_CONTAINS(STATUS_FAN_Y, STATUS_FAN_Y + STATUS_FAN_HEIGHT - 1))
384
-      u8g.drawBitmapP(
385
-        STATUS_FAN_X, STATUS_FAN_Y,
386
-        STATUS_FAN_BYTEWIDTH, STATUS_FAN_HEIGHT,
400
+      u8g.drawBitmapP(STATUS_FAN_X, STATUS_FAN_Y, STATUS_FAN_BYTEWIDTH, STATUS_FAN_HEIGHT,
387
         #if STATUS_FAN_FRAMES > 2
401
         #if STATUS_FAN_FRAMES > 2
388
           fan_frame == 1 ? status_fan1_bmp :
402
           fan_frame == 1 ? status_fan1_bmp :
389
           fan_frame == 2 ? status_fan2_bmp :
403
           fan_frame == 2 ? status_fan2_bmp :
400
   //
414
   //
401
   // Temperature Graphics and Info
415
   // Temperature Graphics and Info
402
   //
416
   //
403
-
404
   if (PAGE_UNDER(6 + 1 + 12 + 1 + 6 + 1)) {
417
   if (PAGE_UNDER(6 + 1 + 12 + 1 + 6 + 1)) {
405
     // Extruders
418
     // Extruders
406
     for (uint8_t e = 0; e < MAX_HOTEND_DRAW; ++e)
419
     for (uint8_t e = 0; e < MAX_HOTEND_DRAW; ++e)
407
       _draw_heater_status((heater_ind_t)e, blink);
420
       _draw_heater_status((heater_ind_t)e, blink);
408
 
421
 
409
     // Heated bed
422
     // Heated bed
410
-    #if HAS_HEATED_BED && HOTENDS < 4
423
+    #if DO_DRAW_BED && DISABLED(STATUS_COMBINE_HEATERS) || (HAS_HEATED_BED && ENABLED(STATUS_COMBINE_HEATERS) && HOTENDS <= 4)
411
       _draw_heater_status(H_BED, blink);
424
       _draw_heater_status(H_BED, blink);
412
     #endif
425
     #endif
413
 
426
 
414
-    #if HAS_HEATED_CHAMBER
427
+    #if DO_DRAW_CHAMBER
415
       _draw_chamber_status(blink);
428
       _draw_chamber_status(blink);
416
     #endif
429
     #endif
417
 
430
 
575
   //
588
   //
576
   // Feedrate
589
   // Feedrate
577
   //
590
   //
578
-
579
   #define EXTRAS_2_BASELINE (EXTRAS_BASELINE + 3)
591
   #define EXTRAS_2_BASELINE (EXTRAS_BASELINE + 3)
580
 
592
 
581
   if (PAGE_CONTAINS(EXTRAS_2_BASELINE - INFO_FONT_ASCENT, EXTRAS_2_BASELINE - 1)) {
593
   if (PAGE_CONTAINS(EXTRAS_2_BASELINE - INFO_FONT_ASCENT, EXTRAS_2_BASELINE - 1)) {
602
   //
614
   //
603
   // Status line
615
   // Status line
604
   //
616
   //
605
-
606
   if (PAGE_CONTAINS(STATUS_BASELINE - INFO_FONT_ASCENT, STATUS_BASELINE + INFO_FONT_DESCENT)) {
617
   if (PAGE_CONTAINS(STATUS_BASELINE - INFO_FONT_ASCENT, STATUS_BASELINE + INFO_FONT_DESCENT)) {
607
     lcd_moveto(0, STATUS_BASELINE);
618
     lcd_moveto(0, STATUS_BASELINE);
608
 
619
 

Loading…
Cancel
Save