--- psiconv/trunk/lib/psiconv/generate_page.c 2000/12/24 16:03:57 73 +++ psiconv/trunk/lib/psiconv/generate_page.c 2004/01/06 20:15:01 184 @@ -26,16 +26,25 @@ #include "generate_routines.h" #include "error.h" +#ifdef DMALLOC +#include +#endif -int psiconv_write_page_header(psiconv_buffer buf, - const psiconv_page_header value) + + +int psiconv_write_page_header(const psiconv_config config, + psiconv_buffer buf, int lev, + const psiconv_page_header value, + psiconv_buffer *extra_buf) { int res; psiconv_paragraph_layout basepara; psiconv_character_layout basechar; + psiconv_progress(config,lev,0,"Writing page header"); + if (!value) { - psiconv_warn(0,psiconv_list_length(buf),"Null page header"); + psiconv_error(config,0,psiconv_buffer_length(buf),"Null page header"); res = -PSICONV_E_GENERATE; goto ERROR1; } @@ -50,19 +59,26 @@ } /* Unknown byte */ - if ((res = psiconv_write_u8(buf,0x01))) + if ((res = psiconv_write_u8(config,buf,lev+1,0x01))) + goto ERROR3; + if ((res = psiconv_write_bool(config,buf,lev+1,value->on_first_page))) goto ERROR3; - if ((res = psiconv_write_bool(buf,value->on_first_page))) + /* Three unknown bytes */ + if ((res = psiconv_write_u8(config,buf,lev+1,0x00))) goto ERROR3; - if ((res = psiconv_write_paragraph_layout_list(buf, + if ((res = psiconv_write_u8(config,buf,lev+1,0x00))) + goto ERROR3; + if ((res = psiconv_write_u8(config,buf,lev+1,0x00))) + goto ERROR3; + if ((res = psiconv_write_paragraph_layout_list(config,buf,lev+1, value->base_paragraph_layout,basepara))) goto ERROR3; - if ((res = psiconv_write_character_layout_list(buf, + if ((res = psiconv_write_character_layout_list(config,buf,lev+1, value->base_character_layout,basechar))) goto ERROR3; - res = psiconv_write_texted_section(buf,value->text, + res = psiconv_write_texted_section(config,buf,lev+1,value->text, value->base_character_layout, - value->base_paragraph_layout); + value->base_paragraph_layout,extra_buf); ERROR3: psiconv_free_character_layout(basechar); ERROR2: @@ -71,37 +87,56 @@ return res; } -int psiconv_write_page_layout_section(psiconv_buffer buf, +int psiconv_write_page_layout_section(const psiconv_config config, + psiconv_buffer buf, int lev, const psiconv_page_layout_section value) { int res; + psiconv_buffer header_buf,footer_buf; + + psiconv_progress(config,lev,0,"Writing page layout section"); if (!value) { - psiconv_warn(0,psiconv_list_length(buf),"Null page section"); - return -PSICONV_E_GENERATE; + psiconv_error(config,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; - if ((res = psiconv_write_length(buf,value->header_dist))) - return res; - if ((res = psiconv_write_length(buf,value->footer_dist))) - return res; - if ((res = psiconv_write_length(buf,value->left_margin))) - return res; - if ((res = psiconv_write_length(buf,value->right_margin))) - return res; - if ((res = psiconv_write_length(buf,value->top_margin))) - return res; - 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; - if ((res = psiconv_write_length(buf,value->page_width))) - return res; - return psiconv_write_length(buf,value->page_height); + if ((res = psiconv_write_u32(config,buf,lev+1,value->first_page_nr))) + goto ERROR1; + if ((res = psiconv_write_length(config,buf,lev+1,value->header_dist))) + goto ERROR1; + if ((res = psiconv_write_length(config,buf,lev+1,value->footer_dist))) + goto ERROR1; + if ((res = psiconv_write_length(config,buf,lev+1,value->left_margin))) + goto ERROR1; + if ((res = psiconv_write_length(config,buf,lev+1,value->right_margin))) + goto ERROR1; + if ((res = psiconv_write_length(config,buf,lev+1,value->top_margin))) + goto ERROR1; + if ((res = psiconv_write_length(config,buf,lev+1,value->bottom_margin))) + goto ERROR1; + if ((res = psiconv_write_page_header(config,buf,lev+1,value->header,&header_buf))) + goto ERROR1; + if ((res = psiconv_write_page_header(config,buf,lev+1,value->footer,&footer_buf))) + goto ERROR2; + if ((res = psiconv_write_u32(config,buf,lev+1,PSICONV_ID_PAGE_DIMENSIONS2))) + goto ERROR3; + if ((res = psiconv_write_length(config,buf,lev+1,value->page_width))) + goto ERROR3; + if ((res = psiconv_write_length(config,buf,lev+1,value->page_height))) + goto ERROR3; + if ((res = psiconv_write_bool(config,buf,lev+1,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; }