Browse Source

Add Babystep Z graphic overlay

See PR #7593
Scott Lahteine 8 years ago
parent
commit
ce1638e32f
34 changed files with 204 additions and 2 deletions
  1. 2
    1
      .travis.yml
  2. 2
    0
      Marlin/Configuration_adv.h
  3. 2
    0
      Marlin/src/config/default/Configuration_adv.h
  4. 2
    0
      Marlin/src/config/examples/AlephObjects/TAZ4/Configuration_adv.h
  5. 2
    0
      Marlin/src/config/examples/Anet/A6/Configuration_adv.h
  6. 2
    0
      Marlin/src/config/examples/Anet/A8/Configuration_adv.h
  7. 2
    0
      Marlin/src/config/examples/BQ/Hephestos/Configuration_adv.h
  8. 2
    0
      Marlin/src/config/examples/BQ/Hephestos_2/Configuration_adv.h
  9. 2
    0
      Marlin/src/config/examples/BQ/WITBOX/Configuration_adv.h
  10. 2
    0
      Marlin/src/config/examples/Cartesio/Configuration_adv.h
  11. 2
    0
      Marlin/src/config/examples/Creality/CR-10/Configuration_adv.h
  12. 2
    0
      Marlin/src/config/examples/Felix/Configuration_adv.h
  13. 2
    0
      Marlin/src/config/examples/Folger Tech/i3-2020/Configuration_adv.h
  14. 2
    0
      Marlin/src/config/examples/Infitary/i3-M508/Configuration_adv.h
  15. 2
    0
      Marlin/src/config/examples/Malyan/M150/Configuration_adv.h
  16. 2
    0
      Marlin/src/config/examples/RigidBot/Configuration_adv.h
  17. 2
    0
      Marlin/src/config/examples/SCARA/Configuration_adv.h
  18. 2
    0
      Marlin/src/config/examples/Sanguinololu/Configuration_adv.h
  19. 2
    0
      Marlin/src/config/examples/TinyBoy2/Configuration_adv.h
  20. 2
    0
      Marlin/src/config/examples/Velleman/K8200/Configuration_adv.h
  21. 2
    0
      Marlin/src/config/examples/Velleman/K8400/Configuration_adv.h
  22. 2
    0
      Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h
  23. 2
    0
      Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h
  24. 2
    0
      Marlin/src/config/examples/delta/generic/Configuration_adv.h
  25. 2
    0
      Marlin/src/config/examples/delta/kossel_mini/Configuration_adv.h
  26. 2
    0
      Marlin/src/config/examples/delta/kossel_pro/Configuration_adv.h
  27. 2
    0
      Marlin/src/config/examples/delta/kossel_xl/Configuration_adv.h
  28. 2
    0
      Marlin/src/config/examples/gCreate/gMax1.5+/Configuration_adv.h
  29. 2
    0
      Marlin/src/config/examples/makibox/Configuration_adv.h
  30. 2
    0
      Marlin/src/config/examples/tvrrug/Round2/Configuration_adv.h
  31. 2
    0
      Marlin/src/config/examples/wt150/Configuration_adv.h
  32. 4
    0
      Marlin/src/inc/SanityCheck.h
  33. 93
    0
      Marlin/src/lcd/dogm/dogm_bitmaps.h
  34. 45
    1
      Marlin/src/lcd/ultralcd.cpp

+ 2
- 1
.travis.yml View File

348
   - opt_set TEMP_SENSOR_0 1
348
   - opt_set TEMP_SENSOR_0 1
349
   - opt_set TEMP_SENSOR_1 5
349
   - opt_set TEMP_SENSOR_1 5
350
   - opt_set TEMP_SENSOR_BED 1
350
   - opt_set TEMP_SENSOR_BED 1
351
-  - opt_enable ULTIMAKERCONTROLLER SDSUPPORT
351
+  - opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SDSUPPORT
352
   - opt_enable FILAMENT_WIDTH_SENSOR FILAMENT_LCD_DISPLAY
352
   - opt_enable FILAMENT_WIDTH_SENSOR FILAMENT_LCD_DISPLAY
