1 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
2 /*	  All Rights Reserved  	*/
3 
4 
5 /*
6  * Copyright (c) 1980 Regents of the University of California.
7  * All rights reserved. The Berkeley software License Agreement
8  * specifies the terms and conditions for redistribution.
9  */
10 
11 /*
12  * Copyright (c) 1983, 1984 1985, 1986, 1987, 1988, Sun Microsystems, Inc.
13  * All Rights Reserved.
14  */
15 
16 /*	from OpenSolaris "ti.c	1.3	05/06/02 SMI"	 SVr4.0 1.1		*/
17 
18 /*
19  * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany
20  *
21  * Sccsid @(#)ti.c	1.3 (gritter) 7/23/05
22  */
23 
24  /* ti.c: classify line intersections */
25 # include "t..c"
26 /* determine local environment for intersections */
27 int
interv(int i,int c)28 interv(int i, int c)
29 {
30 int ku, kl;
31 if (c>=ncol || c == 0)
32 	{
33 	if (dboxflg)
34 		{
35 		if (i==0) return(BOT);
36 		if (i>=nlin) return(TOP);
37 		return(THRU);
38 		}
39 	if (c>=ncol)
40 		return(0);
41 	}
42 ku = i>0 ? lefdata(i-1,c) : 0;
43 if (i+1 >= nlin)
44 	kl=0;
45 else
46 kl = lefdata(allh(i) ? i+1 : i, c);
47 if (ku==2 && kl==2) return(THRU);
48 if (ku ==2) return(TOP);
49 if (kl==BOT) return(2);
50 return(0);
51 }
52 int
interh(int i,int c)53 interh(int i, int c)
54 {
55 int kl, kr;
56 if (fullbot[i]== '=' || (dboxflg && (i==0 || i>= nlin-1)))
57 	{
58 	if (c==ncol)
59 		return(LEFT);
60 	if (c==0)
61 		return(RIGHT);
62 	return(THRU);
63 	}
64 if (i>=nlin) return(0);
65 kl = c>0 ? thish (i,c-1) : 0;
66 if (kl<=1 && i>0 && allh(up1(i)))
67 	kl = c>0 ? thish(up1(i),c-1) : 0;
68 kr = thish(i,c);
69 if (kr<=1 && i>0 && allh(up1(i)))
70 	kr = c>0 ? thish(up1(i), c) : 0;
71 if (kl== '=' && kr ==  '=') return(THRU);
72 if (kl== '=') return(LEFT);
73 if (kr== '=') return(RIGHT);
74 return(0);
75 }
76 int
up1(int i)77 up1(int i)
78 {
79 i--;
80 while (instead[i] && i>0) i--;
81 return(i);
82 }
83