SMOLNET PORTAL home about changes
iadd parallelogram mode - 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 a95019dfe0b64ed01051f2f059af7d7756d0dcdb	/scm/gramscii/commit/a95019dfe0b64ed01051f2f059af7d7756d0dcdb.gph	bitreich.org	70
1parent 257ec5d56fbe0ac65b04ae10bf36dd14e86c95a5	/scm/gramscii/commit/257ec5d56fbe0ac65b04ae10bf36dd14e86c95a5.gph	bitreich.org	70
hAuthor: KatolaZ <katolaz@freaknet.org>	URL:mailto:katolaz@freaknet.org	bitreich.org	70
iDate:   Wed, 14 Aug 2019 07:59:53 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
iadd parallelogram mode	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M TODO                                |       5 +++--	Err	bitreich.org	70
i  M draw.c                              |      58 ++++++++++++++++++++++---------	Err	bitreich.org	70
i  M gramscii.c                          |       6 +++++-	Err	bitreich.org	70
i  M gramscii.h                          |      12 +++++++++++-	Err	bitreich.org	70
i  M screen.c                            |       2 ++	Err	bitreich.org	70
i	Err	bitreich.org	70
i5 files changed, 63 insertions(+), 20 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,10 +1,10 @@	Err	bitreich.org	70
i + optimize redraws (redraw only the modified rectangle)	Err	bitreich.org	70
i+- implement comment (#: ignore everything until the end of the line)	Err	bitreich.org	70
i - add screen geometry option (-g 25x80?)	Err	bitreich.org	70
i-- maybe move "text" mode to "t"	Err	bitreich.org	70
i+- (?)maybe move "text" mode to "t"	Err	bitreich.org	70
i - implement ellipse	Err	bitreich.org	70
i - (?) filled box (B)	Err	bitreich.org	70
i - (?) manage filled box character (as for other styles)	Err	bitreich.org	70
i-- implement comment (#: ignore until the end of the line)	Err	bitreich.org	70
i + parse control characters 	Err	bitreich.org	70
i   + parse arrows (text-mode will allow movements as well)	Err	bitreich.org	70
i - (?) implement CTRL+G as abort (aside ESC)	Err	bitreich.org	70
i@@ -14,6 +14,7 @@	Err	bitreich.org	70
i - allow scrolling (both vertical and horizontal)	Err	bitreich.org	70
i - catch SIGWINCH and react appropriately (after scrolling is 	Err	bitreich.org	70
i   enabled)	Err	bitreich.org	70
i+* implement parallelogram mode (z/Z)	Err	bitreich.org	70
i * fix bug in reading commands from files	Err	bitreich.org	70
i * fix bug in visual crop	Err	bitreich.org	70
i * read file at point	Err	bitreich.org	70
1diff --git a/draw.c b/draw.c	/scm/gramscii/file/draw.c.gph	bitreich.org	70
i@@ -143,8 +143,9 @@ void draw_box(int x1, int y1, int fix){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void draw_parallelogram(int x1, int y1, char st, char fix){	Err	bitreich.org	70
i         int xmin, ymin, xmax, ymax;	Err	bitreich.org	70
i-        int dy;	Err	bitreich.org	70
i+        int dy, minoff, maxoff, xoff, xincr;	Err	bitreich.org	70
i         int i;	Err	bitreich.org	70
i+        char lean;	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@@ -160,27 +161,47 @@ void draw_parallelogram(int x1, int y1, char st, char fix){	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i         else	Err	bitreich.org	70
i                 f = draw_xy;	Err	bitreich.org	70
i-        /*FIXME: INCOMPLETE -- CONTINUE HERE */	Err	bitreich.org	70
i-        for(i=xmin+1; i<=xmax; i++){	Err	bitreich.org	70
i-                f(i, ymin, line_h);	Err	bitreich.org	70
i-                f(i, ymax, line_h);	Err	bitreich.org	70
i+        if (st & BOX_PARR){	Err	bitreich.org	70
i+                minoff = dy;	Err	bitreich.org	70
i+                maxoff = 0;	Err	bitreich.org	70
i+                lean = '/';	Err	bitreich.org	70
i+                xincr = -1;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i-        for(i=ymin+1; i<=ymax; i++){	Err	bitreich.org	70
i-                f(xmin, i, line_v);	Err	bitreich.org	70
i-                f(xmax, i, line_v);	Err	bitreich.org	70
i+        else {	Err	bitreich.org	70
i+                minoff = 0;	Err	bitreich.org	70
i+                maxoff = dy;	Err	bitreich.org	70
i+                lean = '\\';	Err	bitreich.org	70
i+                xincr = +1;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i-        f(xmin, ymin, corner);	Err	bitreich.org	70
i-        f(xmin, ymax, corner);	Err	bitreich.org	70
i-        f(xmax, ymin, corner);	Err	bitreich.org	70
i-        f(xmax, ymax, corner);	Err	bitreich.org	70
i+        for(i=xmin+1; i<=xmax-dy; i++){	Err	bitreich.org	70
i+                f(i+minoff, ymin, line_h);	Err	bitreich.org	70
i+                f(i+maxoff, ymax, line_h);	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        	Err	bitreich.org	70
i+        for(i=ymin+1, xoff=minoff; i<=ymax; i++, xoff += xincr){	Err	bitreich.org	70
i+                f(xmin+(xoff+xincr), i, lean);	Err	bitreich.org	70
i+                if (minoff)	Err	bitreich.org	70
i+                        f(xmax - (minoff - xoff - xincr), i, lean);	Err	bitreich.org	70
i+                else 	Err	bitreich.org	70
i+                        f(xmax - (maxoff - xoff - xincr), i, lean);	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        f(xmin+minoff, ymin, corner);	Err	bitreich.org	70
i+        f(xmin+maxoff, ymax, corner);	Err	bitreich.org	70
i+        f(xmax-maxoff, ymin, corner);	Err	bitreich.org	70
i+        f(xmax-minoff, ymax, corner);	Err	bitreich.org	70
i         if (fix == FIX)	Err	bitreich.org	70
i                 copy_lines_to_ring(ymin, ymax, NEW_STATE);	Err	bitreich.org	70
i         show_cursor();	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 	Err	bitreich.org	70
i+char flip_lean(char st){	Err	bitreich.org	70
i+        if (st & BOX_PARR)	Err	bitreich.org	70
i+                return BOX_PARL;	Err	bitreich.org	70
i+        else if (st & BOX_PARL)	Err	bitreich.org	70
i+                return BOX_PARR;	Err	bitreich.org	70
i+        return st;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void get_box(FILE *fc, char st){	Err	bitreich.org	70
i         char c;	Err	bitreich.org	70
i@@ -189,6 +210,11 @@ void get_box(FILE *fc, char st){	Err	bitreich.org	70
i         step = 1;	Err	bitreich.org	70
i         draw_box(x,y,NOFIX);	Err	bitreich.org	70
i         while((c=fgetc(fc))!=EOF && c != 27 && c!= 'b' && c != '\n'){	Err	bitreich.org	70
i+                if (c == 'Z'){	Err	bitreich.org	70
i+                        st = flip_lean(st);	Err	bitreich.org	70
i+                        redraw();	Err	bitreich.org	70
i+                        goto update_box;	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i                 if (change_style(c))	Err	bitreich.org	70
i                         goto update_box;	Err	bitreich.org	70
i                 if (!move_around(c, fc, 1)) 	Err	bitreich.org	70
i@@ -208,8 +234,8 @@ update_box:	Err	bitreich.org	70
i                 draw_box(orig_x, orig_y, FIX);	Err	bitreich.org	70
i                 modified = 1;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i-        else if ((st & (BOX_PAR1 | BOX_PAR2)) &&  (c == 'z' || c == 'Z' || c == '\n')){	Err	bitreich.org	70
i-                draw_parallelogram(orig_x, orig_y, FIX);	Err	bitreich.org	70
i+        else if ((st & (BOX_PARR | BOX_PARL)) &&  (c == 'z' || c == '\n')){	Err	bitreich.org	70
i+                draw_parallelogram(orig_x, orig_y, st, FIX);	Err	bitreich.org	70
i                 modified = 1;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i         redraw();	Err	bitreich.org	70
1diff --git a/gramscii.c b/gramscii.c	/scm/gramscii/file/gramscii.c.gph	bitreich.org	70
i@@ -90,7 +90,7 @@ void commands(FILE *fc){	Err	bitreich.org	70
i                                         break;	Err	bitreich.org	70
i                                 case 'b':	Err	bitreich.org	70
i                                         mode = BOX;	Err	bitreich.org	70
i-                                        get_box(fc);	Err	bitreich.org	70
i+                                        get_box(fc, BOX_RECT);	Err	bitreich.org	70
i                                         break;	Err	bitreich.org	70
i                                 case 'A': autoend=1;	Err	bitreich.org	70
i                                 case 'a':	Err	bitreich.org	70
i@@ -134,6 +134,10 @@ void commands(FILE *fc){	Err	bitreich.org	70
i                                 case 'r':	Err	bitreich.org	70
i                                         read_file_at(fc, x, y);	Err	bitreich.org	70
i                                         break;	Err	bitreich.org	70
i+                                case 'z':	Err	bitreich.org	70
i+                                        mode = PAR;	Err	bitreich.org	70
i+                                        get_box(fc, BOX_PARR);	Err	bitreich.org	70
i+                                        break;	Err	bitreich.org	70
i                                 case 'q':	Err	bitreich.org	70
i                                         check_modified(fc);/** FALLTHROUGH **/	Err	bitreich.org	70
i                                 case 'Q':	Err	bitreich.org	70
1diff --git a/gramscii.h b/gramscii.h	/scm/gramscii/file/gramscii.h.gph	bitreich.org	70
i@@ -18,6 +18,7 @@	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+#define PAR    0x20	Err	bitreich.org	70
i /**/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /* directions */	Err	bitreich.org	70
i@@ -31,6 +32,15 @@	Err	bitreich.org	70
i #define DIR_VER (DIR_D | DIR_U)	Err	bitreich.org	70
i /**/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+/** box style **/	Err	bitreich.org	70
i+/* rectangular box */	Err	bitreich.org	70
i+#define BOX_RECT 0x00	Err	bitreich.org	70
i+/* parallelogram (leaning right) */	Err	bitreich.org	70
i+#define BOX_PARR 0x01	Err	bitreich.org	70
i+/* parallelogram (leaning left) */	Err	bitreich.org	70
i+#define BOX_PARL 0x02	Err	bitreich.org	70
i+/**/	Err	bitreich.org	70
i+	Err	bitreich.org	70
i #define NOFIX 0x0	Err	bitreich.org	70
i #define FIX   0x1	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -169,7 +179,7 @@ int _isblank(int c);	Err	bitreich.org	70
i /** drawing-related functions **/	Err	bitreich.org	70
i int change_style(char c);	Err	bitreich.org	70
i void get_text(FILE *fc);	Err	bitreich.org	70
i-void get_box(FILE *fc);	Err	bitreich.org	70
i+void get_box(FILE *fc, char st);	Err	bitreich.org	70
i void get_arrow(FILE *fc);	Err	bitreich.org	70
i void erase(FILE *fc);	Err	bitreich.org	70
i void visual_box(FILE *fc);	Err	bitreich.org	70
1diff --git a/screen.c b/screen.c	/scm/gramscii/file/screen.c.gph	bitreich.org	70
i@@ -35,6 +35,8 @@ char* mode_str(){	Err	bitreich.org	70
i                         return "del";	Err	bitreich.org	70
i                 case VIS:	Err	bitreich.org	70
i                         return "vis";	Err	bitreich.org	70
i+                case PAR:	Err	bitreich.org	70
i+                        return "par";	Err	bitreich.org	70
i                 default:	Err	bitreich.org	70
i                         return "ERR";	Err	bitreich.org	70
i         }	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/gramscii/commit/a95019dfe0b64...
Content-Typetext/plain; charset=utf-8