aboutsummaryrefslogtreecommitdiffstats
path: root/table.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--table.c402
1 files changed, 193 insertions, 209 deletions
diff --git a/table.c b/table.c
index d9e44fa..4793ba8 100644
--- a/table.c
+++ b/table.c
@@ -1,4 +1,4 @@
-/* $Id: table.c,v 1.7 2001/11/23 18:35:06 ukai Exp $ */
+/* $Id: table.c,v 1.8 2001/11/24 02:01:26 ukai Exp $ */
/*
* HTML table
*/
@@ -14,21 +14,27 @@
#ifdef KANJI_SYMBOLS
static char *rule[] =
-{"走", "豆", "豕", "見", "貝", "芍", "角", "07", "赤", "谷", "芋", "0B", "言", "0D", "0E", " "};
+ { "走", "豆", "豕", "見", "貝", "芍", "角", "07", "赤", "谷", "芋", "0B",
+ "言", "0D", "0E", " "
+};
static char *ruleB[] =
-{"00", "邢", "邪", "車", "邦", "身", "辛", "07", "那", "迂", "足", "0B", "辰", "0D", "0E", " "};
+ { "00", "邢", "邪", "車", "邦", "身", "辛", "07", "那", "迂", "足", "0B",
+ "辰", "0D", "0E", " "
+};
#define TN_VERTICALBAR "芍"
#define HORIZONTALBAR "足"
#define RULE_WIDTH 2
#else /* not KANJI_SYMBOLS */
char alt_rule[] = {
-'+', '|', '-', '+', '|', '|', '+', ' ', '-', '+', '-', ' ', '+', ' ', ' ', ' '};
+ '+', '|', '-', '+', '|', '|', '+', ' ', '-', '+', '-', ' ', '+', ' ', ' ',
+ ' '
+};
#if defined(__EMX__)&&!defined(JP_CHARSET)
-extern int CodePage;
+extern int CodePage;
-static char *_rule[] =
+static char *_rule[] =
#else
-static char *rule[] =
+static char *rule[] =
#endif
{
"<_RULE TYPE=0>+</_RULE>",
@@ -49,15 +55,17 @@ static char *rule[] =
"<_RULE TYPE=15> </_RULE>"
};
#if defined(__EMX__)&&!defined(JP_CHARSET)
-static char **ruleB = _rule, **rule = _rule;
+static char **ruleB = _rule, **rule = _rule;
static char *rule850[] = {
- "\305", "\303", "\302", "\332", "\264", "\263" , "\277", "07",
- "\301", "\300", "\304", "0B", "\331", "0D", "0E", " " };
+ "\305", "\303", "\302", "\332", "\264", "\263", "\277", "07",
+ "\301", "\300", "\304", "0B", "\331", "0D", "0E", " "
+};
static char *ruleB850[] = {
- "\316", "\314", "\313", "\311" "\271", "\272", "\273", "07",
- "\312", "\310", "\315", "0B", "\274", "0D", "0E", " " };
-#else /* not __EMX__ or JP_CHARSET */
-static char **ruleB = rule;
+ "\316", "\314", "\313", "\311" "\271", "\272", "\273", "07",
+ "\312", "\310", "\315", "0B", "\274", "0D", "0E", " "
+};
+#else /* not __EMX__ or JP_CHARSET */
+static char **ruleB = rule;
#endif /* not __EMX__ or JP_CHARSET */
#define TN_VERTICALBAR "<_RULE TYPE=5>|</_RULE>"
@@ -116,15 +124,15 @@ weight(int x)
{
if (x < COLS)
- return (double) x;
+ return (double)x;
else
- return COLS * (log((double) x / COLS) + 1.);
+ return COLS * (log((double)x / COLS) + 1.);
}
static double
weight2(int a)
{
- return (double) a / COLS * 4 + 1.;
+ return (double)a / COLS * 4 + 1.;
}
#define sigma_td(a) (0.5*weight2(a)) /* <td width=...> */
@@ -139,15 +147,15 @@ weight3(int x)
if (x < 0.1)
return 0.1;
if (x < LOG_MIN)
- return (double) x;
+ return (double)x;
else
- return LOG_MIN * (log((double) x / LOG_MIN) + 1.);
+ return LOG_MIN * (log((double)x / LOG_MIN) + 1.);
}
#endif /* not MATRIX */
static int
bsearch_2short(short e1, short *ent1, short e2, short *ent2, int base,
- char *index, int nent)
+ char *index, int nent)
{
int n = nent;
int k = 0;
@@ -234,7 +242,7 @@ dv2sv(double *dv, short *iv, int size)
edv = NewAtom_N(double, size);
for (i = 0; i < size; i++) {
iv[i] = ceil(dv[i]);
- edv[i] = (double) iv[i] - dv[i];
+ edv[i] = (double)iv[i] - dv[i];
}
w = 0.;
@@ -246,10 +254,10 @@ dv2sv(double *dv, short *iv, int size)
bcopy(index + i, index + i + 1, k - i);
index[i] = k;
}
- iw = min((int) (w + 0.5), size);
+ iw = min((int)(w + 0.5), size);
if (iw == 0)
return;
- x = edv[(int) index[iw - 1]];
+ x = edv[(int)index[iw - 1]];
for (i = 0; i < size; i++) {
k = index[i];
if (i >= iw && abs(edv[k] - x) > 1e-6)
@@ -263,7 +271,7 @@ static int
table_colspan(struct table *t, int row, int col)
{
int i;
- for (i = col + 1; i <= t->maxcol && (t->tabattr[row][i] & HTT_X); i++);
+ for (i = col + 1; i <= t->maxcol && (t->tabattr[row][i] & HTT_X); i++) ;
return i - col;
}
@@ -274,7 +282,7 @@ table_rowspan(struct table *t, int row, int col)
if (!t->tabattr[row])
return 0;
for (i = row + 1; i <= t->maxrow && t->tabattr[i] &&
- (t->tabattr[i][col] & HTT_Y); i++);
+ (t->tabattr[i][col] & HTT_Y); i++) ;
return i - row;
}
@@ -452,7 +460,7 @@ suspend_or_pushdata(struct table *tbl, char *line)
pushText(tbl->suspended_data, line);
}
}
-
+
int visible_length_offset = 0;
int
visible_length(char *str)
@@ -472,7 +480,8 @@ visible_length(char *str)
Strclear(tagbuf);
Strcat_char(tagbuf, *str);
}
- else if (status == R_ST_TAG || status == R_ST_DQUOTE || status == R_ST_QUOTE || status == R_ST_EQL) {
+ else if (status == R_ST_TAG || status == R_ST_DQUOTE
+ || status == R_ST_QUOTE || status == R_ST_EQL) {
Strcat_char(tagbuf, *str);
}
else if (status == R_ST_AMP) {
@@ -504,12 +513,13 @@ visible_length(char *str)
len++;
} while ((visible_length_offset + len) % Tabstop != 0);
}
- else if (*str == '\n' || *str == '\r') {
- if (len > max_len) max_len = len;
- len = 0;
- }
- else if (*str == '\n' || *str == '\r')
- len = 0;
+ else if (*str == '\n' || *str == '\r') {
+ if (len > max_len)
+ max_len = len;
+ len = 0;
+ }
+ else if (*str == '\n' || *str == '\r')
+ len = 0;
str++;
}
if (status == R_ST_AMP) {
@@ -529,7 +539,7 @@ maximum_visible_length(char *str)
int maxlen, len;
char *p;
- for (p = str; *p && *p != '\t'; p++);
+ for (p = str; *p && *p != '\t'; p++) ;
visible_length_offset = 0;
maxlen = visible_length(str);
@@ -591,9 +601,7 @@ align(TextLine *lbuf, int width, int mode)
}
void
-print_item(struct table *t,
- int row, int col, int width,
- Str buf)
+print_item(struct table *t, int row, int col, int width, Str buf)
{
int alignment;
TextLine *lbuf;
@@ -628,18 +636,16 @@ print_item(struct table *t,
#define T_BOTTOM 2
void
-print_sep(struct table *t,
- int row, int type, int maxcol,
- Str buf)
+print_sep(struct table *t, int row, int type, int maxcol, Str buf)
{
int forbid;
char **rulep;
int i, j, k, l, m;
#if defined(__EMX__)&&!defined(JP_CHARSET)
- if(CodePage==850){
+ if (CodePage == 850) {
ruleB = ruleB850;
- rule = rule850;
+ rule = rule850;
}
#endif
if (row >= 0)
@@ -668,15 +674,19 @@ print_sep(struct table *t,
goto do_last_sep;
}
else {
- for (k = row; k >= 0 && t->tabattr[k] && (t->tabattr[k][i] & HTT_Y); k--);
+ for (k = row;
+ k >= 0 && t->tabattr[k] && (t->tabattr[k][i] & HTT_Y);
+ k--) ;
m = t->tabwidth[i] + 2 * t->cellpadding;
- for (l = i + 1; l <= t->maxcol && (t->tabattr[row][l] & HTT_X); l++)
+ for (l = i + 1; l <= t->maxcol && (t->tabattr[row][l] & HTT_X);
+ l++)
m += t->tabwidth[l] + t->cellspacing;
print_item(t, k, i, m, buf);
}
}
else {
- for (j = 0; j < t->tabwidth[i] + 2 * t->cellpadding; j += RULE_WIDTH) {
+ for (j = 0; j < t->tabwidth[i] + 2 * t->cellpadding;
+ j += RULE_WIDTH) {
Strcat_charp(buf, rulep[forbid]);
}
}
@@ -743,8 +753,7 @@ do_refill(struct table *tbl, int row, int col, int maxlimit)
struct environment envs[MAX_ENV_LEVEL];
int colspan, icell;
- if (tbl->tabdata[row] == NULL ||
- tbl->tabdata[row][col] == NULL)
+ if (tbl->tabdata[row] == NULL || tbl->tabdata[row][col] == NULL)
return;
orgdata = (TextList *)tbl->tabdata[row][col];
tbl->tabdata[row][col] = newGeneralList();
@@ -782,8 +791,7 @@ do_refill(struct table *tbl, int row, int col, int maxlimit)
if (alignment != ALIGN_LEFT) {
for (ti = tbl->tables[id].buf->first;
- ti != NULL;
- ti = ti->next)
+ ti != NULL; ti = ti->next)
align(ti->ptr, h_env.limit, alignment);
}
appendTextLineList(h_env.buf, tbl->tables[id].buf);
@@ -938,7 +946,7 @@ set_integered_width(struct table *t, double *dwidth, short *iwidth)
mod = NewAtom_N(double, t->maxcol + 1);
for (i = 0; i <= t->maxcol; i++) {
iwidth[i] = ceil_at_intervals(ceil(dwidth[i]), rulewidth);
- mod[i] = (double) iwidth[i] - dwidth[i];
+ mod[i] = (double)iwidth[i] - dwidth[i];
}
sum = 0.;
@@ -974,7 +982,7 @@ set_integered_width(struct table *t, double *dwidth, short *iwidth)
fixed[ii] = 2;
if (fixed[ii] < 1 &&
iwidth[ii] - rulewidth < t->tabwidth[ii] &&
- (double) rulewidth - mod[ii] > 0.5)
+ (double)rulewidth - mod[ii] > 0.5)
fixed[ii] = 1;
}
idx = NewAtom_N(char, n);
@@ -998,26 +1006,26 @@ set_integered_width(struct table *t, double *dwidth, short *iwidth)
width += iwidth[kk];
w = 0;
for (kk = 0; kk < m; kk++) {
- if (fixed[(int) idx[kk]] < 2)
+ if (fixed[(int)idx[kk]] < 2)
w += rulewidth;
}
if (width - w < cell->minimum_width[j]) {
for (kk = 0; kk < m; kk++) {
- if (fixed[(int) idx[kk]] < 2)
- fixed[(int) idx[kk]] = 2;
+ if (fixed[(int)idx[kk]] < 2)
+ fixed[(int)idx[kk]] = 2;
}
}
w = 0;
for (kk = 0; kk < m; kk++) {
- if (fixed[(int) idx[kk]] < 1 &&
- (double) rulewidth - mod[(int) idx[kk]] > 0.5)
+ if (fixed[(int)idx[kk]] < 1 &&
+ (double)rulewidth - mod[(int)idx[kk]] > 0.5)
w += rulewidth;
}
if (width - w < cell->width[j]) {
for (kk = 0; kk < m; kk++) {
- if (fixed[(int) idx[kk]] < 1 &&
- (double) rulewidth - mod[(int) idx[kk]] > 0.5)
- fixed[(int) idx[kk]] = 1;
+ if (fixed[(int)idx[kk]] < 1 &&
+ (double)rulewidth - mod[(int)idx[kk]] > 0.5)
+ fixed[(int)idx[kk]] = 1;
}
}
}
@@ -1027,7 +1035,7 @@ set_integered_width(struct table *t, double *dwidth, short *iwidth)
if (fixed[ii] <= step)
nn++;
}
- nsum = sum - (double) (nn * rulewidth);
+ nsum = sum - (double)(nn * rulewidth);
if (nsum < 0. && fabs(sum) <= fabs(nsum))
return;
for (k = 0; k < n; k++) {
@@ -1061,7 +1069,7 @@ static double
correlation_coefficient2(double sxx, double syy, double sxy)
{
double coe, tmp;
- tmp = (syy + sxx - 2*sxy) * sxx;
+ tmp = (syy + sxx - 2 * sxy) * sxx;
if (tmp < Tiny)
tmp = Tiny;
coe = (sxx - sxy) / sqrt(tmp);
@@ -1074,13 +1082,11 @@ correlation_coefficient2(double sxx, double syy, double sxy)
static double
recalc_width(double old, double swidth, int cwidth,
- double sxx, double syy, double sxy,
- int is_inclusive)
+ double sxx, double syy, double sxy, int is_inclusive)
{
- double delta = swidth - (double) cwidth;
+ double delta = swidth - (double)cwidth;
double rat = sxy / sxx,
- coe = correlation_coefficient(sxx, syy, sxy),
- w, ww;
+ coe = correlation_coefficient(sxx, syy, sxy), w, ww;
if (old < 0.)
old = 0.;
if (fabs(coe) < 1e-5)
@@ -1132,13 +1138,13 @@ check_compressible_cell(struct table *t, MAT * minv,
if (icol >= 0) {
owidth = newwidth[icol];
- delta = newwidth[icol] - (double) t->tabwidth[icol];
+ delta = newwidth[icol] - (double)t->tabwidth[icol];
bcol = icol;
ecol = bcol + 1;
}
else if (icell >= 0) {
owidth = swidth[icell];
- delta = swidth[icell] - (double) cwidth[icell];
+ delta = swidth[icell] - (double)cwidth[icell];
bcol = cell->col[icell];
ecol = bcol + cell->colspan[icell];
}
@@ -1171,12 +1177,10 @@ check_compressible_cell(struct table *t, MAT * minv,
}
if (sxy > 0.)
dmin = recalc_width(dmin, swidth[j], cwidth[j],
- sxx, Sxx[j], sxy,
- is_inclusive);
+ sxx, Sxx[j], sxy, is_inclusive);
else
dmax = recalc_width(dmax, swidth[j], cwidth[j],
- sxx, Sxx[j], sxy,
- is_inclusive);
+ sxx, Sxx[j], sxy, is_inclusive);
}
for (m = 0; m <= t->maxcol; m++) {
int is_inclusive = 0;
@@ -1192,14 +1196,12 @@ check_compressible_cell(struct table *t, MAT * minv,
}
if (sxy > 0.)
dmin = recalc_width(dmin, newwidth[m], t->tabwidth[m],
- sxx, m_entry(minv, m, m), sxy,
- is_inclusive);
+ sxx, m_entry(minv, m, m), sxy, is_inclusive);
else
dmax = recalc_width(dmax, newwidth[m], t->tabwidth[m],
- sxx, m_entry(minv, m, m), sxy,
- is_inclusive);
+ sxx, m_entry(minv, m, m), sxy, is_inclusive);
}
- _end:
+ _end:
if (dmax > 0. && dmin > dmax)
dmin = dmax;
span = ecol - bcol;
@@ -1261,8 +1263,7 @@ check_table_width(struct table *t, double *newwidth, MAT * minv, int itr)
/* compress table */
corr = check_compressible_cell(t, minv, newwidth, swidth,
- cwidth, twidth, Sxx,
- -1, -1, stotal, corr);
+ cwidth, twidth, Sxx, -1, -1, stotal, corr);
if (itr < MAX_ITERATION && corr > 0)
return corr;
@@ -1270,7 +1271,7 @@ check_table_width(struct table *t, double *newwidth, MAT * minv, int itr)
for (k = cell->maxcell; k >= 0; k--) {
j = cell->index[k];
corr = check_compressible_cell(t, minv, newwidth, swidth,
- cwidth, twidth, Sxx,
+ cwidth, twidth, Sxx,
-1, j, Sxx[j], corr);
if (itr < MAX_ITERATION && corr > 0)
return corr;
@@ -1279,7 +1280,7 @@ check_table_width(struct table *t, double *newwidth, MAT * minv, int itr)
/* compress single column cell */
for (i = 0; i <= t->maxcol; i++) {
corr = check_compressible_cell(t, minv, newwidth, swidth,
- cwidth, twidth, Sxx,
+ cwidth, twidth, Sxx,
i, -1, m_entry(minv, i, i), corr);
if (itr < MAX_ITERATION && corr > 0)
return corr;
@@ -1323,7 +1324,8 @@ check_table_width(struct table *t, double *newwidth, MAT * minv, int itr)
ecol = bcol + cell->colspan[j];
for (i = bcol; i < ecol; i++)
nwidth += corwidth[i];
- mwidth = cell->minimum_width[j] - (cell->colspan[j] - 1) * t->cellspacing;
+ mwidth =
+ cell->minimum_width[j] - (cell->colspan[j] - 1) * t->cellspacing;
if (mwidth > swidth[j] && mwidth == nwidth) {
double w = (sx > 0.5) ? 0.5 : sx * 0.2;
@@ -1411,7 +1413,7 @@ set_table_width(struct table *t, short *newwidth, int maxwidth)
if (!fixed[i])
dwidth[i] = (width - fwidth) * weight3(t->tabwidth[i]) / s;
else
- dwidth[i] = (double) newwidth[i];
+ dwidth[i] = (double)newwidth[i];
}
dv2sv(dwidth, newwidth, cell->colspan[j]);
if (cell->fixed_width[j] > 0) {
@@ -1447,7 +1449,7 @@ set_table_width(struct table *t, short *newwidth, int maxwidth)
if (!fixed[i])
dwidth[i] = (width - fwidth) * weight3(t->tabwidth[i]) / s;
else
- dwidth[i] = (double) newwidth[i];
+ dwidth[i] = (double)newwidth[i];
}
dv2sv(dwidth, newwidth, t->maxcol + 1);
@@ -1502,29 +1504,28 @@ check_table_height(struct table *t)
if (rowspan > 1) {
int c = cell.maxcell + 1;
k = bsearch_2short(rowspan, cell.rowspan,
- j, cell.row, t->maxrow + 1,
- cell.index, c);
+ j, cell.row, t->maxrow + 1, cell.index, c);
if (k <= cell.maxcell) {
int idx = cell.index[k];
- if (cell.row[idx] == j &&
- cell.rowspan[idx] == rowspan)
+ if (cell.row[idx] == j && cell.rowspan[idx] == rowspan)
c = idx;
}
- if (c < MAXCELL) {
- if (c > cell.maxcell) {
- cell.maxcell++;
- cell.row[cell.maxcell] = j;
- cell.rowspan[cell.maxcell] = rowspan;
- cell.height[cell.maxcell] = 0;
- if (cell.maxcell > k)
- bcopy(cell.index + k, cell.index + k + 1, cell.maxcell - k);
- cell.index[k] = cell.maxcell;
- }
-
- if (cell.height[c] < t_dep)
- cell.height[c] = t_dep;
+ if (c < MAXCELL) {
+ if (c > cell.maxcell) {
+ cell.maxcell++;
+ cell.row[cell.maxcell] = j;
+ cell.rowspan[cell.maxcell] = rowspan;
+ cell.height[cell.maxcell] = 0;
+ if (cell.maxcell > k)
+ bcopy(cell.index + k, cell.index + k + 1,
+ cell.maxcell - k);
+ cell.index[k] = cell.maxcell;
+ }
+
+ if (cell.height[c] < t_dep)
+ cell.height[c] = t_dep;
}
- continue;
+ continue;
}
if (t->tabheight[j] < t_dep)
t->tabheight[j] = t_dep;
@@ -1548,8 +1549,7 @@ check_table_height(struct table *t)
#define CHECK_FIXED 2
int
-get_table_width(struct table *t, short *orgwidth, short *cellwidth,
- int flag)
+get_table_width(struct table *t, short *orgwidth, short *cellwidth, int flag)
{
#ifdef __GNUC__
short newwidth[t->maxcol + 1];
@@ -1630,8 +1630,7 @@ renderCoTable(struct table *tbl, int maxlimit)
else if (t->total_width > 0)
maxwidth = t->total_width;
else
- maxwidth = t->total_width =
- -t->total_width * h_env.limit / 100;
+ maxwidth = t->total_width = -t->total_width * h_env.limit / 100;
renderTable(t, maxwidth, &h_env);
}
}
@@ -1648,17 +1647,17 @@ make_caption(struct table *t, struct html_feed_environ *h_env)
return;
if (t->total_width > 0)
- limit = t->total_width;
+ limit = t->total_width;
else
- limit = h_env->limit;
+ limit = h_env->limit;
init_henv(&henv, &obuf, envs, MAX_ENV_LEVEL, newTextLineList(),
- limit, h_env->envs[h_env->envc].indent);
+ limit, h_env->envs[h_env->envc].indent);
HTMLlineproc1("<center>", &henv);
HTMLlineproc0(t->caption->ptr, &henv, FALSE);
HTMLlineproc1("</center>", &henv);
if (t->total_width < henv.maxlimit)
- t->total_width = henv.maxlimit;
+ t->total_width = henv.maxlimit;
limit = h_env->limit;
h_env->limit = t->total_width;
HTMLlineproc1("<center>", h_env);
@@ -1668,9 +1667,7 @@ make_caption(struct table *t, struct html_feed_environ *h_env)
}
void
-renderTable(struct table *t,
- int max_width,
- struct html_feed_environ *h_env)
+renderTable(struct table *t, int max_width, struct html_feed_environ *h_env)
{
int i, j, w, r, h;
Str renderbuf;
@@ -1698,12 +1695,12 @@ renderTable(struct table *t,
max_width = t->sloppy_width;
rulewidth = table_rule_width(t);
-
+
max_width -= table_border_width(t);
if (rulewidth > 1)
max_width = floor_at_intervals(max_width, rulewidth);
-
+
if (max_width < rulewidth)
max_width = rulewidth;
@@ -1801,8 +1798,7 @@ renderTable(struct table *t,
TextLineList *l;
int k;
if ((t->tabattr[j][i] & HTT_Y) ||
- (t->tabattr[j][i] & HTT_TOP) ||
- (t->tabdata[j][i] == NULL))
+ (t->tabattr[j][i] & HTT_TOP) || (t->tabdata[j][i] == NULL))
continue;
h = t->tabheight[j];
for (k = j + 1; k <= t->maxrow; k++) {
@@ -1846,7 +1842,7 @@ renderTable(struct table *t,
case BORDER_THICK:
renderbuf = Strnew();
print_sep(t, -1, T_TOP, t->maxcol, renderbuf);
- push_render_image(renderbuf, width, t->total_width, h_env);
+ push_render_image(renderbuf, width, t->total_width, h_env);
t->total_height += 1;
break;
}
@@ -1865,7 +1861,7 @@ renderTable(struct table *t,
Strcat_charp(vrulec, TK_VERTICALBAR(t->border_mode));
case BORDER_NOWIN:
#if defined(__EMX__)&&!defined(JP_CHARSET)
- Strcat_charp(vruleb, CodePage==850?"\263":TN_VERTICALBAR);
+ Strcat_charp(vruleb, CodePage == 850 ? "\263" : TN_VERTICALBAR);
#else
Strcat_charp(vruleb, TN_VERTICALBAR);
#endif
@@ -1880,7 +1876,8 @@ renderTable(struct table *t,
for (r = 0; r <= t->maxrow; r++) {
for (h = 0; h < t->tabheight[r]; h++) {
renderbuf = Strnew();
- if (t->border_mode == BORDER_THIN || t->border_mode == BORDER_THICK)
+ if (t->border_mode == BORDER_THIN
+ || t->border_mode == BORDER_THICK)
Strcat(renderbuf, vrulea);
#ifdef ID_EXT
if (t->tridvalue[r] != NULL && h == 0) {
@@ -1901,13 +1898,11 @@ renderTable(struct table *t,
if (!(t->tabattr[r][i] & HTT_X)) {
w = t->tabwidth[i];
for (j = i + 1;
- j <= t->maxcol && (t->tabattr[r][j] & HTT_X);
- j++)
+ j <= t->maxcol && (t->tabattr[r][j] & HTT_X); j++)
w += t->tabwidth[j] + t->cellspacing;
if (t->tabattr[r][i] & HTT_Y) {
- for (j = r - 1;
- j >= 0 && t->tabattr[j] && (t->tabattr[j][i] & HTT_Y);
- j--);
+ for (j = r - 1; j >= 0 && t->tabattr[j]
+ && (t->tabattr[j][i] & HTT_Y); j--) ;
print_item(t, j, i, w, renderbuf);
}
else
@@ -1923,12 +1918,12 @@ renderTable(struct table *t,
t->total_height += 1;
break;
}
- push_render_image(renderbuf, width, t->total_width, h_env);
+ push_render_image(renderbuf, width, t->total_width, h_env);
}
if (r < t->maxrow && t->border_mode != BORDER_NONE) {
renderbuf = Strnew();
print_sep(t, r, T_MIDDLE, t->maxcol, renderbuf);
- push_render_image(renderbuf, width, t->total_width, h_env);
+ push_render_image(renderbuf, width, t->total_width, h_env);
}
t->total_height += t->tabheight[r];
}
@@ -1937,7 +1932,7 @@ renderTable(struct table *t,
case BORDER_THICK:
renderbuf = Strnew();
print_sep(t, t->maxrow, T_BOTTOM, t->maxcol, renderbuf);
- push_render_image(renderbuf, width, t->total_width, h_env);
+ push_render_image(renderbuf, width, t->total_width, h_env);
t->total_height += 1;
break;
}
@@ -1945,7 +1940,7 @@ renderTable(struct table *t,
renderbuf = Strnew(" ");
t->total_height++;
t->total_width = 1;
- push_render_image(renderbuf, 1, t->total_width, h_env);
+ push_render_image(renderbuf, 1, t->total_width, h_env);
}
HTMLlineproc1("</pre>", h_env);
}
@@ -2026,7 +2021,7 @@ begin_table(int border, int spacing, int padding, int vspace)
else
t->vcellpadding = 1;
}
-
+
return t;
}
@@ -2037,13 +2032,11 @@ end_table(struct table *tbl)
int i, rulewidth = table_rule_width(tbl);
if (rulewidth > 1) {
if (tbl->total_width > 0)
- tbl->total_width =
- ceil_at_intervals(tbl->total_width, rulewidth);
+ tbl->total_width = ceil_at_intervals(tbl->total_width, rulewidth);
for (i = 0; i <= tbl->maxcol; i++) {
tbl->minimum_width[i] =
ceil_at_intervals(tbl->minimum_width[i], rulewidth);
- tbl->tabwidth[i] =
- ceil_at_intervals(tbl->tabwidth[i], rulewidth);
+ tbl->tabwidth[i] = ceil_at_intervals(tbl->tabwidth[i], rulewidth);
if (tbl->fixed_width[i] > 0)
tbl->fixed_width[i] =
ceil_at_intervals(tbl->fixed_width[i], rulewidth);
@@ -2051,8 +2044,7 @@ end_table(struct table *tbl)
for (i = 0; i <= cell->maxcell; i++) {
cell->minimum_width[i] =
ceil_at_intervals(cell->minimum_width[i], rulewidth);
- cell->width[i] =
- ceil_at_intervals(cell->width[i], rulewidth);
+ cell->width[i] = ceil_at_intervals(cell->width[i], rulewidth);
if (cell->fixed_width[i] > 0)
cell->fixed_width[i] =
ceil_at_intervals(cell->fixed_width[i], rulewidth);
@@ -2085,7 +2077,7 @@ check_minimum0(struct table *t, int min)
cell->minimum_width[cell->icell] = min;
}
for (i = t->col;
- i <= t->maxcol && (i == t->col || (t->tabattr[t->row][i] & HTT_X));
+ i <= t->maxcol && (i == t->col || (t->tabattr[t->row][i] & HTT_X));
i++) {
if (t->minimum_width[i] < ww)
t->minimum_width[i] = ww;
@@ -2178,7 +2170,7 @@ begin_cell(struct table *t, struct table_mode *mode)
t->suspended_data = NULL;
}
}
-
+
void
check_rowcol(struct table *tbl, struct table_mode *mode)
{
@@ -2199,8 +2191,7 @@ check_rowcol(struct table *tbl, struct table_mode *mode)
for (;; tbl->row++) {
check_row(tbl, tbl->row);
for (; tbl->col < MAXCOL &&
- tbl->tabattr[tbl->row][tbl->col] & (HTT_X | HTT_Y);
- tbl->col++);
+ tbl->tabattr[tbl->row][tbl->col] & (HTT_X | HTT_Y); tbl->col++) ;
if (tbl->col < MAXCOL)
break;
tbl->col = 0;
@@ -2294,14 +2285,12 @@ skip_space(struct table *t, char *line, struct table_linfo *linfo,
static void
feed_table_inline_tag(struct table *tbl,
- char *line,
- struct table_mode *mode,
- int width)
+ char *line, struct table_mode *mode, int width)
{
check_rowcol(tbl, mode);
pushdata(tbl, tbl->row, tbl->col, line);
if (width >= 0) {
- check_minimum0(tbl, width);
+ check_minimum0(tbl, width);
addcontentssize(tbl, width);
setwidth(tbl, mode);
}
@@ -2309,10 +2298,7 @@ feed_table_inline_tag(struct table *tbl,
static void
feed_table_block_tag(struct table *tbl,
- char *line,
- struct table_mode *mode,
- int indent,
- int cmd)
+ char *line, struct table_mode *mode, int indent, int cmd)
{
int offset;
if (mode->indent_level <= 0 && indent == -1)
@@ -2370,7 +2356,7 @@ table_close_anchor0(struct table *tbl, struct table_mode *mode)
}
else if (tbl->linfo.prev_spaces > 0 &&
tbl->tabcontentssize - 1 == mode->anchor_offset) {
- if(tbl->linfo.prev_spaces > 0)
+ if (tbl->linfo.prev_spaces > 0)
tbl->linfo.prev_spaces = -1;
}
}
@@ -2400,7 +2386,8 @@ table_close_anchor0(struct table *tbl, struct table_mode *mode)
case HTML_COL
static int
-feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, int width, struct parsed_tag *tag)
+feed_table_tag(struct table *tbl, char *line, struct table_mode *mode,
+ int width, struct parsed_tag *tag)
{
int cmd;
char *p;
@@ -2427,11 +2414,11 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, int width
}
switch (cmd) {
- CASE_TABLE_TAG:
- if (mode->caption)
+ CASE_TABLE_TAG:
+ if (mode->caption)
mode->caption = 0;
- if (mode->pre_mode & (TBLM_IGNORE|TBLM_XMP|TBLM_LST))
- mode->pre_mode &= ~(TBLM_IGNORE|TBLM_XMP|TBLM_LST);
+ if (mode->pre_mode & (TBLM_IGNORE | TBLM_XMP | TBLM_LST))
+ mode->pre_mode &= ~(TBLM_IGNORE | TBLM_XMP | TBLM_LST);
if (mode->pre_mode & TBLM_INTXTA)
table_close_textarea(tbl, mode, width);
if (mode->pre_mode & TBLM_INSELECT)
@@ -2454,13 +2441,12 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, int width
table_close_select(tbl, mode, width);
}
- if (
- (mode->pre_mode & TBLM_INSELECT && cmd != HTML_N_SELECT) ||
+ if ((mode->pre_mode & TBLM_INSELECT && cmd != HTML_N_SELECT) ||
(mode->pre_mode & TBLM_INTXTA && cmd != HTML_N_TEXTAREA) ||
(mode->pre_mode & TBLM_XMP && cmd != HTML_N_XMP) ||
(mode->pre_mode & TBLM_LST && cmd != HTML_N_LISTING))
return TAG_ACTION_FEED;
-
+
if (mode->pre_mode & TBLM_PRE) {
switch (cmd) {
case HTML_NOBR:
@@ -2495,7 +2481,7 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, int width
break;
case ALIGN_RIGHT:
align = (HTT_RIGHT | HTT_TRSET);
- break;
+ break;
case ALIGN_CENTER:
align = (HTT_CENTER | HTT_TRSET);
break;
@@ -2607,7 +2593,7 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, int width
#ifdef TABLE_EXPAND
if (v > 0) {
if (tbl->real_width > 0)
- v = - (v * 100) / (tbl->real_width * pixel_per_char);
+ v = -(v * 100) / (tbl->real_width * pixel_per_char);
else
v = (int)(v / pixel_per_char);
}
@@ -2632,11 +2618,10 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, int width
cell->icell = cell->maxcell + 1;
k = bsearch_2short(colspan, cell->colspan, col, cell->col, MAXCOL,
- cell->index, cell->icell);
+ cell->index, cell->icell);
if (k <= cell->maxcell) {
i = cell->index[k];
- if (cell->col[i] == col &&
- cell->colspan[i] == colspan)
+ if (cell->col[i] == col && cell->colspan[i] == colspan)
cell->icell = i;
}
if (cell->icell > cell->maxcell && cell->icell < MAXCELL) {
@@ -2647,7 +2632,8 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, int width
cell->minimum_width[cell->maxcell] = 0;
cell->fixed_width[cell->maxcell] = 0;
if (cell->maxcell > k)
- bcopy(cell->index + k, cell->index + k + 1, cell->maxcell - k);
+ bcopy(cell->index + k, cell->index + k + 1,
+ cell->maxcell - k);
cell->index[k] = cell->maxcell;
}
if (cell->icell > cell->maxcell)
@@ -2745,9 +2731,9 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, int width
case HTML_N_XMP:
mode->pre_mode &= ~TBLM_XMP;
break;
- case HTML_PLAINTEXT:
- mode->pre_mode |= TBLM_PLAINTEXT;
- break;
+ case HTML_PLAINTEXT:
+ mode->pre_mode |= TBLM_PLAINTEXT;
+ break;
}
break;
case HTML_DL:
@@ -2888,7 +2874,7 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, int width
else
v = tbl->fixed_width[tbl->col];
if (v < 0 && tbl->real_width > 0 && tbl1->real_width > 0)
- w = - (tbl1->real_width * 100) / tbl->real_width;
+ w = -(tbl1->real_width * 100) / tbl->real_width;
else
w = tbl1->real_width;
if (w > 0)
@@ -3001,8 +2987,7 @@ feed_table(struct table *tbl, char *line, struct table_mode *mode,
char *q, *r;
if (*p == '&') {
if (!strncasecmp(p, "&amp;", 5) ||
- !strncasecmp(p, "&gt;", 4) ||
- !strncasecmp(p, "&lt;", 4)) {
+ !strncasecmp(p, "&gt;", 4) || !strncasecmp(p, "&lt;", 4)) {
/* do not convert */
Strcat_char(tmp, *p);
p++;
@@ -3010,30 +2995,30 @@ feed_table(struct table *tbl, char *line, struct table_mode *mode,
else {
int ec;
q = p;
- switch (ec = getescapechar(&p)) {
- case '<':
- Strcat_charp(tmp, "&lt;");
- break;
- case '>':
- Strcat_charp(tmp, "&gt;");
- break;
- case '&':
- Strcat_charp(tmp, "&amp;");
- break;
- case '\r':
- Strcat_char(tmp, '\n');
- break;
- default:
- r = conv_entity(ec);
- if (r != NULL && strlen(r) == 1 &&
- ec == (unsigned char)*r) {
- Strcat_char(tmp, *r);
- break;
- }
- case -1:
- Strcat_char(tmp, *q);
- p = q + 1;
- break;
+ switch (ec = getescapechar(&p)) {
+ case '<':
+ Strcat_charp(tmp, "&lt;");
+ break;
+ case '>':
+ Strcat_charp(tmp, "&gt;");
+ break;
+ case '&':
+ Strcat_charp(tmp, "&amp;");
+ break;
+ case '\r':
+ Strcat_char(tmp, '\n');
+ break;
+ default:
+ r = conv_entity(ec);
+ if (r != NULL && strlen(r) == 1 &&
+ ec == (unsigned char)*r) {
+ Strcat_char(tmp, *r);
+ break;
+ }
+ case -1:
+ Strcat_char(tmp, *q);
+ p = q + 1;
+ break;
}
}
}
@@ -3091,8 +3076,9 @@ feed_table1(struct table *tbl, Str tok, struct table_mode *mode, int width)
tokbuf = Strnew();
status = R_ST_NORMAL;
line = tok->ptr;
- while (read_token(tokbuf, &line, &status, mode->pre_mode & TBLM_PREMODE, 0))
- feed_table(tbl, tokbuf->ptr, mode, width, TRUE);
+ while (read_token
+ (tokbuf, &line, &status, mode->pre_mode & TBLM_PREMODE, 0))
+ feed_table(tbl, tokbuf->ptr, mode, width, TRUE);
}
void
@@ -3119,8 +3105,7 @@ pushTable(struct table *tbl, struct table *tbl1)
tbl->tables[tbl->ntable].indent = tbl->indent;
tbl->tables[tbl->ntable].buf = newTextLineList();
check_row(tbl, row);
- if (col + 1 <= tbl->maxcol &&
- tbl->tabattr[row][col + 1] & HTT_X)
+ if (col + 1 <= tbl->maxcol && tbl->tabattr[row][col + 1] & HTT_X)
tbl->tables[tbl->ntable].cell = tbl->cell.icell;
else
tbl->tables[tbl->ntable].cell = -1;
@@ -3168,7 +3153,8 @@ correct_table_matrix2(struct table *t, int col, int cspan, double s, double b)
}
static void
-correct_table_matrix3(struct table *t, int col, char *flags, double s, double b)
+correct_table_matrix3(struct table *t, int col, char *flags, double s,
+ double b)
{
int i, j;
double ss;
@@ -3220,7 +3206,7 @@ set_table_matrix0(struct table *t, int maxwidth)
if (cell->necell == 0) {
for (i = 0; i < size; i++) {
s = we[i] / w0;
- b = sigma_td_nw((int) (s * maxwidth));
+ b = sigma_td_nw((int)(s * maxwidth));
correct_table_matrix2(t, i, 1, s, b);
}
return;
@@ -3243,7 +3229,7 @@ set_table_matrix0(struct table *t, int maxwidth)
for (i = bcol; i < ecol; i++)
w1 += we[i];
s = w / (w0 + w - w1);
- a = (int) (s * maxwidth);
+ a = (int)(s * maxwidth);
b = sigma_td_nw(a);
correct_table_matrix2(t, bcol, cell->colspan[j], s, b);
}
@@ -3255,7 +3241,7 @@ set_table_matrix0(struct table *t, int maxwidth)
for (i = 0; i < size; i++) {
if (expand[i] == 0) {
s = we[i] / max(w1, 1.);
- b = sigma_td_nw((int) (s * maxwidth));
+ b = sigma_td_nw((int)(s * maxwidth));
}
else {
s = we[i] / max(w0 - w1, 1.);
@@ -3292,8 +3278,8 @@ set_table_matrix(struct table *t, int width)
correct_table_matrix(t, i, 1, a, b);
}
else if (t->fixed_width[i] < 0) {
- s = -(double) t->fixed_width[i] / 100.;
- b = sigma_td((int) (s * width));
+ s = -(double)t->fixed_width[i] / 100.;
+ b = sigma_td((int)(s * width));
correct_table_matrix2(t, i, 1, s, b);
}
}
@@ -3302,14 +3288,12 @@ set_table_matrix(struct table *t, int width)
if (cell->fixed_width[j] > 0) {
a = max(cell->fixed_width[j], cell->minimum_width[j]);
b = sigma_td(a);
- correct_table_matrix(t, cell->col[j],
- cell->colspan[j], a, b);
+ correct_table_matrix(t, cell->col[j], cell->colspan[j], a, b);
}
else if (cell->fixed_width[j] < 0) {
- s = -(double) cell->fixed_width[j] / 100.;
- b = sigma_td((int) (s * width));
- correct_table_matrix2(t, cell->col[j],
- cell->colspan[j], s, b);
+ s = -(double)cell->fixed_width[j] / 100.;
+ b = sigma_td((int)(s * width));
+ correct_table_matrix2(t, cell->col[j], cell->colspan[j], s, b);
}
}