125065Sjaap #ifndef lint
2*25088Sjaap static char sccsid[] = "@(#)intersect.c 1.2 (CWI) 85/10/02";
325065Sjaap #endif lint
425065Sjaap
525065Sjaap
6*25088Sjaap /*
7*25088Sjaap * classify line intersections
8*25088Sjaap */
925065Sjaap
1025065Sjaap #include "defs.h"
1125065Sjaap #include "ext.h"
1225065Sjaap
1325065Sjaap /*
1425065Sjaap * determine local environment for intersections
1525065Sjaap */
interv(i,c)1625065Sjaap interv(i, c){
1725065Sjaap register int ku, kl;
1825065Sjaap
1925065Sjaap if(c >= ncol || c == 0){
2025065Sjaap if(dboxflg){
2125065Sjaap if(i == 0)
2225065Sjaap return(BOT);
2325065Sjaap if(i >= nlin)
2425065Sjaap return(TOP);
2525065Sjaap return(THRU);
2625065Sjaap }
2725065Sjaap if(c >= ncol)
2825065Sjaap return(0);
2925065Sjaap }
3025065Sjaap ku = i > 0 ? lefdata(i - 1, c) : 0;
3125065Sjaap if(i + 1 >= nlin)
3225065Sjaap kl = 0;
3325065Sjaap else
3425065Sjaap kl = lefdata(allh (i) ? i + 1 : i, c);
3525065Sjaap if(ku == 2 && kl == 2)
3625065Sjaap return(THRU);
3725065Sjaap if(ku == 2)
3825065Sjaap return(TOP);
3925065Sjaap if(kl == BOT)
4025065Sjaap return(2);
4125065Sjaap return(0);
4225065Sjaap }
4325065Sjaap
interh(i,c)4425065Sjaap interh(i, c){
4525065Sjaap register int kl, kr;
4625065Sjaap
4725065Sjaap if(fullbot[i] == '=' || (dboxflg && (i == 0 || i >= nlin - 1))){
4825065Sjaap if(c == ncol)
4925065Sjaap return(LEFT);
5025065Sjaap if(c == 0)
5125065Sjaap return(RIGHT);
5225065Sjaap return(THRU);
5325065Sjaap }
5425065Sjaap if(i >= nlin)
5525065Sjaap return(0);
5625065Sjaap kl = c > 0 ? thish(i, c - 1) : 0;
5725065Sjaap if(kl <= 1 && i > 0 && allh(up1 (i)))
5825065Sjaap kl = c > 0 ? thish(up1 (i), c - 1) : 0;
5925065Sjaap kr = thish(i, c);
6025065Sjaap if(kr <= 1 && i > 0 && allh(up1 (i)))
6125065Sjaap kr = c > 0 ? thish(up1 (i), c) : 0;
6225065Sjaap if(kl == '=' && kr == '=')
6325065Sjaap return(THRU);
6425065Sjaap if(kl == '=')
6525065Sjaap return(LEFT);
6625065Sjaap if(kr == '=')
6725065Sjaap return(RIGHT);
6825065Sjaap return(0);
6925065Sjaap }
7025065Sjaap
up1(i)7125065Sjaap up1(i){
7225065Sjaap i--;
7325065Sjaap while(instead[i] && i > 0)
7425065Sjaap i--;
7525065Sjaap return(i);
7625065Sjaap }
77