iinitial arrow implementation - 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 34a0ec991e4985d3ca4719ffc696f681370e14fc /scm/gramscii/commit/34a0ec991e4985d3ca4719ffc696f681370e14fc.gph bitreich.org 70 1parent 5dd00eaf46bd250099c368c7b4a66e0e4dfc4b6f /scm/gramscii/commit/5dd00eaf46bd250099c368c7b4a66e0e4dfc4b6f.gph bitreich.org 70 hAuthor: KatolaZ URL:mailto:katolaz@freaknet.org bitreich.org 70 iDate: Fri, 19 Jul 2019 12:04:44 +0100 Err bitreich.org 70 i Err bitreich.org 70 iinitial arrow implementation Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M gramscii.c | 139 +++++++++++++++++++++++++++++-- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 132 insertions(+), 7 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/gramscii.c b/gramscii.c /scm/gramscii/file/gramscii.c.gph bitreich.org 70 i@@ -17,6 +17,7 @@ Err bitreich.org 70 i #define TEXT 0x04 Err bitreich.org 70 i 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 #define DIR_U 0x02 Err bitreich.org 70 i #define DIR_D 0x04 Err bitreich.org 70 i@@ -50,12 +51,12 @@ int y; Err bitreich.org 70 i int step; Err bitreich.org 70 i char cursor; Err bitreich.org 70 i char corner; Err bitreich.org 70 i-char hlines[] = {"-~=#@._"}; Err bitreich.org 70 i-char vlines[] = {"|H#@:;i"}; Err bitreich.org 70 i+char hlines[] = {"-~=#@._ "}; Err bitreich.org 70 i+char vlines[] = {"|H#@:;i "}; Err bitreich.org 70 i char corners[] = {"+'H#@.\""}; Err bitreich.org 70 i-int hlines_sz= sizeof(hlines); Err bitreich.org 70 i-int vlines_sz= sizeof(vlines); Err bitreich.org 70 i-int corners_sz = sizeof(corners); Err bitreich.org 70 i+int hlines_sz= sizeof(hlines) -1; Err bitreich.org 70 i+int vlines_sz= sizeof(vlines) -1; Err bitreich.org 70 i+int corners_sz = sizeof(corners) -1; Err bitreich.org 70 i int cur_hl, cur_vl, cur_corn; Err bitreich.org 70 i char line_h; Err bitreich.org 70 i char line_v; Err bitreich.org 70 i@@ -137,7 +138,6 @@ void redraw(){ Err bitreich.org 70 i } Err bitreich.org 70 i status_bar(); Err bitreich.org 70 i show_cursor(); Err bitreich.org 70 i- step = 1; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i void update_current(){ Err bitreich.org 70 i@@ -235,8 +235,8 @@ void draw_box(int x1, int y1, int fix){ Err bitreich.org 70 i void get_box(){ Err bitreich.org 70 i char c; Err bitreich.org 70 i int orig_x=x, orig_y=y; Err bitreich.org 70 i- Err bitreich.org 70 i redraw(); Err bitreich.org 70 i+ step = 1; Err bitreich.org 70 i draw_box(x,y,NOFIX); Err bitreich.org 70 i while((c=getchar())!=EOF && c != 27 && c!= 'b'){ Err bitreich.org 70 i switch(c){ Err bitreich.org 70 i@@ -259,6 +259,7 @@ void get_box(){ Err bitreich.org 70 i } Err bitreich.org 70 i check_bound(); Err bitreich.org 70 i redraw(); Err bitreich.org 70 i+ step = 1; 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@@ -270,6 +271,126 @@ void get_box(){ Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i+int progr_x(int dir){ Err bitreich.org 70 i+ switch(dir){ Err bitreich.org 70 i+ case DIR_L: Err bitreich.org 70 i+ return -1; Err bitreich.org 70 i+ case DIR_R: Err bitreich.org 70 i+ return +1; Err bitreich.org 70 i+ default: Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+ Err bitreich.org 70 i+int progr_y(int dir){ Err bitreich.org 70 i+ switch(dir){ Err bitreich.org 70 i+ case DIR_D: Err bitreich.org 70 i+ return +1; Err bitreich.org 70 i+ case DIR_U: Err bitreich.org 70 i+ return -1; Err bitreich.org 70 i+ default: Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+ Err bitreich.org 70 i+/* FIXME: fix pointer position */ Err bitreich.org 70 i+/* FIXME: set initial and final markers */ Err bitreich.org 70 i+/* FIXME: draw "corner" as first char after change of dir */ Err bitreich.org 70 i+void draw_arrow(int x, int y, char *a, int a_len, int fix){ Err bitreich.org 70 i+ Err bitreich.org 70 i+ int i, j; Err bitreich.org 70 i+ char line; Err bitreich.org 70 i+ void (*f)(int, int, char); Err bitreich.org 70 i+ Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (fix == FIX) Err bitreich.org 70 i+ f = set_xy; Err bitreich.org 70 i+ else Err bitreich.org 70 i+ f = draw_xy; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (!a_len){ Err bitreich.org 70 i+ f(x,y,corner); Err bitreich.org 70 i+ return; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ line = (a[0] & DIR_L) || (a[0] & DIR_R) ? line_h : line_v; Err bitreich.org 70 i+ f(x,y,line); Err bitreich.org 70 i+ for (i=0; i