Blame


1 5cedca1b 2004-05-15 devnull /* ti.c: classify line intersections */
2 5cedca1b 2004-05-15 devnull # include "t.h"
3 5cedca1b 2004-05-15 devnull /* determine local environment for intersections */
4 5cedca1b 2004-05-15 devnull
5 5cedca1b 2004-05-15 devnull int
6 5cedca1b 2004-05-15 devnull interv(int i, int c)
7 5cedca1b 2004-05-15 devnull {
8 5cedca1b 2004-05-15 devnull int ku, kl;
9 5cedca1b 2004-05-15 devnull
10 5cedca1b 2004-05-15 devnull if (c >= ncol || c == 0) {
11 5cedca1b 2004-05-15 devnull if (dboxflg) {
12 fa325e9b 2020-01-10 cross if (i == 0)
13 5cedca1b 2004-05-15 devnull return(BOT);
14 fa325e9b 2020-01-10 cross if (i >= nlin)
15 5cedca1b 2004-05-15 devnull return(TOP);
16 5cedca1b 2004-05-15 devnull return(THRU);
17 5cedca1b 2004-05-15 devnull }
18 5cedca1b 2004-05-15 devnull if (c >= ncol)
19 5cedca1b 2004-05-15 devnull return(0);
20 5cedca1b 2004-05-15 devnull }
21 5cedca1b 2004-05-15 devnull ku = i > 0 ? lefdata(i - 1, c) : 0;
22 5cedca1b 2004-05-15 devnull if (i + 1 >= nlin && allh(i))
23 5cedca1b 2004-05-15 devnull kl = 0;
24 5cedca1b 2004-05-15 devnull else
25 5cedca1b 2004-05-15 devnull kl = lefdata(allh(i) ? i + 1 : i, c);
26 fa325e9b 2020-01-10 cross if (ku == 2 && kl == 2)
27 5cedca1b 2004-05-15 devnull return(THRU);
28 fa325e9b 2020-01-10 cross if (ku == 2)
29 5cedca1b 2004-05-15 devnull return(TOP);
30 fa325e9b 2020-01-10 cross if (kl == BOT)
31 5cedca1b 2004-05-15 devnull return(2);
32 5cedca1b 2004-05-15 devnull return(0);
33 5cedca1b 2004-05-15 devnull }
34 5cedca1b 2004-05-15 devnull
35 5cedca1b 2004-05-15 devnull
36 5cedca1b 2004-05-15 devnull int
37 5cedca1b 2004-05-15 devnull interh(int i, int c)
38 5cedca1b 2004-05-15 devnull {
39 5cedca1b 2004-05-15 devnull int kl, kr;
40 5cedca1b 2004-05-15 devnull
41 5cedca1b 2004-05-15 devnull if (fullbot[i] == '=' || (dboxflg && (i == 0 || i >= nlin - 1))) {
42 5cedca1b 2004-05-15 devnull if (c == ncol)
43 5cedca1b 2004-05-15 devnull return(LEFT);
44 5cedca1b 2004-05-15 devnull if (c == 0)
45 5cedca1b 2004-05-15 devnull return(RIGHT);
46 5cedca1b 2004-05-15 devnull return(THRU);
47 5cedca1b 2004-05-15 devnull }
48 fa325e9b 2020-01-10 cross if (i >= nlin)
49 5cedca1b 2004-05-15 devnull return(0);
50 5cedca1b 2004-05-15 devnull kl = c > 0 ? thish (i, c - 1) : 0;
51 5cedca1b 2004-05-15 devnull if (kl <= 1 && i > 0 && allh(up1(i)))
52 5cedca1b 2004-05-15 devnull kl = c > 0 ? thish(up1(i), c - 1) : 0;
53 5cedca1b 2004-05-15 devnull kr = thish(i, c);
54 5cedca1b 2004-05-15 devnull if (kr <= 1 && i > 0 && allh(up1(i)))
55 5cedca1b 2004-05-15 devnull kr = c > 0 ? thish(up1(i), c) : 0;
56 fa325e9b 2020-01-10 cross if (kl == '=' && kr == '=')
57 5cedca1b 2004-05-15 devnull return(THRU);
58 fa325e9b 2020-01-10 cross if (kl == '=')
59 5cedca1b 2004-05-15 devnull return(LEFT);
60 fa325e9b 2020-01-10 cross if (kr == '=')
61 5cedca1b 2004-05-15 devnull return(RIGHT);
62 5cedca1b 2004-05-15 devnull return(0);
63 5cedca1b 2004-05-15 devnull }
64 5cedca1b 2004-05-15 devnull
65 5cedca1b 2004-05-15 devnull
66 5cedca1b 2004-05-15 devnull int
67 5cedca1b 2004-05-15 devnull up1(int i)
68 5cedca1b 2004-05-15 devnull {
69 5cedca1b 2004-05-15 devnull i--;
70 fa325e9b 2020-01-10 cross while (instead[i] && i > 0)
71 5cedca1b 2004-05-15 devnull i--;
72 5cedca1b 2004-05-15 devnull return(i);
73 5cedca1b 2004-05-15 devnull }