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