23
23
/* *
24
24
* Bed Level Tools for Pro UI
25
25
* Extended by: Miguel A. Risco-Castillo (MRISCOC)
26
- * Version: 2.1 .0
27
- * Date: 2022/08/27
26
+ * Version: 3.2 .0
27
+ * Date: 2023/05/03
28
28
*
29
29
* Based on the original work of: Henri-J-Norden
30
30
* https://github.com/Jyers/Marlin/pull/126
65
65
66
66
BedLevelToolsClass bedLevelTools;
67
67
68
- #if ENABLED(USE_UBL_VIEWER )
68
+ #if ENABLED(USE_GRID_MESHVIEWER )
69
69
bool BedLevelToolsClass::viewer_asymmetric_range = false ;
70
70
bool BedLevelToolsClass::viewer_print_value = false ;
71
71
#endif
@@ -170,15 +170,20 @@ void BedLevelToolsClass::MoveToZ() {
170
170
bedLevelTools.manual_move (bedLevelTools.mesh_x , bedLevelTools.mesh_y , true );
171
171
}
172
172
void BedLevelToolsClass::ProbeXY () {
173
- const uint16_t Clear = Z_CLEARANCE_DEPLOY_PROBE;
174
- sprintf_P (cmd, PSTR (" G28O \n G0Z %i\n G30X%sY%s" ),
175
- Clear ,
173
+ const uint16_t zclear = Z_CLEARANCE_DEPLOY_PROBE;
174
+ sprintf_P (cmd, PSTR (" G0Z %i\n G30X%sY%s" ),
175
+ zclear ,
176
176
dtostrf (bedlevel.get_mesh_x (bedLevelTools.mesh_x ), 1 , 2 , str_1),
177
177
dtostrf (bedlevel.get_mesh_y (bedLevelTools.mesh_y ), 1 , 2 , str_2)
178
178
);
179
179
gcode.process_subcommands_now (cmd);
180
180
}
181
181
182
+ void BedLevelToolsClass::mesh_reset () {
183
+ ZERO (bedlevel.z_values );
184
+ TERN_ (AUTO_BED_LEVELING_BILINEAR, bedlevel.refresh_bed_level ());
185
+ }
186
+
182
187
// Accessors
183
188
float BedLevelToolsClass::get_max_value () {
184
189
float max = __FLT_MAX__ * -1 ;
@@ -207,9 +212,11 @@ bool BedLevelToolsClass::meshvalidate() {
207
212
return true ;
208
213
}
209
214
210
- #if ENABLED(USE_UBL_VIEWER)
215
+ #if ENABLED(USE_GRID_MESHVIEWER)
216
+
217
+ constexpr uint8_t meshfont = TERN(TJC_DISPLAY, font8x16, font6x12);
211
218
212
- void BedLevelToolsClass::Draw_Bed_Mesh (int16_t selected /* = -1*/ , uint8_t gridline_width /* = 1*/ , uint16_t padding_x /* = 8*/ , uint16_t padding_y_top /* = 40 + 53 - 7*/ ) {
219
+ void BedLevelToolsClass::Draw_Bed_Mesh (int16_t selected/* =-1*/ , uint8_t gridline_width/* =1*/ , uint16_t padding_x/* =8*/ , uint16_t padding_y_top/* =( 40 + 53 - 7) */ ) {
213
220
drawing_mesh = true ;
214
221
const uint16_t total_width_px = DWIN_WIDTH - padding_x - padding_x;
215
222
const uint16_t cell_width_px = total_width_px / (GRID_MAX_POINTS_X);
@@ -227,7 +234,6 @@ bool BedLevelToolsClass::meshvalidate() {
227
234
}
228
235
229
236
// Draw value square grid
230
- char buf[8 ];
231
237
GRID_LOOP (x, y) {
232
238
const auto start_x_px = padding_x + x * cell_width_px;
233
239
const auto end_x_px = start_x_px + cell_width_px - 1 - gridline_width;
@@ -246,20 +252,22 @@ bool BedLevelToolsClass::meshvalidate() {
246
252
LCD_SERIAL.flushTX ();
247
253
248
254
// Draw value text on
255
+ char buf[8 ];
256
+ const uint8_t fs = DWINUI::fontWidth (meshfont);
249
257
if (viewer_print_value) {
250
- int8_t offset_x, offset_y = cell_height_px / 2 - 6 ;
258
+ int8_t offset_x, offset_y = cell_height_px / 2 - fs ;
251
259
if (isnan (bedlevel.z_values [x][y])) { // undefined
252
- dwinDrawString (false , font6x12 , Color_White, Color_Bg_Blue, start_x_px + cell_width_px / 2 - 5 , start_y_px + offset_y, F (" X" ));
260
+ dwinDrawString (false , meshfont , Color_White, Color_Bg_Blue, start_x_px + cell_width_px / 2 - 5 , start_y_px + offset_y, F (" X" ));
253
261
}
254
262
else { // has value
255
- if (GRID_MAX_POINTS_X < 10 )
263
+ if (GRID_MAX_POINTS_X < ( ENABLED (TJC_DISPLAY) ? 8 : 10 ) )
256
264
sprintf_P (buf, PSTR (" %s" ), dtostrf (abs (bedlevel.z_values [x][y]), 1 , 2 , str_1));
257
265
else
258
266
sprintf_P (buf, PSTR (" %02i" ), (uint16_t )(abs (bedlevel.z_values [x][y] - (int16_t )bedlevel.z_values [x][y]) * 100 ));
259
- offset_x = cell_width_px / 2 - 3 * (strlen (buf)) - 2 ;
260
- if (!(GRID_MAX_POINTS_X < 10 ))
261
- dwinDrawString (false , font6x12 , Color_White, Color_Bg_Blue, start_x_px - 2 + offset_x, start_y_px + offset_y /* + square / 2 - 6 */ , F (" ." ));
262
- dwinDrawString (false , font6x12 , Color_White, Color_Bg_Blue, start_x_px + 1 + offset_x, start_y_px + offset_y /* + square / 2 - 6 */ , buf);
267
+ offset_x = cell_width_px / 2 - (fs/ 2 ) * (strlen (buf)) - 2 ;
268
+ if (!(GRID_MAX_POINTS_X < ( ENABLED (TJC_DISPLAY) ? 8 : 10 ) ))
269
+ dwinDrawString (false , meshfont , Color_White, Color_Bg_Blue, start_x_px - 2 + offset_x, start_y_px + offset_y, F (" ." ));
270
+ dwinDrawString (false , meshfont , Color_White, Color_Bg_Blue, start_x_px + 1 + offset_x, start_y_px + offset_y, buf);
263
271
}
264
272
safe_delay (10 );
265
273
LCD_SERIAL.flushTX ();
@@ -286,6 +294,6 @@ bool BedLevelToolsClass::meshvalidate() {
286
294
drawing_mesh = false ;
287
295
}
288
296
289
- #endif // USE_UBL_VIEWER
297
+ #endif // USE_GRID_MESHVIEWER
290
298
291
299
#endif // DWIN_LCD_PROUI && HAS_LEVELING
0 commit comments