SMOLNET PORTAL home about changes
ifix arrow pointer -- toggle start and end markers - 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 a2bf8545d73621de7cfa3a06663d1b94fdc668c4	/scm/gramscii/commit/a2bf8545d73621de7cfa3a06663d1b94fdc668c4.gph	bitreich.org	70
1parent 34a0ec991e4985d3ca4719ffc696f681370e14fc	/scm/gramscii/commit/34a0ec991e4985d3ca4719ffc696f681370e14fc.gph	bitreich.org	70
hAuthor: KatolaZ <katolaz@freaknet.org>	URL:mailto:katolaz@freaknet.org	bitreich.org	70
iDate:   Fri, 19 Jul 2019 15:38:14 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
ifix arrow pointer -- toggle start and end markers	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M TODO                                |       4 +++-	Err	bitreich.org	70
i  M gramscii.c                          |      63 +++++++++++++++++++++++++------	Err	bitreich.org	70
i	Err	bitreich.org	70
i2 files changed, 54 insertions(+), 13 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@@ -1,13 +1,15 @@	Err	bitreich.org	70
i + optimize redraws (i.e., avoid to redraw if possible)	Err	bitreich.org	70
i - (?) change cursor shape according to action	Err	bitreich.org	70
i - save to file	Err	bitreich.org	70
i-- implement arrow	Err	bitreich.org	70
i+- implement auto-arrow 'A' (automatic end-char)	Err	bitreich.org	70
i+- implement delete 'x' or 'd' 	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
i - load from file	Err	bitreich.org	70
i - insert file at position	Err	bitreich.org	70
i - get screen geometry	Err	bitreich.org	70
i - allow scrolling (both vertical and horizontal)	Err	bitreich.org	70
i+* implement arrow	Err	bitreich.org	70
i * set different line styles (done for hl, vl, corner)	Err	bitreich.org	70
i * add status bar	Err	bitreich.org	70
i * implement box	Err	bitreich.org	70
1diff --git a/gramscii.c b/gramscii.c	/scm/gramscii/file/gramscii.c.gph	bitreich.org	70
i@@ -23,6 +23,8 @@	Err	bitreich.org	70
i #define DIR_D  0x04	Err	bitreich.org	70
i #define DIR_L  0x08	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+#define DIR_HOR (DIR_R | DIR_L)	Err	bitreich.org	70
i+#define DIR_VER (DIR_D | DIR_U)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #define WIDTH  100	Err	bitreich.org	70
i #define HEIGHT  25	Err	bitreich.org	70
i@@ -54,12 +56,20 @@ char corner;	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+char st_marks[] = {"+o-|<>^v"};	Err	bitreich.org	70
i+char end_marks[] = {">+o-|<^v"};	Err	bitreich.org	70
i+	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+int stmarks_sz = sizeof(st_marks) - 1;	Err	bitreich.org	70
i+int endmarks_sz = sizeof(st_marks) - 1;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+int cur_hl, cur_vl, cur_corn, cur_start, cur_end;	Err	bitreich.org	70
i char line_h;	Err	bitreich.org	70
i char line_v;	Err	bitreich.org	70
i+char mark_st;	Err	bitreich.org	70
i+char mark_end;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i struct termios t1, t2;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -99,8 +109,11 @@ void init_screen(){	Err	bitreich.org	70
i         cur_corn = 0;	Err	bitreich.org	70
i         corner = corners[0];	Err	bitreich.org	70
i         cur_hl = cur_vl = 0;	Err	bitreich.org	70
i+        cur_start = cur_end = 0;	Err	bitreich.org	70
i         line_h = hlines[cur_hl];	Err	bitreich.org	70
i         line_v = vlines[cur_vl];	Err	bitreich.org	70
i+        mark_st = st_marks[cur_start];	Err	bitreich.org	70
i+        mark_end = end_marks[cur_end];	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i char* state_str(){	Err	bitreich.org	70
i@@ -123,8 +136,8 @@ char* state_str(){	Err	bitreich.org	70
i void status_bar(){	Err	bitreich.org	70
i         	Err	bitreich.org	70
i         printf("\033[%d;1f\033[7m", HEIGHT+1);	Err	bitreich.org	70
i-        printf(" x: %3d y: %3d -- mode: %4s hl: %c vl: %c cn: %c %10s", 	Err	bitreich.org	70
i-                x, y, state_str(), line_h, line_v, corner, "");	Err	bitreich.org	70
i+        printf(" x: %3d y: %3d -- mode: %4s hl: %c vl: %c cn: %c <: %c >: %c %10s", 	Err	bitreich.org	70
i+                x, y, state_str(), line_h, line_v, corner, mark_st, mark_end, "");	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         printf("\033[0m");	Err	bitreich.org	70
i }	Err	bitreich.org	70
i@@ -297,12 +310,9 @@ int progr_y(int dir){	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+        int i, j, cur_dir;	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@@ -312,20 +322,31 @@ void draw_arrow(int x, int y, char *a, int a_len, int fix){	Err	bitreich.org	70
i         else	Err	bitreich.org	70
i                 f = draw_xy;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+        f(x,y,mark_st);	Err	bitreich.org	70
i         if (!a_len){	Err	bitreich.org	70
i-                f(x,y,corner);	Err	bitreich.org	70
i+                show_cursor();	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+        cur_dir=DIR_N;	Err	bitreich.org	70
i         for (i=0; i<a_len; i+=2){	Err	bitreich.org	70
i+                if (i>0) {	Err	bitreich.org	70
i+                        /* If we are switching between horizontal and vertical, put a "corner" */	Err	bitreich.org	70
i+                        if (((cur_dir & DIR_HOR) && (a[i] & DIR_VER)) ||	Err	bitreich.org	70
i+                            ((cur_dir & DIR_VER) && (a[i] & DIR_HOR))){	Err	bitreich.org	70
i+                                f(x,y,corner);	Err	bitreich.org	70
i+                                show_cursor();	Err	bitreich.org	70
i+                        }	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i                 for(j=0; j<a[i+1]; j++){	Err	bitreich.org	70
i                         line = (a[i] & DIR_L) || (a[i] & DIR_R) ? line_h : line_v;	Err	bitreich.org	70
i                         x += progr_x(a[i]);	Err	bitreich.org	70
i                         y += progr_y(a[i]);	Err	bitreich.org	70
i                         f(x, y, line); 	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i+                /* f(x,y,mark_end);*/	Err	bitreich.org	70
i+                cur_dir = a[i];	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i+        f(x,y,mark_end);	Err	bitreich.org	70
i         show_cursor();	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -345,7 +366,7 @@ void get_arrow(){	Err	bitreich.org	70
i         	Err	bitreich.org	70
i         redraw();	Err	bitreich.org	70
i         step = 1;	Err	bitreich.org	70
i-        //draw_arrow(x,y,NOFIX);	Err	bitreich.org	70
i+        draw_arrow(x,y, arrow, 0, NOFIX);	Err	bitreich.org	70
i         while((c=getchar())!=EOF && c != 27 && c!= 'a'){	Err	bitreich.org	70
i                 switch(c){	Err	bitreich.org	70
i                         case 'H': step = 5;	Err	bitreich.org	70
i@@ -417,6 +438,18 @@ void toggle_vline(){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+void toggle_st_mark(){	Err	bitreich.org	70
i+        	Err	bitreich.org	70
i+        cur_start = (cur_start + 1 ) % stmarks_sz;	Err	bitreich.org	70
i+        mark_st = st_marks[cur_start];	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+void toggle_end_mark(){	Err	bitreich.org	70
i+        	Err	bitreich.org	70
i+        cur_end = (cur_end+ 1 ) % endmarks_sz;	Err	bitreich.org	70
i+        mark_end = end_marks[cur_end];	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i void commands(){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         char c;	Err	bitreich.org	70
i@@ -467,9 +500,15 @@ void commands(){	Err	bitreich.org	70
i                         case '|':	Err	bitreich.org	70
i                                 toggle_vline();	Err	bitreich.org	70
i                                 break;	Err	bitreich.org	70
i-                        case '+':	Err	bitreich.org	70
i+                        case '+': 	Err	bitreich.org	70
i                                 toggle_corner();	Err	bitreich.org	70
i                                 break;	Err	bitreich.org	70
i+                        case '<': 	Err	bitreich.org	70
i+                                toggle_st_mark();	Err	bitreich.org	70
i+                                break;	Err	bitreich.org	70
i+                        case '>':	Err	bitreich.org	70
i+                                toggle_end_mark();	Err	bitreich.org	70
i+                                break;	Err	bitreich.org	70
i                         case 'Q':	Err	bitreich.org	70
i                         case 'q':	Err	bitreich.org	70
i                                 cleanup(0);	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/gramscii/commit/a2bf8545d7362...
Content-Typetext/plain; charset=utf-8