xref: /original-bsd/old/tbl/ti.c (revision bd226a66)
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