--- psiconv/trunk/lib/psiconv/parse_layout.c 2000/12/15 01:16:43 65 +++ psiconv/trunk/lib/psiconv/parse_layout.c 2001/03/04 22:10:45 110 @@ -18,11 +18,13 @@ */ #include "config.h" +#include "compat.h" + #include #include -#include "data.h" #include "parse_routines.h" +#include "error.h" int psiconv_parse_color(const psiconv_buffer buf, int lev, psiconv_u32 off, int *length, psiconv_color *result) @@ -147,11 +149,11 @@ else if (temp == 0x03) (*result)->kind = psiconv_border_dotted; else if (temp == 0x04) - (*result)->kind = psiconv_border_striped; + (*result)->kind = psiconv_border_dashed; else if (temp == 0x05) - (*result)->kind = psiconv_border_dotstripe; + (*result)->kind = psiconv_border_dotdashed; else if (temp == 0x06) - (*result)->kind = psiconv_border_dotdotstripe; + (*result)->kind = psiconv_border_dotdotdashed; else { psiconv_warn(lev+2,off,"Unknown border kind (defaults to `none')"); (*result)->kind = psiconv_border_none; @@ -163,6 +165,8 @@ (*result)->thickness = psiconv_read_size(buf,lev+2,off+len,&leng,&res); if (res) goto ERROR2; +#if 0 + /* This seems no longer necessary to test? */ if (((*result)->kind != psiconv_border_solid) && ((*result)->kind != psiconv_border_double) && ((*result)->thickness != 0.0) && @@ -170,6 +174,7 @@ psiconv_warn(lev+2,off, "Border thickness specified for unlikely border type"); } +#endif psiconv_debug(lev+2,off+len,"Thickness: %f",(*result)->thickness); len += leng; @@ -179,14 +184,14 @@ len += leng; psiconv_progress(lev+2,off+len,"Going to read the final unknown byte " - "(0x01 expected)"); + "(0x00 or 0x01 expected)"); temp = psiconv_read_u8(buf,lev+2,off + len,&res); if (res) goto ERROR3; - if (temp != 0x01) { + if ((temp != 0x01) && (temp != 0x00)) { psiconv_warn(lev+2,off,"Unknown last byte in border specification"); - psiconv_debug(lev+2,off+len, "Last byte: read %02x, expected %02x", - temp,0x01); + psiconv_debug(lev+2,off+len, "Last byte: read %02x, expected %02x or %02x", + temp,0x00,0x01); } len ++; @@ -446,30 +451,31 @@ } psiconv_debug(lev+3,off+len,"Justify: %02x",temp); len ++; + break; case 0x07: - psiconv_progress(lev+3,off+len,"Going to read interline distance"); - result->interline = psiconv_read_size(buf,lev+3,off+len,&leng,&res); + psiconv_progress(lev+3,off+len,"Going to read linespacing distance"); + result->linespacing = psiconv_read_size(buf,lev+3,off+len,&leng,&res); if (res) goto ERROR1; len += leng; break; case 0x08: - psiconv_progress(lev+3,off+len,"Going to read interline exact"); + psiconv_progress(lev+3,off+len,"Going to read linespacing exact"); if ((res = psiconv_parse_bool(buf,lev+3,off+len,&leng, - &result->interline_exact))) + &result->linespacing_exact))) goto ERROR1; len += leng; break; case 0x09: psiconv_progress(lev+3,off+len,"Going to read top space"); - result->top_space = psiconv_read_size(buf,lev+3,off+len,&leng,&res); + result->space_above = psiconv_read_size(buf,lev+3,off+len,&leng,&res); if (res) goto ERROR1; len += leng; break; case 0x0a: psiconv_progress(lev+3,off+len,"Going to read bottom space"); - result->bottom_space = psiconv_read_size(buf,lev+3,off+len,&leng,&res); + result->space_below = psiconv_read_size(buf,lev+3,off+len,&leng,&res); if (res) goto ERROR1; len += leng; @@ -477,14 +483,14 @@ case 0x0b: psiconv_progress(lev+3,off+len,"Going to read on one page"); if ((res = psiconv_parse_bool(buf,lev+3,off+len,&leng, - &result->on_one_page))) + &result->keep_together))) goto ERROR1; len += leng; break; case 0x0c: psiconv_progress(lev+3,off+len,"Going to read together with"); if ((res = psiconv_parse_bool(buf,lev+3,off+len,&leng, - &result->together_with))) + &result->keep_with_next))) goto ERROR1; len += leng; break; @@ -502,6 +508,13 @@ goto ERROR1; len += leng; break; + case 0x0f: + psiconv_progress(lev+3,off+len,"Going to read wrap to fit cell limits"); + if ((res = psiconv_parse_bool(buf,lev+3,off+len,&leng, + &result->wrap_to_fit_cell))) + goto ERROR1; + len += leng; + break; case 0x10: psiconv_progress(lev+3,off+len,"Going to read border distance to text"); result->border_distance = psiconv_read_length(buf,lev+3, @@ -638,6 +651,10 @@ psiconv_debug(lev+3,off+len,"Id: %02x",id); len ++; switch(id) { + case 0x18: + psiconv_progress(lev+3,off+len,"Going to skip an unknown setting"); + len ++; + break; case 0x19: psiconv_progress(lev+3,off+len,"Going to read text color"); if ((res = psiconv_parse_color(buf,lev+3,off+len, &leng,&temp_color))) @@ -654,6 +671,10 @@ result->back_color = temp_color; len += leng; break; + case 0x1b: + psiconv_progress(lev+3,off+len,"Going to skip an unknown setting"); + len ++; + break; case 0x1c: psiconv_progress(lev+3,off+len,"Going to read font size"); result->font_size = psiconv_read_size(buf,lev+3,off+len,&leng,&res); @@ -699,9 +720,9 @@ len += leng; break; case 0x21: - psiconv_progress(lev+3,off+len,"Going to read strike_out"); + psiconv_progress(lev+3,off+len,"Going to read strikethrough"); if ((res = psiconv_parse_bool(buf,lev+3,off+len,&leng, - &result->strike_out))) + &result->strikethrough))) goto ERROR1; len += leng; break; @@ -713,6 +734,10 @@ result->font = temp_font; len += leng; break; + case 0x23: + psiconv_progress(lev+3,off+len,"Going to skip an unknown setting"); + len ++; + break; case 0x24: psiconv_progress(lev+3,off+len, "Going to read unknown code 0x24 (%02x expected)", 0);