| /* 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); |
| } |
| |
| |