Introduction
Introduction Statistics Contact Development Disclaimer Help
fix toggle trapezium type - gramscii - A simple editor for ASCII box-and-arrow …
Log
Files
Refs
Tags
README
LICENSE
---
commit 6dddf567f41d43335698598d310c161fb01462ac
parent 646c1c1cc7ecc0cef7f619ae01457659817e5d05
Author: KatolaZ <[email protected]>
Date: Sun, 29 Sep 2019 05:58:54 +0100
fix toggle trapezium type
Diffstat:
M draw.c | 70 +++++++++++++++++++++++++----…
M gramscii.h | 4 ++++
2 files changed, 61 insertions(+), 13 deletions(-)
---
diff --git a/draw.c b/draw.c
@@ -226,7 +226,7 @@ void draw_trapezium(int x1, int y1, char st, char fix){
f = draw_xy;
/* This is valid only for "upper" trapezoids */
- if ((st & BOX_TRAP_U) == BOX_TRAP_U){
+ if (STYLE_IS(st, BOX_TRAP_U)){
#ifdef DEBUG
fprintf(stderr, "This is an 'upward' trapezium\n");
#endif
@@ -237,7 +237,7 @@ void draw_trapezium(int x1, int y1, char st, char fix){
left_c = '/';
right_c = '\\';
}
- else if ((st & BOX_TRAP_D) == BOX_TRAP_D){
+ else if (STYLE_IS(st, BOX_TRAP_D)){
#ifdef DEBUG
fprintf(stderr, "This is a 'downward' trapezium\n");
#endif
@@ -248,25 +248,69 @@ void draw_trapezium(int x1, int y1, char st, char fix){
right_c = '/';
left_c = '\\';
}
+ /* Long side */
for(i=xmin+1; i<=xmax; i++){
f(i, ylong, line_h);
}
- if (st & 0x02){ /* Centred trapezium */
- for(i=xmin+xoff; i<=xmax-xoff; i++){
+ /* short side */
+ for(i=xmin+xoff; i<=xmax-xoff; i++){
+ f(i, yshort, line_h);
+ }
+
+ if (STYLE_IS(st, BOX_TRAP_L)){
+ left_c = '/';
+ right_c = line_v;
+ for(i=xmax-xoff;i<xmax; i++){
f(i, yshort, line_h);
}
+ xoff = dy;
+ if (STYLE_IS(st, BOX_TRAP_D)){
+ xoff = 0;
+ left_c = '\\';
+ }
+ for(i=ymin; i<ymax; i++, xoff += xincr){
+ f(xmin+xoff, i, left_c);
+ f(xmax, i, right_c);
+ }
+ xoff = dy;
+ f(xmin+xoff, yshort, corner);
+ f(xmax, yshort, corner);
}
- f(xmin+xoff, yshort, corner);
+ else if (STYLE_IS(st, BOX_TRAP_R)){
+ right_c = '\\';
+ left_c = line_v;
+ for(i=xmin; i<xmin+xoff; i++){
+ f(i, yshort, line_h);
+ }
+ xoff = dy-1;
+ if (STYLE_IS(st, BOX_TRAP_D)){
+ xoff = 1;
+ right_c = '/';
+ }
+ for(i=ymin+1; i<ymax; i++, xoff += xincr){
+ f(xmin, i, left_c);
+ f(xmax-xoff, i, right_c);
+ }
+ xoff = dy;
+ f(xmin, yshort, corner);
+ f(xmax-xoff, yshort, corner);
+ }
+ else if (STYLE_IS(st, BOX_TRAP_C)){
+ xoff = dy - 1;
+ if (STYLE_IS(st, BOX_TRAP_D))
+ xoff = 1;
+ for(i=ymin+1; i<ymax; i++, xoff += xincr){
+ f(xmin + xoff, i, left_c);
+ f(xmax - xoff, i, right_c);
+ }
+ xoff = dy;
+ f(xmin+xoff, yshort, corner);
+ f(xmax-xoff, yshort, corner);
+ }
+
+
f(xmin, ylong, corner);
- f(xmax-xoff, yshort, corner);
f(xmax, ylong, corner);
- xoff --;
- if ((st & BOX_TRAP_DC) == BOX_TRAP_DC)
- xoff = 1;
- for(i=ymin+1; i<ymax; i++, xoff += xincr){
- f(xmin + xoff, i, left_c);
- f(xmax - xoff, i, right_c);
- }
if (fix == FIX)
diff --git a/gramscii.h b/gramscii.h
@@ -47,12 +47,16 @@
#define BOX_TRAP 0x20
#define BOX_TRAP_U 0x24
#define BOX_TRAP_D 0x28
+#define BOX_TRAP_R 0x21
+#define BOX_TRAP_C 0x22
+#define BOX_TRAP_L 0x23
#define BOX_TRAP_UR 0x25
#define BOX_TRAP_UC 0x26
#define BOX_TRAP_UL 0x27
#define BOX_TRAP_DL 0x29
#define BOX_TRAP_DC 0x2a
#define BOX_TRAP_DR 0x2b
+#define STYLE_IS(x, y) (((x) & (y) ) == y)
/**/
#define NOFIX 0x0
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.