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