Let's try this. It's BUGGERED.
This commit is contained in:
parent
76e6aca867
commit
5cedca1b69
118 changed files with 26947 additions and 1 deletions
127
src/cmd/tbl/tt.c
Normal file
127
src/cmd/tbl/tt.c
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
/* 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);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue