ivisual mode (erase and fill) - gramscii - A simple editor for ASCII box-and-arrow charts Err bitreich.org 70
1Log /scm/gramscii/log.gph bitreich.org 70
1Files /scm/gramscii/files.gph bitreich.org 70
1Refs /scm/gramscii/refs.gph bitreich.org 70
1Tags /scm/gramscii/tag bitreich.org 70
1README /scm/gramscii/file/README.md.gph bitreich.org 70
1LICENSE /scm/gramscii/file/COPYING.gph bitreich.org 70
i--- Err bitreich.org 70
1commit d87cf8ea7ec68de924179eb1dbaa13f4b52bd1aa /scm/gramscii/commit/d87cf8ea7ec68de924179eb1dbaa13f4b52bd1aa.gph bitreich.org 70
1parent c8512825e3baf1525af7117affa13d00ac6b0d1d /scm/gramscii/commit/c8512825e3baf1525af7117affa13d00ac6b0d1d.gph bitreich.org 70
hAuthor: KatolaZ <katolaz@freaknet.org> URL:mailto:katolaz@freaknet.org bitreich.org 70
iDate: Sat, 20 Jul 2019 14:47:12 +0100 Err bitreich.org 70
i Err bitreich.org 70
ivisual mode (erase and fill) Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M TODO | 7 ++++--- Err bitreich.org 70
i M gramscii.c | 66 +++++++++++++++++++++++++++++++ Err bitreich.org 70
i Err bitreich.org 70
i2 files changed, 70 insertions(+), 3 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/TODO b/TODO /scm/gramscii/file/TODO.gph bitreich.org 70
i@@ -2,11 +2,12 @@ Err bitreich.org 70
i - (?) change cursor shape according to action Err bitreich.org 70
i - auto-arrow 'A' (automatic end-char) Err bitreich.org 70
i - read file at point Err bitreich.org 70
i-- visual selection Err bitreich.org 70
i++ visual selection Err bitreich.org 70
i - crop Err bitreich.org 70
i- - fill Err bitreich.org 70
i- - delete Err bitreich.org 70
i - yank/put Err bitreich.org 70
i+ * fill Err bitreich.org 70
i+ * delete Err bitreich.org 70
i+- change screen management (i.e., use an array of lines) Err bitreich.org 70
i - undo (by storing lines changed across insert/remove operations) Err bitreich.org 70
i - manage special chars (DEL/CANC) during text insert Err bitreich.org 70
i (also do not print unmanaged chars!) Err bitreich.org 70
1diff --git a/gramscii.c b/gramscii.c /scm/gramscii/file/gramscii.c.gph bitreich.org 70
i@@ -16,6 +16,7 @@ Err bitreich.org 70
i #define ARROW 0x02 Err bitreich.org 70
i #define TEXT 0x04 Err bitreich.org 70
i #define DEL 0x08 Err bitreich.org 70
i+#define VIS 0x10 Err bitreich.org 70
i Err bitreich.org 70
i #define DIR_N 0x00 Err bitreich.org 70
i #define DIR_R 0x01 Err bitreich.org 70
i@@ -45,6 +46,9 @@ Err bitreich.org 70
i #define END 0x02 Err bitreich.org 70
i #define MIDDLE 0x04 Err bitreich.org 70
i Err bitreich.org 70
i+#define VIDEO_NRM 0 Err bitreich.org 70
i+#define VIDEO_REV 7 Err bitreich.org 70
i+ Err bitreich.org 70
i #define MIN(x,y) (x) < (y) ? (x) : (y) Err bitreich.org 70
i #define MAX(x,y) (x) > (y) ? (x) : (y) Err bitreich.org 70
i Err bitreich.org 70
i@@ -188,6 +192,21 @@ void erase_line(char *s){ Err bitreich.org 70
i } Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i+void erase_box(int x1, int y1, char c){ Err bitreich.org 70
i+ Err bitreich.org 70
i+ int x_incr, y_incr, i; Err bitreich.org 70
i+ Err bitreich.org 70
i+ x_incr = x1 < x? +1: -1; Err bitreich.org 70
i+ y_incr = y1 < y? +1: -1; Err bitreich.org 70
i+ do{ Err bitreich.org 70
i+ i = y1; Err bitreich.org 70
i+ do{ Err bitreich.org 70
i+ set_xy(x1, i, c); Err bitreich.org 70
i+ } while(i != y && (1 | (i += y_incr))); Err bitreich.org 70
i+ } while(x1 != x && (1 | (x1 += x_incr))); Err bitreich.org 70
i+ Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i void erase_screen(){ Err bitreich.org 70
i int i; Err bitreich.org 70
i for(i=0;i<HEIGHT; i++) Err bitreich.org 70
i@@ -297,6 +316,10 @@ int progr_y(int dir){ Err bitreich.org 70
i return dir == DIR_U ? -1 : dir == DIR_D ? 1: 0; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i+void set_video(int v){ Err bitreich.org 70
i+ printf("\033[%dm", v); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i /*** Lines and markers ***/ Err bitreich.org 70
i Err bitreich.org 70
i void toggle_hline(){ Err bitreich.org 70
i@@ -626,6 +649,45 @@ void new_file(){ Err bitreich.org 70
i modified=0; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i+/*** Visual ***/ Err bitreich.org 70
i+ Err bitreich.org 70
i+ Err bitreich.org 70
i+void visual_box(){ Err bitreich.org 70
i+ int orig_x =x, orig_y = y; Err bitreich.org 70
i+ char c, f = BG; Err bitreich.org 70
i+ Err bitreich.org 70
i+ redraw(); Err bitreich.org 70
i+ step = 1; Err bitreich.org 70
i+ set_video(VIDEO_REV); Err bitreich.org 70
i+ draw_box(x,y,NOFIX); Err bitreich.org 70
i+ while((c=getchar())!=EOF && c != 27 && c!= 'v'){ Err bitreich.org 70
i+ if (!move_around(c)) switch(c){ Err bitreich.org 70
i+ case 'f':/* fill */ Err bitreich.org 70
i+ f = get_key("fill char: "); Err bitreich.org 70
i+ case 'x':/* erase */ Err bitreich.org 70
i+ erase_box(orig_x, orig_y, f); Err bitreich.org 70
i+ modified = 1; Err bitreich.org 70
i+ goto vis_exit; Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ check_bound(); Err bitreich.org 70
i+ set_video(VIDEO_NRM); Err bitreich.org 70
i+ redraw(); Err bitreich.org 70
i+ step = 1; Err bitreich.org 70
i+ f = BG; Err bitreich.org 70
i+ set_video(VIDEO_REV); Err bitreich.org 70
i+ draw_box(orig_x, orig_y, NOFIX); Err bitreich.org 70
i+ status_bar(); Err bitreich.org 70
i+ show_cursor(); Err bitreich.org 70
i+ } Err bitreich.org 70
i+vis_exit: Err bitreich.org 70
i+ set_video(VIDEO_NRM); Err bitreich.org 70
i+ redraw(); Err bitreich.org 70
i+ state = MOVE; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+ Err bitreich.org 70
i+ Err bitreich.org 70
i /*** Commands ***/ Err bitreich.org 70
i Err bitreich.org 70
i void commands(){ Err bitreich.org 70
i@@ -665,6 +727,10 @@ void commands(){ Err bitreich.org 70
i state = DEL; Err bitreich.org 70
i delete(); Err bitreich.org 70
i break; Err bitreich.org 70
i+ case 'v': Err bitreich.org 70
i+ state = VIS; Err bitreich.org 70
i+ visual_box(); Err bitreich.org 70
i+ break; Err bitreich.org 70
i case '-': Err bitreich.org 70
i toggle_hline(); Err bitreich.org 70
i break; Err bitreich.org 70
.
Response:
text/plain