--- psiconv/trunk/lib/psiconv/generate_page.c 2000/12/24 16:03:57 73 +++ psiconv/trunk/lib/psiconv/generate_page.c 2000/12/27 02:12:23 80 @@ -28,14 +28,15 @@ int psiconv_write_page_header(psiconv_buffer buf, - const psiconv_page_header value) + const psiconv_page_header value, + psiconv_buffer *extra_buf) { int res; psiconv_paragraph_layout basepara; psiconv_character_layout basechar; if (!value) { - psiconv_warn(0,psiconv_list_length(buf),"Null page header"); + psiconv_warn(0,psiconv_buffer_length(buf),"Null page header"); res = -PSICONV_E_GENERATE; goto ERROR1; } @@ -54,6 +55,13 @@ goto ERROR3; if ((res = psiconv_write_bool(buf,value->on_first_page))) goto ERROR3; + /* Three unknown bytes */ + if ((res = psiconv_write_u8(buf,0x00))) + goto ERROR3; + if ((res = psiconv_write_u8(buf,0x00))) + goto ERROR3; + if ((res = psiconv_write_u8(buf,0x00))) + goto ERROR3; if ((res = psiconv_write_paragraph_layout_list(buf, value->base_paragraph_layout,basepara))) goto ERROR3; @@ -62,7 +70,7 @@ goto ERROR3; res = psiconv_write_texted_section(buf,value->text, value->base_character_layout, - value->base_paragraph_layout); + value->base_paragraph_layout,extra_buf); ERROR3: psiconv_free_character_layout(basechar); ERROR2: @@ -75,33 +83,49 @@ const psiconv_page_layout_section value) { int res; + psiconv_buffer header_buf,footer_buf; if (!value) { - psiconv_warn(0,psiconv_list_length(buf),"Null page section"); - return -PSICONV_E_GENERATE; + psiconv_warn(0,psiconv_buffer_length(buf),"Null page section"); + res = -PSICONV_E_GENERATE; + goto ERROR1; } if ((res = psiconv_write_u32(buf,value->first_page_nr))) - return res; + goto ERROR1; if ((res = psiconv_write_length(buf,value->header_dist))) - return res; + goto ERROR1; if ((res = psiconv_write_length(buf,value->footer_dist))) - return res; + goto ERROR1; if ((res = psiconv_write_length(buf,value->left_margin))) - return res; + goto ERROR1; if ((res = psiconv_write_length(buf,value->right_margin))) - return res; + goto ERROR1; if ((res = psiconv_write_length(buf,value->top_margin))) - return res; + goto ERROR1; if ((res = psiconv_write_length(buf,value->bottom_margin))) - return res; - if ((res = psiconv_write_page_header(buf,value->header))) - return res; - if ((res = psiconv_write_page_header(buf,value->footer))) - return res; - if ((res = psiconv_write_u32(buf,PSICONV_ID_PAGE_DIMENSIONS))) - return res; + goto ERROR1; + if ((res = psiconv_write_page_header(buf,value->header,&header_buf))) + goto ERROR1; + if ((res = psiconv_write_page_header(buf,value->footer,&footer_buf))) + goto ERROR2; + if ((res = psiconv_write_u32(buf,PSICONV_ID_PAGE_DIMENSIONS2))) + goto ERROR3; if ((res = psiconv_write_length(buf,value->page_width))) - return res; - return psiconv_write_length(buf,value->page_height); + goto ERROR3; + if ((res = psiconv_write_length(buf,value->page_height))) + goto ERROR3; + if ((res = psiconv_write_bool(buf,value->landscape))) + goto ERROR3; + if ((res = psiconv_buffer_concat(buf,header_buf))) + goto ERROR3; + res = psiconv_buffer_concat(buf,footer_buf); + + +ERROR3: + psiconv_buffer_free(footer_buf); +ERROR2: + psiconv_buffer_free(header_buf); +ERROR1: + return res; }