123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- /* tt.c: subroutines for drawing horizontal lines */
- # include "t.h"
- int
- ctype(int il, int ic)
- {
- if (instead[il])
- return(0);
- if (fullbot[il])
- return(0);
- il = stynum[il];
- return(style[ic][il]);
- }
- int
- min(int a, int b)
- {
- return(a < b ? a : b);
- }
- int
- fspan(int i, int c)
- {
- c++;
- return(c < ncol && ctype(i, c) == 's');
- }
- int
- lspan(int i, int 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);
- }
- int
- ctspan(int i, int c)
- {
- int k;
- c++;
- for (k = 1; c < ncol && ctype(i, c) == 's'; k++)
- c++;
- return(k);
- }
- void
- tohcol(int ic)
- {
- if (ic == 0)
- Bprint(&tabout, "\\h'|0'");
- else
- Bprint(&tabout, "\\h'(|\\n(%2su+|\\n(%2su)/2u'", reg(ic, CLEFT),
- reg(ic - 1, CRIGHT));
- }
- int
- allh(int 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);
- if (i >= nlin)
- return(dboxflg || boxflg);
- for (one = c = 0; c < ncol; c++) {
- k = thish(i, c);
- if (k == 0)
- return(0);
- if (k == 1)
- continue;
- one = 1;
- }
- return(one);
- }
- int
- thish(int i, int 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);
- }
|