--- ms-excel-read.c.old 2005-03-13 00:16:31.000000000 +0000 +++ ms-excel-read.c 2005-07-04 13:56:34.000000000 +0100 @@ -1880,10 +1880,33 @@ case 2: xf->halign = HALIGN_CENTER; break; case 3: xf->halign = HALIGN_RIGHT; break; case 4: xf->halign = HALIGN_FILL; break; + case 5: xf->halign = HALIGN_JUSTIFY; break; + case 6: xf->halign = HALIGN_CENTER_ACROSS_SELECTION; break; } - xf->valign = VALIGN_BOTTOM; - xf->rotation = 0; + xf->valign = VALIGN_BOTTOM; + xf->rotation = 0; + + if (ver >= MS_BIFF_V4) { + xf->wrap_text = (data & 0x0008) != 0; + switch (data & 0x30) { + case 0x00: xf->valign = VALIGN_TOP; break; + case 0x10: xf->valign = VALIGN_CENTER; break; + default : + case 0x20: xf->valign = VALIGN_BOTTOM; break; + } + switch (data & 0xc0) { + case 0x00: xf->rotation = 0; break; + case 0x40: xf->rotation = -1; break; + case 0x80: xf->rotation = 90; break; + case 0xc0: xf->rotation = 270; break; + } + } else if (ver >= MS_BIFF_V3) { + xf->wrap_text = (data & 0x0008) != 0; + if (xf->wrap_text) { + xf->valign = VALIGN_TOP; + } + } xf->indent = 0; xf->differences = 0; @@ -1914,20 +1937,20 @@ xf->border_type[STYLE_RIGHT] = biff_xf_map_border (data & 0x07); subdata = data >> 3; xf->border_color[STYLE_RIGHT] = (subdata==24) ? 64 : subdata; - } else { + } else /* MS_BIFF_V2 */ { xf->pat_foregnd_col = 0; - xf->pat_backgnd_col = 0; - xf->fill_pattern_idx = 0; + xf->pat_backgnd_col = 1; data = q->data[3]; - xf->border_type[STYLE_TOP] = (data & 0x08) ? 1 : 0; - xf->border_color[STYLE_TOP] = 0; - xf->border_type[STYLE_BOTTOM] = (data & 0x10) ? 1: 0; - xf->border_color[STYLE_BOTTOM] = 0; - xf->border_type[STYLE_LEFT] = (data & 0x20) ? 1: 0;; + xf->border_type[STYLE_LEFT] = (data & 0x08) ? 1 : 0; xf->border_color[STYLE_LEFT] = 0; - xf->border_type[STYLE_RIGHT] = (data & 0x40) ? 1: 0;; + xf->border_type[STYLE_RIGHT] = (data & 0x10) ? 1: 0; xf->border_color[STYLE_RIGHT] = 0; + xf->border_type[STYLE_TOP] = (data & 0x20) ? 1: 0; + xf->border_color[STYLE_TOP] = 0; + xf->border_type[STYLE_BOTTOM] = (data & 0x40) ? 1: 0; + xf->border_color[STYLE_BOTTOM] = 0; + xf->fill_pattern_idx = (data & 0x80) ? 5: 0; } xf->border_type[STYLE_DIAGONAL] = 0;