353
   - opt_enable FIX_MOUNTED_PROBE Z_SAFE_HOMING AUTO_BED_LEVELING_BILINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE
353
   - opt_enable FIX_MOUNTED_PROBE Z_SAFE_HOMING AUTO_BED_LEVELING_BILINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE
354
+  - opt_enable BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET BABYSTEP_ZPROBE_GFX_OVERLAY
354
   - opt_enable PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE PIDTEMPBED EEPROM_SETTINGS INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT M100_FREE_MEMORY_WATCHER
355
   - opt_enable PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE PIDTEMPBED EEPROM_SETTINGS INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT M100_FREE_MEMORY_WATCHER
355
   - opt_enable_adv ADVANCED_PAUSE_FEATURE LCD_INFO_MENU ARC_SUPPORT BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES SDCARD_SORT_ALPHA
356
   - opt_enable_adv ADVANCED_PAUSE_FEATURE LCD_INFO_MENU ARC_SUPPORT BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES SDCARD_SORT_ALPHA
356
   - opt_set_adv I2C_SLAVE_ADDRESS 63
357
   - opt_set_adv I2C_SLAVE_ADDRESS 63

+ 2
- 0
Marlin/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/default/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/AlephObjects/TAZ4/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/Anet/A6/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/Anet/A8/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/BQ/Hephestos/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/BQ/Hephestos_2/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/BQ/WITBOX/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/Cartesio/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/Creality/CR-10/Configuration_adv.h View File

608
   #define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
608
   #define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
609
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
609
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
610
                                         // Note: Extra time may be added to mitigate controller latency.
610
                                         // Note: Extra time may be added to mitigate controller latency.
611
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
612
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
611
 #endif
613
 #endif
612
 
614
 
613
 // @section extruder
615
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/Felix/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/Folger Tech/i3-2020/Configuration_adv.h View File

615
   #define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   #define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/Infitary/i3-M508/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/Malyan/M150/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/RigidBot/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/SCARA/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/Sanguinololu/Configuration_adv.h View File

604
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
604
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
605
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
605
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
606
                                         // Note: Extra time may be added to mitigate controller latency.
606
                                         // Note: Extra time may be added to mitigate controller latency.
607
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
608
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
607
 #endif
609
 #endif
608
 
610
 
609
 // @section extruder
611
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/TinyBoy2/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/Velleman/K8200/Configuration_adv.h View File

628
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
628
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
629
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
629
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
630
                                         // Note: Extra time may be added to mitigate controller latency.
630
                                         // Note: Extra time may be added to mitigate controller latency.
631
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
632
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
631
 #endif
633
 #endif
632
 
634
 
633
 // @section extruder
635
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/Velleman/K8400/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h View File

617
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
617
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
618
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
618
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
619
                                         // Note: Extra time may be added to mitigate controller latency.
619
                                         // Note: Extra time may be added to mitigate controller latency.
620
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
621
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
620
 #endif
622
 #endif
621
 
623
 
622
 // @section extruder
624
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h View File

617
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
617
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
618
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
618
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
619
                                         // Note: Extra time may be added to mitigate controller latency.
619
                                         // Note: Extra time may be added to mitigate controller latency.
620
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
621
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
620
 #endif
622
 #endif
621
 
623
 
622
 // @section extruder
624
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/delta/generic/Configuration_adv.h View File

617
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
617
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
618
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
618
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
619
                                         // Note: Extra time may be added to mitigate controller latency.
619
                                         // Note: Extra time may be added to mitigate controller latency.
620
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
621
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
620
 #endif
622
 #endif
621
 
623
 
622
 // @section extruder
624
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/delta/kossel_mini/Configuration_adv.h View File

617
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
617
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
618
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
618
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
619
                                         // Note: Extra time may be added to mitigate controller latency.
619
                                         // Note: Extra time may be added to mitigate controller latency.
620
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
621
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
620
 #endif
622
 #endif
621
 
623
 
622
 // @section extruder
