ref: ae8193ccf9c507c8b903704ed4149e23e9da25c1
parent: 655c2961166d94e374c6a83d69da0a0f3bea835c
	author: cancel <cancel@cancel.fm>
	date: Wed Dec  5 11:31:06 EST 2018
	
Cleanup
--- a/tui_main.c
+++ b/tui_main.c
@@ -377,8 +377,24 @@
*needs_remarking = true;
}
+static Usz adjust_humanized_snapped(Usz ruler, Usz in, Isz delta_rulers) {+ // slightly more confusing because desired grid sizes are +1 (e.g. ruler of
+ // length 8 wants to snap to 25 and 33, not 24 and 32). also this math is
+ // sloppy.
+ Isz n;
+  if (delta_rulers > 0) {+ n = ((Isz)in - 1) / (Isz)ruler + delta_rulers;
+  } else {+ n = ((Isz)in - 2) / (Isz)ruler + delta_rulers + 1;
+ }
+ if (n < 0)
+ n = 0;
+ return ruler * (Usz)n + 1;
+}
+
// Resizes by number of ruler divisions, and snaps size to closest division in
-// a way a human would expect.
+// a way a human would expect. Adds +1 to the output, so grid resulting size is
+// 1 unit longer than the actual ruler length.
void tui_resize_grid_snap_ruler(Field* field, Markmap_reusable* markmap,
Usz ruler_y, Usz ruler_x, Isz delta_h,
Isz delta_w, Usz tick_num, Field* scratch_field,
@@ -394,26 +410,10 @@
return;
Usz new_field_h = field_h;
Usz new_field_w = field_w;
-  if (delta_h != 0) {- Isz n_h;
-    if (delta_h > 0) {- n_h = ((Isz)field_h - 1) / (Isz)ruler_y + delta_h;
-    } else {- n_h = ((Isz)field_h - 2) / (Isz)ruler_y + delta_h + 1;
- }
- if (n_h < 0) n_h = 0;
- new_field_h = ruler_y * (Usz)n_h + 1;
- }
-  if (delta_w != 0) {- Isz n_w;
-    if (delta_w > 0) {- n_w = ((Isz)field_w - 1) / (Isz)ruler_x + delta_w;
-    } else {- n_w = ((Isz)field_w - 2) / (Isz)ruler_x + delta_w + 1;
- }
- if (n_w < 0) n_w = 0;
- new_field_w = ruler_x * (Usz)n_w + 1;
- }
+ if (delta_h != 0)
+ new_field_h = adjust_humanized_snapped(ruler_y, field_h, delta_h);
+ if (delta_w != 0)
+ new_field_w = adjust_humanized_snapped(ruler_x, field_w, delta_w);
if (new_field_h == field_h && new_field_w == field_w)
return;
tui_resize_grid(field, markmap, new_field_h, new_field_w, tick_num,
--
⑨