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