Browse Source

Cleanup naming

master
cancel 6 years ago
parent
commit
142358974c
  1. 196
      tui_main.c

196
tui_main.c

@ -42,13 +42,6 @@ static void usage() {
// clang-format on // clang-format on
} }
typedef enum {
Tui_input_mode_normal = 0,
Tui_input_mode_append = 1,
Tui_input_mode_piano = 2,
Tui_input_mode_selresize = 3,
} Tui_input_mode;
typedef enum { typedef enum {
C_natural, C_natural,
C_black, C_black,
@ -186,21 +179,28 @@ static int term_attrs_of_cell(Glyph g, Mark m) {
return attr; return attr;
} }
typedef enum {
Ged_input_mode_normal = 0,
Ged_input_mode_append = 1,
Ged_input_mode_piano = 2,
Ged_input_mode_selresize = 3,
} Ged_input_mode;
typedef struct { typedef struct {
Usz y; Usz y;
Usz x; Usz x;
Usz h; Usz h;
Usz w; Usz w;
} Tui_cursor; } Ged_cursor;
void tui_cursor_init(Tui_cursor* tc) { void ged_cursor_init(Ged_cursor* tc) {
tc->y = 0; tc->y = 0;
tc->x = 0; tc->x = 0;
tc->h = 1; tc->h = 1;
tc->w = 1; tc->w = 1;
} }
void tui_cursor_move_relative(Tui_cursor* tc, Usz field_h, Usz field_w, void ged_cursor_move_relative(Ged_cursor* tc, Usz field_h, Usz field_w,
Isz delta_y, Isz delta_x) { Isz delta_y, Isz delta_x) {
Isz y0 = (Isz)tc->y + delta_y; Isz y0 = (Isz)tc->y + delta_y;
Isz x0 = (Isz)tc->x + delta_x; Isz x0 = (Isz)tc->x + delta_x;
@ -216,11 +216,11 @@ void tui_cursor_move_relative(Tui_cursor* tc, Usz field_h, Usz field_w,
tc->x = (Usz)x0; tc->x = (Usz)x0;
} }
void tdraw_grid_cursor(WINDOW* win, int draw_y, int draw_x, int draw_h, void draw_grid_cursor(WINDOW* win, int draw_y, int draw_x, int draw_h,
int draw_w, Glyph const* gbuffer, Usz field_h, int draw_w, Glyph const* gbuffer, Usz field_h,
Usz field_w, int scroll_y, int scroll_x, Usz cursor_y, Usz field_w, int scroll_y, int scroll_x, Usz cursor_y,
Usz cursor_x, Usz cursor_h, Usz cursor_w, Usz cursor_x, Usz cursor_h, Usz cursor_w,
Tui_input_mode input_mode, bool is_playing) { Ged_input_mode input_mode, bool is_playing) {
(void)input_mode; (void)input_mode;
if (cursor_y >= field_h || cursor_x >= field_w) if (cursor_y >= field_h || cursor_x >= field_w)
return; return;
@ -421,10 +421,10 @@ void undo_history_apply(Undo_history* hist, Field* out_field,
Usz undo_history_count(Undo_history* hist) { return hist->count; } Usz undo_history_count(Undo_history* hist) { return hist->count; }
void tdraw_hud(WINDOW* win, int win_y, int win_x, int height, int width, void draw_hud(WINDOW* win, int win_y, int win_x, int height, int width,
const char* filename, Usz field_h, Usz field_w, const char* filename, Usz field_h, Usz field_w,
Usz ruler_spacing_y, Usz ruler_spacing_x, Usz tick_num, Usz bpm, Usz ruler_spacing_y, Usz ruler_spacing_x, Usz tick_num, Usz bpm,
Tui_cursor* const tui_cursor, Tui_input_mode input_mode) { Ged_cursor* const ged_cursor, Ged_input_mode input_mode) {
(void)height; (void)height;
(void)width; (void)width;
wmove(win, win_y, win_x); wmove(win, win_y, win_x);
@ -432,22 +432,22 @@ void tdraw_hud(WINDOW* win, int win_y, int win_x, int height, int width,
(int)ruler_spacing_x, (int)ruler_spacing_y, (int)tick_num, (int)bpm); (int)ruler_spacing_x, (int)ruler_spacing_y, (int)tick_num, (int)bpm);
wclrtoeol(win); wclrtoeol(win);
wmove(win, win_y + 1, win_x); wmove(win, win_y + 1, win_x);
wprintw(win, "%d,%d\t%d:%d\tcell\t", (int)tui_cursor->x, (int)tui_cursor->y, wprintw(win, "%d,%d\t%d:%d\tcell\t", (int)ged_cursor->x, (int)ged_cursor->y,
(int)tui_cursor->w, (int)tui_cursor->h); (int)ged_cursor->w, (int)ged_cursor->h);
switch (input_mode) { switch (input_mode) {
case Tui_input_mode_normal: case Ged_input_mode_normal:
wattrset(win, A_normal); wattrset(win, A_normal);
wprintw(win, "insert"); wprintw(win, "insert");
break; break;
case Tui_input_mode_append: case Ged_input_mode_append:
wattrset(win, A_bold); wattrset(win, A_bold);
wprintw(win, "append"); wprintw(win, "append");
break; break;
case Tui_input_mode_piano: case Ged_input_mode_piano:
wattrset(win, A_reverse); wattrset(win, A_reverse);
wprintw(win, "trigger"); wprintw(win, "trigger");
break; break;
case Tui_input_mode_selresize: case Ged_input_mode_selresize:
wattrset(win, A_bold); wattrset(win, A_bold);
wprintw(win, "select"); wprintw(win, "select");
break; break;
@ -457,7 +457,7 @@ void tdraw_hud(WINDOW* win, int win_y, int win_x, int height, int width,
wclrtoeol(win); wclrtoeol(win);
} }
void tdraw_glyphs_grid(WINDOW* win, int draw_y, int draw_x, int draw_h, void draw_glyphs_grid(WINDOW* win, int draw_y, int draw_x, int draw_h,
int draw_w, Glyph const* restrict gbuffer, int draw_w, Glyph const* restrict gbuffer,
Mark const* restrict mbuffer, Usz field_h, Usz field_w, Mark const* restrict mbuffer, Usz field_h, Usz field_w,
Usz offset_y, Usz offset_x, Usz ruler_spacing_y, Usz offset_y, Usz offset_x, Usz ruler_spacing_y,
@ -501,7 +501,7 @@ void tdraw_glyphs_grid(WINDOW* win, int draw_y, int draw_x, int draw_h,
} }
} }
void tdraw_glyphs_grid_scrolled(WINDOW* win, int draw_y, int draw_x, int draw_h, void draw_glyphs_grid_scrolled(WINDOW* win, int draw_y, int draw_x, int draw_h,
int draw_w, Glyph const* restrict gbuffer, int draw_w, Glyph const* restrict gbuffer,
Mark const* restrict mbuffer, Usz field_h, Mark const* restrict mbuffer, Usz field_h,
Usz field_w, int scroll_y, int scroll_x, Usz field_w, int scroll_y, int scroll_x,
@ -514,12 +514,12 @@ void tdraw_glyphs_grid_scrolled(WINDOW* win, int draw_y, int draw_x, int draw_h,
draw_x += -scroll_x; draw_x += -scroll_x;
scroll_x = 0; scroll_x = 0;
} }
tdraw_glyphs_grid(win, draw_y, draw_x, draw_h, draw_w, gbuffer, mbuffer, draw_glyphs_grid(win, draw_y, draw_x, draw_h, draw_w, gbuffer, mbuffer,
field_h, field_w, (Usz)scroll_y, (Usz)scroll_x, field_h, field_w, (Usz)scroll_y, (Usz)scroll_x,
ruler_spacing_y, ruler_spacing_x); ruler_spacing_y, ruler_spacing_x);
} }
void tui_cursor_confine(Tui_cursor* tc, Usz height, Usz width) { void ged_cursor_confine(Ged_cursor* tc, Usz height, Usz width) {
if (height == 0 || width == 0) if (height == 0 || width == 0)
return; return;
if (tc->y >= height) if (tc->y >= height)
@ -528,7 +528,7 @@ void tui_cursor_confine(Tui_cursor* tc, Usz height, Usz width) {
tc->x = width - 1; tc->x = width - 1;
} }
void tdraw_oevent_list(WINDOW* win, Oevent_list const* oevent_list) { void draw_oevent_list(WINDOW* win, Oevent_list const* oevent_list) {
wmove(win, 0, 0); wmove(win, 0, 0);
int win_h = getmaxy(win); int win_h = getmaxy(win);
wprintw(win, "Count: %d", (int)oevent_list->count); wprintw(win, "Count: %d", (int)oevent_list->count);
@ -552,9 +552,9 @@ void tdraw_oevent_list(WINDOW* win, Oevent_list const* oevent_list) {
} }
} }
void tui_resize_grid(Field* field, Markmap_reusable* markmap, Usz new_height, void ged_resize_grid(Field* field, Markmap_reusable* markmap, Usz new_height,
Usz new_width, Usz tick_num, Field* scratch_field, Usz new_width, Usz tick_num, Field* scratch_field,
Undo_history* undo_hist, Tui_cursor* tui_cursor) { Undo_history* undo_hist, Ged_cursor* ged_cursor) {
assert(new_height > 0 && new_width > 0); assert(new_height > 0 && new_width > 0);
undo_history_push(undo_hist, field, tick_num); undo_history_push(undo_hist, field, tick_num);
field_copy(field, scratch_field); field_copy(field, scratch_field);
@ -565,7 +565,7 @@ void tui_resize_grid(Field* field, Markmap_reusable* markmap, Usz new_height,
scratch_field->height, scratch_field->width, scratch_field->height, scratch_field->width,
field->height, field->width, 0, 0, 0, 0, field->height, field->width, 0, 0, 0, 0,
scratch_field->height, scratch_field->width); scratch_field->height, scratch_field->width);
tui_cursor_confine(tui_cursor, new_height, new_width); ged_cursor_confine(ged_cursor, new_height, new_width);
markmap_reusable_ensure_size(markmap, new_height, new_width); markmap_reusable_ensure_size(markmap, new_height, new_width);
} }
@ -589,11 +589,11 @@ static Usz adjust_rulers_humanized(Usz ruler, Usz in, Isz delta_rulers) {
// Resizes by number of ruler divisions, and snaps size to closest division in // 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 // a way a human would expect. Adds +1 to the output, so grid resulting size is
// 1 unit longer than the actual ruler length. // 1 unit longer than the actual ruler length.
bool tui_resize_grid_snap_ruler(Field* field, Markmap_reusable* markmap, bool ged_resize_grid_snap_ruler(Field* field, Markmap_reusable* markmap,
Usz ruler_y, Usz ruler_x, Isz delta_h, Usz ruler_y, Usz ruler_x, Isz delta_h,
Isz delta_w, Usz tick_num, Field* scratch_field, Isz delta_w, Usz tick_num, Field* scratch_field,
Undo_history* undo_hist, Undo_history* undo_hist,
Tui_cursor* tui_cursor) { Ged_cursor* ged_cursor) {
assert(ruler_y > 0); assert(ruler_y > 0);
assert(ruler_x > 0); assert(ruler_x > 0);
Usz field_h = field->height; Usz field_h = field->height;
@ -610,8 +610,8 @@ bool tui_resize_grid_snap_ruler(Field* field, Markmap_reusable* markmap,
new_field_w = adjust_rulers_humanized(ruler_x, field_w, delta_w); new_field_w = adjust_rulers_humanized(ruler_x, field_w, delta_w);
if (new_field_h == field_h && new_field_w == field_w) if (new_field_h == field_h && new_field_w == field_w)
return false; return false;
tui_resize_grid(field, markmap, new_field_h, new_field_w, tick_num, ged_resize_grid(field, markmap, new_field_h, new_field_w, tick_num,
scratch_field, undo_hist, tui_cursor); scratch_field, undo_hist, ged_cursor);
return true; return true;
} }
@ -650,11 +650,11 @@ typedef struct {
Oevent_list oevent_list; Oevent_list oevent_list;
Oevent_list scratch_oevent_list; Oevent_list scratch_oevent_list;
Susnote_list susnote_list; Susnote_list susnote_list;
Tui_cursor tui_cursor; Ged_cursor ged_cursor;
Piano_bits piano_bits; Piano_bits piano_bits;
Usz tick_num; Usz tick_num;
Usz ruler_spacing_y, ruler_spacing_x; Usz ruler_spacing_y, ruler_spacing_x;
Tui_input_mode input_mode; Ged_input_mode input_mode;
Usz bpm; Usz bpm;
double accum_secs; double accum_secs;
double time_to_next_note_off; double time_to_next_note_off;
@ -684,7 +684,7 @@ void ged_init(Ged* a) {
markmap_reusable_init(&a->markmap_r); markmap_reusable_init(&a->markmap_r);
bank_init(&a->bank); bank_init(&a->bank);
undo_history_init(&a->undo_hist); undo_history_init(&a->undo_hist);
tui_cursor_init(&a->tui_cursor); ged_cursor_init(&a->ged_cursor);
oevent_list_init(&a->oevent_list); oevent_list_init(&a->oevent_list);
oevent_list_init(&a->scratch_oevent_list); oevent_list_init(&a->scratch_oevent_list);
susnote_list_init(&a->susnote_list); susnote_list_init(&a->susnote_list);
@ -692,7 +692,7 @@ void ged_init(Ged* a) {
a->tick_num = 0; a->tick_num = 0;
a->ruler_spacing_y = 8; a->ruler_spacing_y = 8;
a->ruler_spacing_x = 8; a->ruler_spacing_x = 8;
a->input_mode = Tui_input_mode_normal; a->input_mode = Ged_input_mode_normal;
a->bpm = 120; a->bpm = 120;
a->accum_secs = 0.0; a->accum_secs = 0.0;
a->time_to_next_note_off = 1.0; a->time_to_next_note_off = 1.0;
@ -965,9 +965,9 @@ void ged_make_cursor_visible(Ged* a) {
int cur_scr_y = a->grid_scroll_y; int cur_scr_y = a->grid_scroll_y;
int cur_scr_x = a->grid_scroll_x; int cur_scr_x = a->grid_scroll_x;
int new_scr_y = (int)scroll_offset_on_axis_for_cursor_pos( int new_scr_y = (int)scroll_offset_on_axis_for_cursor_pos(
grid_h, (Isz)a->field.height, (Isz)a->tui_cursor.y, 5, cur_scr_y); grid_h, (Isz)a->field.height, (Isz)a->ged_cursor.y, 5, cur_scr_y);
int new_scr_x = (int)scroll_offset_on_axis_for_cursor_pos( int new_scr_x = (int)scroll_offset_on_axis_for_cursor_pos(
a->win_w, (Isz)a->field.width, (Isz)a->tui_cursor.x, 5, cur_scr_x); a->win_w, (Isz)a->field.width, (Isz)a->ged_cursor.x, 5, cur_scr_x);
if (new_scr_y == cur_scr_y && new_scr_x == cur_scr_x) if (new_scr_y == cur_scr_y && new_scr_x == cur_scr_x)
return; return;
a->grid_scroll_y = new_scr_y; a->grid_scroll_y = new_scr_y;
@ -1016,24 +1016,24 @@ void ged_draw(Ged* a, WINDOW* win) {
} }
int win_h = a->win_h; int win_h = a->win_h;
int win_w = a->win_w; int win_w = a->win_w;
tdraw_glyphs_grid_scrolled(win, 0, 0, a->grid_h, win_w, a->field.buffer, draw_glyphs_grid_scrolled(win, 0, 0, a->grid_h, win_w, a->field.buffer,
a->markmap_r.buffer, a->field.height, a->markmap_r.buffer, a->field.height,
a->field.width, a->grid_scroll_y, a->grid_scroll_x, a->field.width, a->grid_scroll_y, a->grid_scroll_x,
a->ruler_spacing_y, a->ruler_spacing_x); a->ruler_spacing_y, a->ruler_spacing_x);
tdraw_grid_cursor(win, 0, 0, a->grid_h, win_w, a->field.buffer, draw_grid_cursor(win, 0, 0, a->grid_h, win_w, a->field.buffer,
a->field.height, a->field.width, a->grid_scroll_y, a->field.height, a->field.width, a->grid_scroll_y,
a->grid_scroll_x, a->tui_cursor.y, a->tui_cursor.x, a->grid_scroll_x, a->ged_cursor.y, a->ged_cursor.x,
a->tui_cursor.h, a->tui_cursor.w, a->input_mode, a->ged_cursor.h, a->ged_cursor.w, a->input_mode,
a->is_playing); a->is_playing);
if (a->is_hud_visible) { if (a->is_hud_visible) {
char const* filename = a->filename ? a->filename : ""; char const* filename = a->filename ? a->filename : "";
tdraw_hud(win, win_h - Hud_height, 0, Hud_height, win_w, filename, draw_hud(win, win_h - Hud_height, 0, Hud_height, win_w, filename,
a->field.height, a->field.width, a->ruler_spacing_y, a->field.height, a->field.width, a->ruler_spacing_y,
a->ruler_spacing_x, a->tick_num, a->bpm, &a->tui_cursor, a->ruler_spacing_x, a->tick_num, a->bpm, &a->ged_cursor,
a->input_mode); a->input_mode);
} }
if (a->draw_event_list) { if (a->draw_event_list) {
tdraw_oevent_list(win, &a->oevent_list); draw_oevent_list(win, &a->oevent_list);
} }
a->is_draw_dirty = false; a->is_draw_dirty = false;
wrefresh(win); wrefresh(win);
@ -1052,7 +1052,7 @@ void ged_adjust_bpm(Ged* a, Isz delta_bpm) {
} }
void ged_move_cursor_relative(Ged* a, Isz delta_y, Isz delta_x) { void ged_move_cursor_relative(Ged* a, Isz delta_y, Isz delta_x) {
tui_cursor_move_relative(&a->tui_cursor, a->field.height, a->field.width, ged_cursor_move_relative(&a->ged_cursor, a->field.height, a->field.width,
delta_y, delta_x); delta_y, delta_x);
ged_make_cursor_visible(a); ged_make_cursor_visible(a);
a->is_draw_dirty = true; a->is_draw_dirty = true;
@ -1070,13 +1070,13 @@ Usz guarded_selection_axis_resize(Usz x, int delta) {
} }
void ged_modify_selection_size(Ged* a, int delta_y, int delta_x) { void ged_modify_selection_size(Ged* a, int delta_y, int delta_x) {
Usz cur_h = a->tui_cursor.h; Usz cur_h = a->ged_cursor.h;
Usz cur_w = a->tui_cursor.w; Usz cur_w = a->ged_cursor.w;
Usz new_h = guarded_selection_axis_resize(cur_h, delta_y); Usz new_h = guarded_selection_axis_resize(cur_h, delta_y);
Usz new_w = guarded_selection_axis_resize(cur_w, delta_x); Usz new_w = guarded_selection_axis_resize(cur_w, delta_x);
if (cur_h != new_h || cur_w != new_w) { if (cur_h != new_h || cur_w != new_w) {
a->tui_cursor.h = new_h; a->ged_cursor.h = new_h;
a->tui_cursor.w = new_w; a->ged_cursor.w = new_w;
a->is_draw_dirty = true; a->is_draw_dirty = true;
} }
} }
@ -1090,9 +1090,9 @@ typedef enum {
void ged_dir_input(Ged* a, Ged_dir dir) { void ged_dir_input(Ged* a, Ged_dir dir) {
switch (a->input_mode) { switch (a->input_mode) {
case Tui_input_mode_normal: case Ged_input_mode_normal:
case Tui_input_mode_append: case Ged_input_mode_append:
case Tui_input_mode_piano: case Ged_input_mode_piano:
switch (dir) { switch (dir) {
case Ged_dir_up: case Ged_dir_up:
ged_move_cursor_relative(a, -1, 0); ged_move_cursor_relative(a, -1, 0);
@ -1108,7 +1108,7 @@ void ged_dir_input(Ged* a, Ged_dir dir) {
break; break;
} }
break; break;
case Tui_input_mode_selresize: case Ged_input_mode_selresize:
switch (dir) { switch (dir) {
case Ged_dir_up: case Ged_dir_up:
ged_modify_selection_size(a, -1, 0); ged_modify_selection_size(a, -1, 0);
@ -1172,17 +1172,17 @@ void ged_mouse_event(Ged* a, Usz vis_y, Usz vis_x, mmask_t mouse_bstate) {
fflush(stdout); fflush(stdout);
wclear(stdscr); wclear(stdscr);
a->is_mouse_down = true; a->is_mouse_down = true;
a->tui_cursor.y = y; a->ged_cursor.y = y;
a->tui_cursor.x = x; a->ged_cursor.x = x;
a->tui_cursor.h = 1; a->ged_cursor.h = 1;
a->tui_cursor.w = 1; a->ged_cursor.w = 1;
a->is_draw_dirty = true; a->is_draw_dirty = true;
} else { } else {
if (!a->is_mouse_dragging && if (!a->is_mouse_dragging &&
(y != a->tui_cursor.y || x != a->tui_cursor.x)) { (y != a->ged_cursor.y || x != a->ged_cursor.x)) {
a->is_mouse_dragging = true; a->is_mouse_dragging = true;
a->drag_start_y = a->tui_cursor.y; a->drag_start_y = a->ged_cursor.y;
a->drag_start_x = a->tui_cursor.x; a->drag_start_x = a->ged_cursor.x;
} }
if (a->is_mouse_dragging) { if (a->is_mouse_dragging) {
Usz tcy = a->drag_start_y; Usz tcy = a->drag_start_y;
@ -1191,10 +1191,10 @@ void ged_mouse_event(Ged* a, Usz vis_y, Usz vis_x, mmask_t mouse_bstate) {
Usz lox = x < tcx ? x : tcx; Usz lox = x < tcx ? x : tcx;
Usz hiy = y > tcy ? y : tcy; Usz hiy = y > tcy ? y : tcy;
Usz hix = x > tcx ? x : tcx; Usz hix = x > tcx ? x : tcx;
a->tui_cursor.y = loy; a->ged_cursor.y = loy;
a->tui_cursor.x = lox; a->ged_cursor.x = lox;
a->tui_cursor.h = hiy - loy + 1; a->ged_cursor.h = hiy - loy + 1;
a->tui_cursor.w = hix - lox + 1; a->ged_cursor.w = hix - lox + 1;
a->is_draw_dirty = true; a->is_draw_dirty = true;
} }
} }
@ -1228,9 +1228,9 @@ void ged_adjust_rulers_relative(Ged* a, Isz delta_y, Isz delta_x) {
} }
void ged_resize_grid_relative(Ged* a, Isz delta_y, Isz delta_x) { void ged_resize_grid_relative(Ged* a, Isz delta_y, Isz delta_x) {
tui_resize_grid_snap_ruler(&a->field, &a->markmap_r, a->ruler_spacing_y, ged_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->ruler_spacing_x, delta_y, delta_x, a->tick_num,
&a->scratch_field, &a->undo_hist, &a->tui_cursor); &a->scratch_field, &a->undo_hist, &a->ged_cursor);
a->needs_remarking = true; // could check if we actually resized a->needs_remarking = true; // could check if we actually resized
a->is_draw_dirty = true; a->is_draw_dirty = true;
ged_make_cursor_visible(a); ged_make_cursor_visible(a);
@ -1239,14 +1239,14 @@ void ged_resize_grid_relative(Ged* a, Isz delta_y, Isz delta_x) {
void ged_write_character(Ged* a, char c) { void ged_write_character(Ged* a, char c) {
undo_history_push(&a->undo_hist, &a->field, a->tick_num); undo_history_push(&a->undo_hist, &a->field, a->tick_num);
gbuffer_poke(a->field.buffer, a->field.height, a->field.width, gbuffer_poke(a->field.buffer, a->field.height, a->field.width,
a->tui_cursor.y, a->tui_cursor.x, c); a->ged_cursor.y, a->ged_cursor.x, c);
// Indicate we want the next simulation step to be run predictavely, // Indicate we want the next simulation step to be run predictavely,
// so that we can use the reulsting mark buffer for UI visualization. // so that we can use the reulsting mark buffer for UI visualization.
// This is "expensive", so it could be skipped for non-interactive // This is "expensive", so it could be skipped for non-interactive
// input in situations where max throughput is necessary. // input in situations where max throughput is necessary.
a->needs_remarking = true; a->needs_remarking = true;
if (a->input_mode == Tui_input_mode_append) { if (a->input_mode == Ged_input_mode_append) {
tui_cursor_move_relative(&a->tui_cursor, a->field.height, a->field.width, 0, ged_cursor_move_relative(&a->ged_cursor, a->field.height, a->field.width, 0,
1); 1);
} }
a->is_draw_dirty = true; a->is_draw_dirty = true;
@ -1259,10 +1259,10 @@ void ged_add_piano_bits_for_character(Ged* a, char c) {
bool ged_try_selection_clipped_to_field(Ged const* a, Usz* out_y, Usz* out_x, bool ged_try_selection_clipped_to_field(Ged const* a, Usz* out_y, Usz* out_x,
Usz* out_h, Usz* out_w) { Usz* out_h, Usz* out_w) {
Usz curs_y = a->tui_cursor.y; Usz curs_y = a->ged_cursor.y;
Usz curs_x = a->tui_cursor.x; Usz curs_x = a->ged_cursor.x;
Usz curs_h = a->tui_cursor.h; Usz curs_h = a->ged_cursor.h;
Usz curs_w = a->tui_cursor.w; Usz curs_w = a->ged_cursor.w;
Usz field_h = a->field.height; Usz field_h = a->field.height;
Usz field_w = a->field.width; Usz field_w = a->field.width;
if (curs_y >= field_h || curs_x >= field_w) if (curs_y >= field_h || curs_x >= field_w)
@ -1304,12 +1304,12 @@ bool ged_copy_selection_to_clipbard(Ged* a) {
void ged_input_character(Ged* a, char c) { void ged_input_character(Ged* a, char c) {
switch (a->input_mode) { switch (a->input_mode) {
case Tui_input_mode_append: case Ged_input_mode_append:
ged_write_character(a, c); ged_write_character(a, c);
break; break;
case Tui_input_mode_normal: case Ged_input_mode_normal:
case Tui_input_mode_selresize: case Ged_input_mode_selresize:
if (a->tui_cursor.h <= 1 && a->tui_cursor.w <= 1) { if (a->ged_cursor.h <= 1 && a->ged_cursor.w <= 1) {
ged_write_character(a, c); ged_write_character(a, c);
} else { } else {
undo_history_push(&a->undo_hist, &a->field, a->tick_num); undo_history_push(&a->undo_hist, &a->field, a->tick_num);
@ -1318,7 +1318,7 @@ void ged_input_character(Ged* a, char c) {
a->is_draw_dirty = true; a->is_draw_dirty = true;
} }
break; break;
case Tui_input_mode_piano: case Ged_input_mode_piano:
ged_add_piano_bits_for_character(a, c); ged_add_piano_bits_for_character(a, c);
break; break;
} }
@ -1347,33 +1347,33 @@ void ged_input_cmd(Ged* a, Ged_input_cmd ev) {
} else { } else {
undo_history_pop(&a->undo_hist, &a->field, &a->tick_num); undo_history_pop(&a->undo_hist, &a->field, &a->tick_num);
} }
tui_cursor_confine(&a->tui_cursor, a->field.height, a->field.width); ged_cursor_confine(&a->ged_cursor, a->field.height, a->field.width);
ged_make_cursor_visible(a); ged_make_cursor_visible(a);
a->needs_remarking = true; a->needs_remarking = true;
a->is_draw_dirty = true; a->is_draw_dirty = true;
} }
break; break;
case Ged_input_cmd_toggle_append_mode: case Ged_input_cmd_toggle_append_mode:
if (a->input_mode == Tui_input_mode_append) { if (a->input_mode == Ged_input_mode_append) {
a->input_mode = Tui_input_mode_normal; a->input_mode = Ged_input_mode_normal;
} else { } else {
a->input_mode = Tui_input_mode_append; a->input_mode = Ged_input_mode_append;
} }
a->is_draw_dirty = true; a->is_draw_dirty = true;
break; break;
case Ged_input_cmd_toggle_piano_mode: case Ged_input_cmd_toggle_piano_mode:
if (a->input_mode == Tui_input_mode_piano) { if (a->input_mode == Ged_input_mode_piano) {
a->input_mode = Tui_input_mode_normal; a->input_mode = Ged_input_mode_normal;
} else { } else {
a->input_mode = Tui_input_mode_piano; a->input_mode = Ged_input_mode_piano;
} }
a->is_draw_dirty = true; a->is_draw_dirty = true;
break; break;
case Ged_input_cmd_toggle_selresize_mode: case Ged_input_cmd_toggle_selresize_mode:
if (a->input_mode == Tui_input_mode_selresize) { if (a->input_mode == Ged_input_mode_selresize) {
a->input_mode = Tui_input_mode_normal; a->input_mode = Ged_input_mode_normal;
} else { } else {
a->input_mode = Tui_input_mode_selresize; a->input_mode = Ged_input_mode_selresize;
} }
a->is_draw_dirty = true; a->is_draw_dirty = true;
break; break;
@ -1418,8 +1418,8 @@ void ged_input_cmd(Ged* a, Ged_input_cmd ev) {
case Ged_input_cmd_paste: { case Ged_input_cmd_paste: {
Usz field_h = a->field.height; Usz field_h = a->field.height;
Usz field_w = a->field.width; Usz field_w = a->field.width;
Usz curs_y = a->tui_cursor.y; Usz curs_y = a->ged_cursor.y;
Usz curs_x = a->tui_cursor.x; Usz curs_x = a->ged_cursor.x;
if (curs_y >= field_h || curs_x >= field_w) if (curs_y >= field_h || curs_x >= field_w)
break; break;
Field* cb_field = &a->clipboard_field; Field* cb_field = &a->clipboard_field;
@ -1441,17 +1441,17 @@ void ged_input_cmd(Ged* a, Ged_input_cmd ev) {
a->is_draw_dirty = true; a->is_draw_dirty = true;
} break; } break;
case Ged_input_cmd_escape: { case Ged_input_cmd_escape: {
if (a->input_mode != Tui_input_mode_normal) { if (a->input_mode != Ged_input_mode_normal) {
a->input_mode = Tui_input_mode_normal; a->input_mode = Ged_input_mode_normal;
a->is_draw_dirty = true; a->is_draw_dirty = true;
} else if (a->tui_cursor.h != 1 || a->tui_cursor.w != 1) { } else if (a->ged_cursor.h != 1 || a->ged_cursor.w != 1) {
a->tui_cursor.h = 1; a->ged_cursor.h = 1;
a->tui_cursor.w = 1; a->ged_cursor.w = 1;
a->is_draw_dirty = true; a->is_draw_dirty = true;
} else if (a->clipboard_field.height >= 1 && } else if (a->clipboard_field.height >= 1 &&
a->clipboard_field.width >= 1) { a->clipboard_field.width >= 1) {
a->tui_cursor.h = a->clipboard_field.height; a->ged_cursor.h = a->clipboard_field.height;
a->tui_cursor.w = a->clipboard_field.width; a->ged_cursor.w = a->clipboard_field.width;
a->is_draw_dirty = true; a->is_draw_dirty = true;
} }
} break; } break;

Loading…
Cancel
Save