irefactor box management -- towards trapezium - 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 e8c98a65cd161a5d2c0a76d41e39b352e083a9ab /scm/gramscii/commit/e8c98a65cd161a5d2c0a76d41e39b352e083a9ab.gph bitreich.org 70
1parent ce2bfb4d3a49a27bde7c8bbc6c6b1ef6f80054aa /scm/gramscii/commit/ce2bfb4d3a49a27bde7c8bbc6c6b1ef6f80054aa.gph bitreich.org 70
hAuthor: KatolaZ <katolaz@freaknet.org> URL:mailto:katolaz@freaknet.org bitreich.org 70
iDate: Sat, 17 Aug 2019 07:43:03 +0100 Err bitreich.org 70
i Err bitreich.org 70
irefactor box management -- towards trapezium Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M draw.c | 88 +++++++++++++++++++++++-------- Err bitreich.org 70
i M gramscii.h | 14 ++++++++++++-- Err bitreich.org 70
i Err bitreich.org 70
i2 files changed, 77 insertions(+), 25 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/draw.c b/draw.c /scm/gramscii/file/draw.c.gph bitreich.org 70
i@@ -161,7 +161,7 @@ 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- if (st & BOX_PARR){ 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@@ -195,47 +195,89 @@ void draw_parallelogram(int x1, int y1, char st, char fix){ 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+char flip_par_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+ 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 draw_trapezium(int x1, int y1, char st, char fix){ 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+ * draw the current box, being it an actual box, a parallelogram, or a Err bitreich.org 70
i+ * trapezium Err bitreich.org 70
i+ */ Err bitreich.org 70
i+void update_box(int x1, int y1, char st, char fix){ Err bitreich.org 70
i+ Err bitreich.org 70
i+ if (st == BOX_RECT) Err bitreich.org 70
i+ draw_box(x1, y1, fix); Err bitreich.org 70
i+ else if (st & BOX_PAR) Err bitreich.org 70
i+ draw_parallelogram(x1, y1, st, fix); Err bitreich.org 70
i+ else if (st & BOX_TRAP) Err bitreich.org 70
i+ draw_trapezium(x1, y1, st, fix); Err bitreich.org 70
i+ status_bar(); Err bitreich.org 70
i+ show_cursor(); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+char toggle_trap_type(char st){ Err bitreich.org 70
i+ return st; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+int box_end(char c, char st){ Err bitreich.org 70
i+ if (c == '\n' || Err bitreich.org 70
i+ c == 27 || Err bitreich.org 70
i+ ((st == BOX_RECT) && c == 'b') || Err bitreich.org 70
i+ ((st & BOX_PAR) && c == 'z') || Err bitreich.org 70
i+ ((st & BOX_TRAP) && c == 't')) Err bitreich.org 70
i+ return 1; Err bitreich.org 70
i+ return 0; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+/* draw boxes, parallelograms, and trapezia */ Err bitreich.org 70
i void get_box(FILE *fc, char st){ Err bitreich.org 70
i char c; Err bitreich.org 70
i int orig_x=x, orig_y=y; Err bitreich.org 70
i redraw(); Err bitreich.org 70
i step = 1; Err bitreich.org 70
i+#ifdef DEBUG Err bitreich.org 70
i+ fprintf(stderr, "box style: %d\n", st); Err bitreich.org 70
i+#endif 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+ while((c=fgetc(fc))!=EOF && !box_end(c, st)){ Err bitreich.org 70
i+ if (c == 'Z' && (st & BOX_PAR)){ Err bitreich.org 70
i+ st = flip_par_lean(st); Err bitreich.org 70
i redraw(); Err bitreich.org 70
i- goto update_box; Err bitreich.org 70
i+#ifdef DEBUG Err bitreich.org 70
i+ fprintf(stderr, "new parallelogram style: %d\n", st); Err bitreich.org 70
i+#endif Err bitreich.org 70
i+ update_box(orig_x, orig_y, st, NOFIX); Err bitreich.org 70
i+ continue; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ else if (c == 'T' && (st & BOX_TRAP)){ Err bitreich.org 70
i+ st = toggle_trap_type(st); Err bitreich.org 70
i+ redraw(); Err bitreich.org 70
i+ update_box(orig_x, orig_y, st, NOFIX); Err bitreich.org 70
i+ continue; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ if (change_style(c)){ Err bitreich.org 70
i+ update_box(orig_x, orig_y, st, NOFIX); Err bitreich.org 70
i+ continue; 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 continue; Err bitreich.org 70
i check_bound(&x, &y); Err bitreich.org 70
i redraw(); Err bitreich.org 70
i step = 1; Err bitreich.org 70
i-update_box: Err bitreich.org 70
i- if (st == BOX_RECT) Err bitreich.org 70
i- draw_box(orig_x, orig_y, NOFIX); Err bitreich.org 70
i- else Err bitreich.org 70
i- draw_parallelogram(orig_x, orig_y, st, 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- if (st == BOX_RECT && (c == 'b' || c == '\n')){ Err bitreich.org 70
i- draw_box(orig_x, orig_y, FIX); Err bitreich.org 70
i- modified = 1; Err bitreich.org 70
i+ update_box(orig_x, orig_y, st, NOFIX); Err bitreich.org 70
i } 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+ if (((st == BOX_RECT ) && (c == 'b' || c == '\n')) || Err bitreich.org 70
i+ ( (st & BOX_PAR ) && (c == 'z' || c == '\n')) || Err bitreich.org 70
i+ ( (st & BOX_TRAP ) && (c == 't' || c == '\n'))){ Err bitreich.org 70
i+ update_box(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.h b/gramscii.h /scm/gramscii/file/gramscii.h.gph bitreich.org 70
i@@ -36,10 +36,20 @@ 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+/* parallelograms */ Err bitreich.org 70
i+#define BOX_PAR 0x04 Err bitreich.org 70
i /* parallelogram (leaning right) */ Err bitreich.org 70
i-#define BOX_PARR 0x01 Err bitreich.org 70
i+#define BOX_PARR 0x05 Err bitreich.org 70
i /* parallelogram (leaning left) */ Err bitreich.org 70
i-#define BOX_PARL 0x02 Err bitreich.org 70
i+#define BOX_PARL 0x06 Err bitreich.org 70
i+/* trapezium */ Err bitreich.org 70
i+#define BOX_TRAP 0x10 Err bitreich.org 70
i+#define BOX_TRAP_UR 0x11 Err bitreich.org 70
i+#define BOX_TRAP_UC 0x12 Err bitreich.org 70
i+#define BOX_TRAP_UL 0x13 Err bitreich.org 70
i+#define BOX_TRAP_DL 0x14 Err bitreich.org 70
i+#define BOX_TRAP_DC 0x15 Err bitreich.org 70
i+#define BOX_TRAP_DR 0x16 Err bitreich.org 70
i /**/ Err bitreich.org 70
i Err bitreich.org 70
i #define NOFIX 0x0 Err bitreich.org 70
.
Response:
text/plain