624
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/delta/kossel_pro/Configuration_adv.h View File

622
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
622
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
623
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
623
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
624
                                         // Note: Extra time may be added to mitigate controller latency.
624
                                         // Note: Extra time may be added to mitigate controller latency.
625
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
626
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
625
 #endif
627
 #endif
626
 
628
 
627
 // @section extruder
629
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/delta/kossel_xl/Configuration_adv.h View File

617
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
617
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
618
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
618
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
619
                                         // Note: Extra time may be added to mitigate controller latency.
619
                                         // Note: Extra time may be added to mitigate controller latency.
620
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
621
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
620
 #endif
622
 #endif
621
 
623
 
622
 // @section extruder
624
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/gCreate/gMax1.5+/Configuration_adv.h View File

615
   #define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   #define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/makibox/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/tvrrug/Round2/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 2
- 0
Marlin/src/config/examples/wt150/Configuration_adv.h View File

615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
615
   //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
616
   #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
617
                                         // Note: Extra time may be added to mitigate controller latency.
617
                                         // Note: Extra time may be added to mitigate controller latency.
618
+  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
619
+  //#define BABYSTEP_ZPROBE_GFX_REVERSE // Reverses the direction of the CW/CCW indicators
618
 #endif
620
 #endif
619
 
621
 
620
 // @section extruder
622
 // @section extruder

+ 4
- 0
Marlin/src/inc/SanityCheck.h View File

305
     #error "MESH_BED_LEVELING and BABYSTEP_ZPROBE_OFFSET is not a valid combination"
305
     #error "MESH_BED_LEVELING and BABYSTEP_ZPROBE_OFFSET is not a valid combination"
306
   #elif ENABLED(BABYSTEP_ZPROBE_OFFSET) && !HAS_BED_PROBE
306
   #elif ENABLED(BABYSTEP_ZPROBE_OFFSET) && !HAS_BED_PROBE
307
     #error "BABYSTEP_ZPROBE_OFFSET requires a probe."
307
     #error "BABYSTEP_ZPROBE_OFFSET requires a probe."
308
+  #elif ENABLED(BABYSTEP_ZPROBE_GFX_OVERLAY) && !ENABLED(DOGLCD)
309
+    #error "BABYSTEP_ZPROBE_GFX_OVERLAY requires a DOGLCD."
310
+  #elif ENABLED(BABYSTEP_ZPROBE_GFX_OVERLAY) && !ENABLED(BABYSTEP_ZPROBE_OFFSET)
311
+    #error "BABYSTEP_ZPROBE_GFX_OVERLAY requires a BABYSTEP_ZPROBE_OFFSET."
308
   #endif
312
   #endif
309
 #endif
313
 #endif
310
 
314
 

+ 93
- 0
Marlin/src/lcd/dogm/dogm_bitmaps.h View File

419
       0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
419
       0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
420
     };
420
     };
421
   #endif // Extruders
421
   #endif // Extruders
