|
|
1.1 root 1: #ifndef lint
2: static char sccsid[] = "@(#)tt.c 4.2 8/11/83";
3: #endif
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.