home *** CD-ROM | disk | FTP | other *** search
- /* tt.c: subroutines for drawing horizontal lines */
- # include "t..c"
- ctype(il, ic)
- {
- if (instead[il])
- return(0);
- if (fullbot[il])
- return(0);
- il = stynum[il];
- return(style[il][ic]);
- }
- min(a,b)
- {
- return(a<b ? a : b);
- }
- fspan(i,c)
- {
- c++;
- return(c<ncol && ctype(i,c)=='s');
- }
- lspan(i,c)
- {
- int k;
- if (ctype(i,c) != 's') return(0);
- c++;
- if (c < ncol && ctype(i,c)== 's')
- return(0);
- for(k=0; ctype(i,--c) == 's'; k++);
- return(k);
- }
- ctspan(i,c)
- {
- int k;
- c++;
- for(k=1; c<ncol && ctype(i,c)=='s'; k++)
- c++;
- return(k);
- }
- tohcol(ic)
- {
- if (ic==0)
- fprintf(tabout, "\\h'|0'");
- else
- fprintf(tabout, "\\h'(|\\n(%du+|\\n(%du)/2u'", ic+CLEFT, ic+CRIGHT-1);
- }
- allh(i)
- {
- /* return true if every element in line i is horizontal */
- /* also at least one must be horizontl */
- int c, one, k;
- if (fullbot[i]) return(1);
- for(one=c=0; c<ncol; c++)
- {
- k = thish(i,c);
- if (k==0) return(0);
- if (k==1) continue;
- one=1;
- }
- return(one);
- }
- thish(i,c)
- {
- int t;
- char *s;
- struct colstr *pc;
- if (c<0)return(0);
- if (i<0) return(0);
- t = ctype(i,c);
- if (t=='_' || t == '-')
- return('-');
- if (t=='=')return('=');
- if (t=='^') return(1);
- if (fullbot[i] )
- return(fullbot[i]);
- if (t=='s') return(thish(i,c-1));
- if (t==0) return(1);
- pc = &table[i][c];
- s = (t=='a' ? pc->rcol : pc->col);
- if (s==0 || (point(s) && *s==0))
- return(1);
- if (vspen(s)) return(1);
- if (t=barent( s))
- return(t);
- return(0);
- }
-