ref: c0bdd492ba76692dc5f664537abe52db5a9e4930
parent: fb4740e4300b8ac5ce02d94e16aa9dd18d00e461
author: cancel <cancel@cancel.fm>
date: Tue Dec 11 21:22:52 EST 2018
Change to use bitfield for bool flags in app state
--- a/tui_main.c
+++ b/tui_main.c
@@ -554,8 +554,7 @@
void tui_resize_grid(Field* field, Markmap_reusable* markmap, Usz new_height,
Usz new_width, Usz tick_num, Field* scratch_field,
- Undo_history* undo_hist, Tui_cursor* tui_cursor,
- bool* needs_remarking) {
+ Undo_history* undo_hist, Tui_cursor* tui_cursor) {
assert(new_height > 0 && new_width > 0);
undo_history_push(undo_hist, field, tick_num);
field_copy(field, scratch_field);
@@ -568,7 +567,6 @@
scratch_field->height, scratch_field->width);
tui_cursor_confine(tui_cursor, new_height, new_width);
markmap_reusable_ensure_size(markmap, new_height, new_width);
- *needs_remarking = true;
}
static Usz adjust_rulers_humanized(Usz ruler, Usz in, Isz delta_rulers) {
@@ -591,11 +589,11 @@
// Resizes by number of ruler divisions, and snaps size to closest division in
// 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,
+bool 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,
- Undo_history* undo_hist, Tui_cursor* tui_cursor,
- bool* needs_remarking) {
+ Undo_history* undo_hist,
+ Tui_cursor* tui_cursor) {
assert(ruler_y > 0);
assert(ruler_x > 0);
Usz field_h = field->height;
@@ -603,7 +601,7 @@
assert(field_h > 0);
assert(field_w > 0);
if (ruler_y == 0 || ruler_x == 0 || field_h == 0 || field_w == 0)
- return;
+ return false;
Usz new_field_h = field_h;
Usz new_field_w = field_w;
if (delta_h != 0)
@@ -611,9 +609,10 @@
if (delta_w != 0)
new_field_w = adjust_rulers_humanized(ruler_x, field_w, delta_w);
if (new_field_h == field_h && new_field_w == field_w)
- return;
+ return false;
tui_resize_grid(field, markmap, new_field_h, new_field_w, tick_num,
- scratch_field, undo_hist, tui_cursor, needs_remarking);
+ scratch_field, undo_hist, tui_cursor);
+ return true;
}
typedef enum {
@@ -668,12 +667,12 @@
int win_w;
int grid_scroll_y; // not sure if i like this being int
int grid_scroll_x;
- bool needs_remarking;
- bool is_draw_dirty;
- bool is_playing;
- bool draw_event_list;
- bool is_mouse_down;
- bool is_mouse_dragging;
+ bool needs_remarking : 1;
+ bool is_draw_dirty : 1;
+ bool is_playing : 1;
+ bool draw_event_list : 1;
+ bool is_mouse_down : 1;
+ bool is_mouse_dragging : 1;
} App_state;
void app_init(App_state* a) {
@@ -1222,8 +1221,8 @@
void app_resize_grid_relative(App_state* a, Isz delta_y, Isz delta_x) {
tui_resize_grid_snap_ruler(&a->field, &a->markmap_r, a->ruler_spacing_y,
a->ruler_spacing_x, delta_y, delta_x, a->tick_num,
- &a->scratch_field, &a->undo_hist, &a->tui_cursor,
- &a->needs_remarking);
+ &a->scratch_field, &a->undo_hist, &a->tui_cursor);
+ a->needs_remarking = true; // could check if we actually resized
a->is_draw_dirty = true;
app_make_cursor_visible(a);
}