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 */
interv(i,c)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 }
interh(i,c)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 }
up1(i)59 up1(i)
60 {
61 i--;
62 while (instead[i] && i>0) i--;
63 return(i);
64 }
65