Commit | Line | Data |
---|---|---|
476fcd16 SL |
1 | #ifndef lint |
2 | static char sccsid[] = "@(#)tt.c 4.2 %G%"; | |
3 | #endif | |
caa88614 BS |
4 | |
5 | /* tt.c: subroutines for drawing horizontal lines */ | |
6 | # include "t..c" | |
7 | ctype(il, ic) | |
8 | { | |
9 | if (instead[il]) | |
10 | return(0); | |
11 | if (fullbot[il]) | |
12 | return(0); | |
13 | il = stynum[il]; | |
14 | return(style[il][ic]); | |
15 | } | |
16 | min(a,b) | |
17 | { | |
18 | return(a<b ? a : b); | |
19 | } | |
20 | fspan(i,c) | |
21 | { | |
22 | c++; | |
23 | return(c<ncol && ctype(i,c)=='s'); | |
24 | } | |
25 | lspan(i,c) | |
26 | { | |
27 | int k; | |
28 | if (ctype(i,c) != 's') return(0); | |
29 | c++; | |
30 | if (c < ncol && ctype(i,c)== 's') | |
31 | return(0); | |
32 | for(k=0; ctype(i,--c) == 's'; k++); | |
33 | return(k); | |
34 | } | |
35 | ctspan(i,c) | |
36 | { | |
37 | int k; | |
38 | c++; | |
39 | for(k=1; c<ncol && ctype(i,c)=='s'; k++) | |
40 | c++; | |
41 | return(k); | |
42 | } | |
43 | tohcol(ic) | |
44 | { | |
45 | if (ic==0) | |
46 | fprintf(tabout, "\\h'|0'"); | |
47 | else | |
48 | fprintf(tabout, "\\h'(|\\n(%du+|\\n(%du)/2u'", ic+CLEFT, ic+CRIGHT-1); | |
49 | } | |
50 | allh(i) | |
51 | { | |
52 | /* return true if every element in line i is horizontal */ | |
53 | /* also at least one must be horizontl */ | |
54 | int c, one, k; | |
55 | if (fullbot[i]) return(1); | |
56 | for(one=c=0; c<ncol; c++) | |
57 | { | |
58 | k = thish(i,c); | |
59 | if (k==0) return(0); | |
60 | if (k==1) continue; | |
61 | one=1; | |
62 | } | |
63 | return(one); | |
64 | } | |
65 | thish(i,c) | |
66 | { | |
67 | int t; | |
68 | char *s; | |
69 | struct colstr *pc; | |
70 | if (c<0)return(0); | |
71 | if (i<0) return(0); | |
72 | t = ctype(i,c); | |
73 | if (t=='_' || t == '-') | |
74 | return('-'); | |
75 | if (t=='=')return('='); | |
76 | if (t=='^') return(1); | |
77 | if (fullbot[i] ) | |
78 | return(fullbot[i]); | |
79 | if (t=='s') return(thish(i,c-1)); | |
80 | if (t==0) return(1); | |
81 | pc = &table[i][c]; | |
82 | s = (t=='a' ? pc->rcol : pc->col); | |
83 | if (s==0 || (point(s) && *s==0)) | |
84 | return(1); | |
85 | if (vspen(s)) return(1); | |
86 | if (t=barent( s)) | |
87 | return(t); | |
88 | return(0); | |
89 | } |