Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/* tt.c: subroutines for drawing horizontal lines */
2
# include "t.h"
3
 
4
int
5
ctype(int il, int ic)
6
{
7
	if (instead[il])
8
		return(0);
9
	if (fullbot[il])
10
		return(0);
11
	il = stynum[il];
12
	return(style[ic][il]);
13
}
14
 
15
 
16
int
17
min(int a, int b)
18
{
19
	return(a < b ? a : b);
20
}
21
 
22
 
23
int
24
fspan(int i, int c)
25
{
26
	c++;
27
	return(c < ncol && ctype(i, c) == 's');
28
}
29
 
30
 
31
int
32
lspan(int i, int c)
33
{
34
	int	k;
35
 
36
	if (ctype(i, c) != 's') 
37
		return(0);
38
	c++;
39
	if (c < ncol && ctype(i, c) == 's')
40
		return(0);
41
	for (k = 0; ctype(i, --c) == 's'; k++)
42
		;
43
	return(k);
44
}
45
 
46
 
47
int
48
ctspan(int i, int c)
49
{
50
	int	k;
51
	c++;
52
	for (k = 1; c < ncol && ctype(i, c) == 's'; k++)
53
		c++;
54
	return(k);
55
}
56
 
57
 
58
void
59
tohcol(int ic)
60
{
61
	if (ic == 0)
62
		Bprint(&tabout, "\\h'|0'");
63
	else
64
		Bprint(&tabout, "\\h'(|\\n(%2su+|\\n(%2su)/2u'", reg(ic, CLEFT),
65
		     reg(ic - 1, CRIGHT));
66
}
67
 
68
 
69
int
70
allh(int i)
71
{
72
			/* return true if every element in line i is horizontal */
73
				/* also at least one must be horizontl */
74
	int	c, one, k;
75
 
76
	if (fullbot[i]) 
77
		return(1);
78
	if (i >= nlin) 
79
		return(dboxflg || boxflg);
80
	for (one = c = 0; c < ncol; c++) {
81
		k = thish(i, c);
82
		if (k == 0) 
83
			return(0);
84
		if (k == 1) 
85
			continue;
86
		one = 1;
87
	}
88
	return(one);
89
}
90
 
91
 
92
int
93
thish(int i, int c)
94
{
95
	int	t;
96
	char	*s;
97
	struct colstr *pc;
98
 
99
	if (c < 0)
100
		return(0);
101
	if (i < 0) 
102
		return(0);
103
	t = ctype(i, c);
104
	if (t == '_' || t == '-')
105
		return('-');
106
	if (t == '=')
107
		return('=');
108
	if (t == '^') 
109
		return(1);
110
	if (fullbot[i] )
111
		return(fullbot[i]);
112
	if (t == 's') 
113
		return(thish(i, c - 1));
114
	if (t == 0) 
115
		return(1);
116
	pc = &table[i][c];
117
	s = (t == 'a' ? pc->rcol : pc->col);
118
	if (s == 0 || (point(s) && *s == 0))
119
		return(1);
120
	if (vspen(s)) 
121
		return(1);
122
	if (t = barent( s))
123
		return(t);
124
	return(0);
125
}
126
 
127