Esempio n. 1
0
static const char *glibe(int i, int c, int cl, int cr, int lintype) {
	const char *s = NULL;
	int tl, bl;
	int cx = c == cl ? 0 :
	         c == cr ? 2 : 1 ;
	lintype = lintype == '=' ? 1 : 0;
	if (!i) {
		bl = lefdata(1, c);
		if (bl >= 1 && bl <= 2)
			s = tlp ? "+" :
			    udbdc[lintype][0][bl][cx];
	} else if (i < nlin - 1) {
		tl = lefdata(i - 1, c);
		bl = lefdata(i + 1, c);
		if (tl >= 0 && tl <= 2 && bl >= 0 && bl <= 2)
		{
			if (tlp) {
				if (tl || bl) s = "+";
			} else
				s = udbdc[lintype][tl][bl][cx];
		}
	} else {
		tl = lefdata(i - 1, c);
		if (tl >= 1 && tl <= 2)
			s = tlp ? "+" :
			    udbdc[lintype][tl][0][cx];
	}
	return s;
}
Esempio n. 2
0
int
interv(int i, int c)
{
int ku, kl;
if (c>=ncol || c == 0)
	{
	if (dboxflg)
		{
		if (i==0) return(BOT);
		if (i>=nlin) return(TOP);
		return(THRU);
		}
	if (c>=ncol)
		return(0);
	}
ku = i>0 ? lefdata(i-1,c) : 0;
if (i+1 >= nlin)
	kl=0;
else
kl = lefdata(allh(i) ? i+1 : i, c);
if (ku==2 && kl==2) return(THRU);
if (ku ==2) return(TOP);
if (kl==BOT) return(2);
return(0);
}
Esempio n. 3
0
int
left(int i, int c, int *lwidp)
{
	int	kind, li, lj;
					/* returns -1 if no line to left */
					/* returns number of line where it starts */
					/* stores into lwid the kind of line */
	*lwidp = 0;
	if (i < 0)
		return(-1);
	kind = lefdata(i, c);
	if (kind == 0)
		return(-1);
	if (i + 1 < nlin)
		if (lefdata(next(i), c) == kind)
			return(-1);
	li = i;
	while (i >= 0 && lefdata(i, c) == kind)
		i = prev(li = i);
	if (prev(li) == -1)
		li = 0;
	*lwidp = kind;
	for (lj = i + 1; lj < li; lj++)
		if (instead[lj] && strcmp(instead[lj], ".TH") == 0)
			return(li);
	for (i = i + 1; i < li; i++)
		if (fullbot[i])
			li = i;
	return(li);
}