1 /*- 2 * %sccs.include.proprietary.c% 3 */ 4 5 #ifndef lint 6 static char sccsid[] = "@(#)ti.c 4.3 (Berkeley) 04/18/91"; 7 #endif /* not lint */ 8 9 /* ti.c: classify line intersections */ 10 # include "t..c" 11 /* determine local environment for intersections */ 12 interv(i,c) 13 { 14 int ku, kl; 15 if (c>=ncol || c == 0) 16 { 17 if (dboxflg) 18 { 19 if (i==0) return(BOT); 20 if (i>=nlin) return(TOP); 21 return(THRU); 22 } 23 if (c>=ncol) 24 return(0); 25 } 26 ku = i>0 ? lefdata(i-1,c) : 0; 27 if (i+1 >= nlin) 28 kl=0; 29 else 30 kl = lefdata(allh(i) ? i+1 : i, c); 31 if (ku==2 && kl==2) return(THRU); 32 if (ku ==2) return(TOP); 33 if (kl==BOT) return(2); 34 return(0); 35 } 36 interh(i,c) 37 { 38 int kl, kr; 39 if (fullbot[i]== '=' || (dboxflg && (i==0 || i>= nlin-1))) 40 { 41 if (c==ncol) 42 return(LEFT); 43 if (c==0) 44 return(RIGHT); 45 return(THRU); 46 } 47 if (i>=nlin) return(0); 48 kl = c>0 ? thish (i,c-1) : 0; 49 if (kl<=1 && i>0 && allh(up1(i))) 50 kl = c>0 ? thish(up1(i),c-1) : 0; 51 kr = thish(i,c); 52 if (kr<=1 && i>0 && allh(up1(i))) 53 kr = c>0 ? thish(up1(i), c) : 0; 54 if (kl== '=' && kr == '=') return(THRU); 55 if (kl== '=') return(LEFT); 56 if (kr== '=') return(RIGHT); 57 return(0); 58 } 59 up1(i) 60 { 61 i--; 62 while (instead[i] && i>0) i--; 63 return(i); 64 } 65