Browse Source

Try to fit logo by narrowing icons

Scott Lahteine 5 years ago
parent
commit
c44b5fd13a
1 changed files with 38 additions and 28 deletions
  1. 38
    28
      Marlin/src/lcd/dogm/dogm_Statusscreen.h

+ 38
- 28
Marlin/src/lcd/dogm/dogm_Statusscreen.h View File

@@ -1206,20 +1206,42 @@
1206 1206
   #define STATUS_FAN_WIDTH 0
1207 1207
 #endif
1208 1208
 
1209
+#define _EXTRA_WIDTH (STATUS_FAN_WIDTH + STATUS_CHAMBER_WIDTH + STATUS_BED_WIDTH)
1210
+
1211
+//
1212
+// Heater Bitmap X Space Requirements
1213
+//
1214
+#if !defined(STATUS_HEATERS_XSPACE) && (STATUS_HOTEND1_WIDTH || STATUS_HEATERS_WIDTH)
1215
+  #if (HOTENDS == 3 || HOTENDS == 4) && ENABLED(STATUS_COMBINE_HEATERS)
1216
+    // If more heaters or they're combined, 3 bytes
1217
+    #define STATUS_HEATERS_XSPACE 24
1218
+  #elif STATUS_LOGO_WIDTH > (LCD_PIXEL_WIDTH - (_EXTRA_WIDTH) - 26 * (HOTENDS)) // 128 - (20 + 24 + 26) == 58
1219
+    // If the logo won't fit at 26 width
1220
+    #define STATUS_HEATERS_XSPACE 24
1221
+  #else
1222
+    #define STATUS_HEATERS_XSPACE 26
1223
+  #endif
1224
+#endif
1225
+
1209 1226
 #if ENABLED(CUSTOM_STATUS_SCREEN_IMAGE)
1210 1227
 
1211
-  #if STATUS_HOTEND1_WIDTH
1212
-    #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)
1228
+  //
1229
+  // Disable the logo bitmap if insufficient space
1230
+  //
1231
+  #if STATUS_HEATERS_XSPACE
1232
+    #define _HEATERS_WIDTH (HOTENDS * (STATUS_HEATERS_XSPACE)) // as many hotends as possible
1213 1233
   #elif STATUS_HEATERS_WIDTH
1214
-    #define HAS_SPACES (((LCD_PIXEL_WIDTH - STATUS_HEATERS_WIDTH - STATUS_BED_WIDTH - STATUS_CHAMBER_WIDTH - STATUS_FAN_WIDTH - 20) < STATUS_LOGO_WIDTH) ? true : false)
1234
+    #define _HEATERS_WIDTH STATUS_HEATERS_WIDTH
1235
+  #else
1236
+    #error "Status screen heaters region was not specified."
1215 1237
   #endif
1216
-
1217
-  #if HAS_SPACES
1238
+  #if STATUS_LOGO_WIDTH > (LCD_PIXEL_WIDTH - (_EXTRA_WIDTH + _HEATERS_WIDTH))
1239
+    #warning "Unable to fit custom Status Screen logo. Disabling."
1218 1240
     #undef STATUS_LOGO_WIDTH
1219 1241
   #endif
1220 1242
 
1221 1243
   #if (HOTENDS > 1 && STATUS_LOGO_WIDTH && BED_OR_CHAMBER_OR_FAN) || (HOTENDS >= 3 && !BED_OR_CHAMBER_OR_FAN)
1222
-    #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)
1244
+    #define _STATUS_HEATERS_X(H,S,N) ((LCD_PIXEL_WIDTH - (H * (S + N)) - (_EXTRA_WIDTH) + (STATUS_LOGO_WIDTH)) / 2)
1223 1245
     #if STATUS_HOTEND1_WIDTH
1224 1246
       #if HOTENDS > 2
1225 1247
         #define STATUS_HEATERS_X _STATUS_HEATERS_X(HOTENDS, STATUS_HOTEND1_WIDTH, 6)
@@ -1259,33 +1281,21 @@
1259 1281
 #endif
1260 1282
 
1261 1283
 //
1262
-// Heater Bitmap Properties
1284
+// Hotend Heater Bitmap starting X position
1263 1285
 //
1264
-#if STATUS_HOTEND1_WIDTH || STATUS_HEATERS_WIDTH
1265
-
1266
-  #ifndef STATUS_HEATERS_XSPACE
1267
-    #if (HOTENDS == 3 || HOTENDS == 4) && ENABLED(STATUS_COMBINE_HEATERS)
1268
-      #define STATUS_HEATERS_XSPACE 24
1269
-    #else
1270
-      #define STATUS_HEATERS_XSPACE 26 // Like the included bitmaps
1271
-    #endif
1272
-  #endif
1273
-
1274
-  #ifndef STATUS_HEATERS_X
1275
-    #if STATUS_LOGO_BYTEWIDTH
1276
-      #define STATUS_HEATERS_X (STATUS_LOGO_BYTEWIDTH * 8)
1277
-    #elif ((STATUS_CHAMBER_WIDTH || STATUS_FAN_WIDTH) && (STATUS_BED_WIDTH  && STATUS_HOTEND_BITMAPS == 3)) || \
1278
-          ((STATUS_CHAMBER_WIDTH || STATUS_FAN_WIDTH  ||  STATUS_BED_WIDTH) && STATUS_HOTEND_BITMAPS == 4)
1286
+#if !defined(STATUS_HEATERS_X) && (STATUS_HOTEND1_WIDTH || STATUS_HEATERS_WIDTH)
1287
+  #if STATUS_LOGO_BYTEWIDTH
1288
+    #define STATUS_HEATERS_X (STATUS_LOGO_BYTEWIDTH * 8)
1289
+  #elif ((STATUS_CHAMBER_WIDTH || STATUS_FAN_WIDTH) && (STATUS_BED_WIDTH  && STATUS_HOTEND_BITMAPS == 3)) || \
1290
+        ((STATUS_CHAMBER_WIDTH || STATUS_FAN_WIDTH  ||  STATUS_BED_WIDTH) && STATUS_HOTEND_BITMAPS == 4)
1291
+    #define STATUS_HEATERS_X 5
1292
+  #else
1293
+    #if ENABLED(STATUS_COMBINE_HEATERS) && HAS_HEATED_BED && HOTENDS <= 4
1279 1294
       #define STATUS_HEATERS_X 5
1280 1295
     #else
1281
-      #if ENABLED(STATUS_COMBINE_HEATERS) && HAS_HEATED_BED && HOTENDS <= 4
1282
-        #define STATUS_HEATERS_X 5
1283
-      #else
1284
-        #define STATUS_HEATERS_X 8 // Like the included bitmaps
1285
-      #endif
1296
+      #define STATUS_HEATERS_X 8 // Like the included bitmaps
1286 1297
     #endif
1287 1298
   #endif
1288
-
1289 1299
 #endif
1290 1300
 
1291 1301
 #if STATUS_HOTEND1_WIDTH

Loading…
Cancel
Save