[w3m-dev 02919] wrong table width calculation

* table.c (set_table_matrix0): refine width calculation
From: Hironori Sakamoto <hsaka@mth.biglobe.ne.jp>
This commit is contained in:
Fumitoshi UKAI
2002-01-28 14:42:30 +00:00
parent 91939e691d
commit 4c805fe509
2 changed files with 12 additions and 19 deletions

View File

@@ -1,3 +1,8 @@
2002-01-28 Hironori Sakamoto <hsaka@mth.biglobe.ne.jp>
* [w3m-dev 02919] wrong table width calculation
* table.c (set_table_matrix0): refine width calculation
2002-01-28 Hironori Sakamoto <hsaka@mth.biglobe.ne.jp> 2002-01-28 Hironori Sakamoto <hsaka@mth.biglobe.ne.jp>
* [w3m-dev 02918] fixed scripts/w3mmail.cgi.in * [w3m-dev 02918] fixed scripts/w3mmail.cgi.in
@@ -2322,4 +2327,4 @@
* release-0-2-1 * release-0-2-1
* import w3m-0.2.1 * import w3m-0.2.1
$Id: ChangeLog,v 1.266 2002/01/27 18:59:57 ukai Exp $ $Id: ChangeLog,v 1.267 2002/01/28 14:42:30 ukai Exp $

24
table.c
View File

@@ -1,4 +1,4 @@
/* $Id: table.c,v 1.17 2002/01/25 17:25:44 ukai Exp $ */ /* $Id: table.c,v 1.18 2002/01/28 14:42:30 ukai Exp $ */
/* /*
* HTML table * HTML table
*/ */
@@ -3216,7 +3216,7 @@ set_table_matrix0(struct table *t, int maxwidth)
int size = t->maxcol + 1; int size = t->maxcol + 1;
int i, j, k, bcol, ecol; int i, j, k, bcol, ecol;
int width; int width;
double w0, w1, w, e, s, b; double w0, w1, w, s, b;
#ifdef __GNUC__ #ifdef __GNUC__
double we[size]; double we[size];
char expand[size]; char expand[size];
@@ -3249,22 +3249,14 @@ set_table_matrix0(struct table *t, int maxwidth)
j = cell->eindex[k]; j = cell->eindex[k];
bcol = cell->col[j]; bcol = cell->col[j];
ecol = bcol + cell->colspan[j]; ecol = bcol + cell->colspan[j];
width = cell->width[j] - (cell->colspan[j] - 1) * t->cellspacing;
w1 = 0.;
for (i = bcol; i < ecol; i++) { for (i = bcol; i < ecol; i++) {
w1 += t->tabwidth[i] + 0.1;
expand[i]++; expand[i]++;
} }
}
for (k = 0; k < cell->necell; k++) {
j = cell->eindex[k];
bcol = cell->col[j];
ecol = bcol + cell->colspan[j];
width = cell->width[j] - (cell->colspan[j] - 1) * t->cellspacing;
e = 0.;
for (i = bcol; i < ecol; i++) { for (i = bcol; i < ecol; i++) {
e += expand[i]; w = weight(width * (t->tabwidth[i] + 0.1) / w1);
}
for (i = bcol; i < ecol; i++) {
w = weight(width * expand[i] / e);
if (w > we[i]) if (w > we[i])
we[i] = w; we[i] = w;
} }
@@ -3286,11 +3278,7 @@ set_table_matrix0(struct table *t, int maxwidth)
width = cell->width[j] - (cell->colspan[j] - 1) * t->cellspacing; width = cell->width[j] - (cell->colspan[j] - 1) * t->cellspacing;
w = weight(width); w = weight(width);
s = w / (w1 + w); s = w / (w1 + w);
#if 0
b = sigma_td_nw((int)(s * maxwidth * cell->colspan[j]));
#else
b = sigma_td_nw((int)(s * maxwidth)); b = sigma_td_nw((int)(s * maxwidth));
#endif
correct_table_matrix4(t, bcol, cell->colspan[j], expand, s, b); correct_table_matrix4(t, bcol, cell->colspan[j], expand, s, b);
} }