422
+
423
+  #if ENABLED(BABYSTEP_ZPROBE_GFX_OVERLAY)
424
+    const unsigned char cw_bmp[] PROGMEM = { //AVR-GCC, WinAVR
425
+      0x07,0xf8,0x00, // 000001111111100000000000
426
+      0x0c,0x0c,0x00, // 000011000000110000000000
427
+      0x10,0x02,0x00, // 000100000000001000000000
428
+      0x20,0x01,0x00, // 001000000000000100000000
429
+      0x60,0x01,0x80, // 011000000000000100000000
430
+      0x40,0x00,0x80, // 010000000000000010000000
431
+      0x40,0x03,0xe0, // 010000000000001111100000
432
+      0x40,0x01,0xc0, // 010000000000000111000000
433
+      0x40,0x00,0x80, // 010000000000000010000000
434
+      0x40,0x00,0x00, // 010000000000000000000000
435
+      0x40,0x00,0x00, // 010000000000000000000000
436
+      0x60,0x00,0x00, // 011000000000000000000000
437
+      0x20,0x00,0x00, // 001000000000000000000000
438
+      0x10,0x00,0x00, // 000100000000000000000000
439
+      0x0c,0x0c,0x00, // 000011000000110000000000
440
+      0x07,0xf8,0x00  // 000001111111100000000000
441
+    };
442
+
443
+    const unsigned char ccw_bmp[] PROGMEM = { //AVR-GCC, WinAVR
444
+      0x01,0xfe,0x00, // 000000011111111000000000
445
+      0x03,0x03,0x00, // 000000110000001100000000
446
+      0x04,0x00,0x80, // 000001000000000010000000
447
+      0x08,0x00,0x40, // 000010000000000001000000
448
+      0x18,0x00,0x60, // 000110000000000001100000
449
+      0x10,0x00,0x20, // 000100000000000000100000
450
+      0x7c,0x00,0x20, // 011111000000000000100000
451
+      0x38,0x00,0x20, // 001110000000000000100000
452
+      0x10,0x00,0x20, // 000100000000000000100000
453
+      0x00,0x00,0x20, // 000000000000000000100000
454
+      0x00,0x00,0x20, // 000000000000000000100000
455
+      0x00,0x00,0x60, // 000000000000000001100000
456
+      0x00,0x00,0x40, // 000000000000000001000000
457
+      0x00,0x00,0x80, // 000000000000000010000000
458
+      0x03,0x03,0x00, // 000000110000001100000000
459
+      0x01,0xfe,0x00  // 000000011111111000000000
460
+    };
461
+
462
+
463
+    const unsigned char up_arrow_bmp[] PROGMEM = { //AVR-GCC, WinAVR
464
+      0x06,0x00, // 000001100000
465
+      0x0F,0x00, // 000011110000
466
+      0x1F,0x80, // 000111111000
467
+      0x3F,0xC0, // 001111111100
468
+      0x06,0x00, // 000001100000
469
+      0x06,0x00, // 000001100000
470
+      0x06,0x00, // 000001100000
471
+      0x06,0x00, // 000001100000
472
+      0x06,0x00, // 000001100000
473
+      0x06,0x00, // 000001100000
474
+      0x06,0x00, // 000001100000
475
+      0x06,0x00, // 000001100000
476
+      0x06,0x00  // 000001100000
477
+    };
478
+
479
+    const unsigned char down_arrow_bmp[] PROGMEM = { //AVR-GCC, WinAVR
480
+      0x06,0x00, // 000001100000
481
+      0x06,0x00, // 000001100000
482
+      0x06,0x00, // 000001100000
483
+      0x06,0x00, // 000001100000
484
+      0x06,0x00, // 000001100000
485
+      0x06,0x00, // 000001100000
486
+      0x06,0x00, // 000001100000
487
+      0x06,0x00, // 000001100000
488
+      0x06,0x00, // 000001100000
489
+      0x3F,0xC0, // 001111111100
490
+      0x1F,0x80, // 000111111000
491
+      0x0F,0x00, // 000011110000
492
+      0x06,0x00  // 000001100000
493
+    };
494
+
495
+    const unsigned char offset_bedline_bmp[] PROGMEM = { //AVR-GCC, WinAVR
496
+      0xFF,0xFF,0xFF // 111111111111111111111111
497
+    };
498
+
499
+    const unsigned char nozzle_bmp[] PROGMEM = { //AVR-GCC, WinAVR
500
+      0x7F,0x80, // 0111111110000000
501
+      0xFF,0xC0, // 1111111111000000
502
+      0xFF,0xC0, // 1111111111000000
503
+      0xFF,0xC0, // 1111111111000000
504
+      0x7F,0x80, // 0111111110000000
505
+      0x7F,0x80, // 0111111110000000
506
+      0xFF,0xC0, // 1111111111000000
507
+      0xFF,0xC0, // 1111111111000000
508
+      0xFF,0xC0, // 1111111111000000
509
+      0x3F,0x00, // 0011111100000000
510
+      0x1E,0x00, // 0001111000000000
511
+      0x0C,0x00  // 0000110000000000
512
+    };
513
+  #endif // BABYSTEP_ZPROBE_GFX_OVERLAY
514
+
422
 #endif // HAS_TEMP_BED
515
 #endif // HAS_TEMP_BED

+ 45
- 1
Marlin/src/lcd/ultralcd.cpp View File

1025
 
1025
 
1026
     #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
1026
     #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
1027
 
1027
 
1028
+      #if ENABLED(BABYSTEP_ZPROBE_GFX_OVERLAY)
1029
+
1030
+        void _lcd_babystep_zoffset_overlay(const float in_zoffset) {
1031
+          // Determine whether the user is raising or lowering the nozzle.
1032
+          int8_t dir = 0;
1033
+          static float old_zprobe_zoffset = 0;
1034
+          if (in_zoffset != old_zprobe_zoffset) {
1035
+            dir = (in_zoffset > old_zprobe_zoffset) ? 1 : -1;
1036
+            old_zprobe_zoffset = in_zoffset;
1037
+          }
1038
+
1039
+          #if ENABLED(BABYSTEP_ZPROBE_GFX_REVERSE)
1040
+            const unsigned char *rot_up   = ccw_bmp;
1041
+            const unsigned char *rot_down = cw_bmp;
1042
+          #else
1043
+            const unsigned char *rot_up   = cw_bmp;
1044
+            const unsigned char *rot_down = ccw_bmp;
1045
+          #endif
1046
+
1047
+          #if ENABLED(USE_BIG_EDIT_FONT)
1048
+            const int left = 0, right = 45, nozzle = 95;
1049
+          #else
1050
+            const int left = 5, right = 90, nozzle = 60;
1051
+          #endif
1052
+
1053
+          // Draw a representation of the nozzle
1054
+          if (PAGE_CONTAINS(3, 16))  u8g.drawBitmapP(nozzle + 6, 4 - dir, 2, 12, nozzle_bmp);
1055
+          if (PAGE_CONTAINS(20, 20)) u8g.drawBitmapP(nozzle + 0, 20, 3, 1, offset_bedline_bmp);
1056
+
1057
+          // Draw cw/ccw indicator and up/down arrows.
1058
+          if (PAGE_CONTAINS(47,62)) {
1059
+            u8g.drawBitmapP(left  + 0, 47, 3, 16, rot_down);
1060
+            u8g.drawBitmapP(right + 0, 47, 3, 16, rot_up);
1061
+            u8g.drawBitmapP(right + 20, 48 - dir, 2, 13, up_arrow_bmp);
1062
+            u8g.drawBitmapP(left  + 20, 49 - dir, 2, 13, down_arrow_bmp);
1063
+          }
1064
+        }
1065
+
1066
+      #endif // BABYSTEP_ZPROBE_GFX_OVERLAY
1067
+
1028
       void lcd_babystep_zoffset() {
1068
       void lcd_babystep_zoffset() {
1029
         if (lcd_clicked) { return lcd_goto_previous_menu_no_defer(); }
1069
         if (lcd_clicked) { return lcd_goto_previous_menu_no_defer(); }
1030
         defer_return_to_status = true;
1070
         defer_return_to_status = true;
1044
             lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
1084
             lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
1045
           }
1085
           }
1046
         }
1086
         }
1047
-        if (lcdDrawUpdate)
1087
+        if (lcdDrawUpdate) {
1048
           lcd_implementation_drawedit(PSTR(MSG_ZPROBE_ZOFFSET), ftostr43sign(zprobe_zoffset));
1088
           lcd_implementation_drawedit(PSTR(MSG_ZPROBE_ZOFFSET), ftostr43sign(zprobe_zoffset));
1089
+          #if ENABLED(BABYSTEP_ZPROBE_GFX_OVERLAY)
1090
+            _lcd_babystep_zoffset_overlay(zprobe_zoffset);
1091
+          #endif
1092
+        }
1049
       }
1093
       }
1050
 
1094
 
1051
     #else // !BABYSTEP_ZPROBE_OFFSET
1095
     #else // !BABYSTEP_ZPROBE_OFFSET

Loading…
Cancel
Save