/[public]/psiconv/trunk/lib/psiconv/generate_texted.c
ViewVC logotype

Diff of /psiconv/trunk/lib/psiconv/generate_texted.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 79 Revision 80
25#include "generate_routines.h" 25#include "generate_routines.h"
26#include "error.h" 26#include "error.h"
27 27
28 28
29int psiconv_write_texted_section(psiconv_buffer buf, 29int psiconv_write_texted_section(psiconv_buffer buf,
30 psiconv_texted_section value, 30 const psiconv_texted_section value,
31 psiconv_character_layout base_char, 31 const psiconv_character_layout base_char,
32 psiconv_paragraph_layout base_para) 32 const psiconv_paragraph_layout base_para,
33 psiconv_buffer *extra_buf)
33{ 34{
34 int res; 35 int res,with_layout_section=0;
36 psiconv_u32 layout_id;
35 37
36 if (!value) { 38 if (!value) {
37 psiconv_warn(0,psiconv_buffer_length(buf),"Null TextEd section"); 39 psiconv_warn(0,psiconv_buffer_length(buf),"Null TextEd section");
38 return -PSICONV_E_GENERATE; 40 res = -PSICONV_E_GENERATE;
41 goto ERROR1;
39 } 42 }
40 43
44 if (!(*extra_buf = psiconv_buffer_new())) {
45 res = -PSICONV_E_NOMEM;
46 goto ERROR1;
47 }
48
49 layout_id = psiconv_buffer_unique_id();
50 psiconv_buffer_add_target(*extra_buf,layout_id);
51
52 if (psiconv_list_length(value->paragraphs)) {
53 with_layout_section = 1;
54 if ((res = psiconv_write_styleless_layout_section(*extra_buf,
55 value->paragraphs,
56 base_char,base_para)))
57 goto ERROR2;
58 }
59
41 if ((res = psiconv_write_u32(buf,PSICONV_ID_TEXTED_BODY))) 60 if ((res = psiconv_write_u32(buf,PSICONV_ID_TEXTED_BODY)))
42 return res; 61 goto ERROR2;
43 62
44 /* Dummy TextEd Jumptable */ 63 /* Partly dummy TextEd Jumptable */
45 if ((res = psiconv_write_u32(buf,PSICONV_ID_TEXTED_REPLACEMENT))) 64 if ((res = psiconv_write_u32(buf,PSICONV_ID_TEXTED_REPLACEMENT)))
46 return res; 65 goto ERROR2;
47 if ((res = psiconv_write_u32(buf,0))) 66 if ((res = psiconv_write_u32(buf,0)))
48 return res; 67 goto ERROR2;
49 if ((res = psiconv_write_u32(buf,PSICONV_ID_TEXTED_UNKNOWN))) 68 if ((res = psiconv_write_u32(buf,PSICONV_ID_TEXTED_UNKNOWN)))
50 return res; 69 goto ERROR2;
51 if ((res = psiconv_write_u32(buf,0))) 70 if ((res = psiconv_write_u32(buf,0)))
52 return res; 71 goto ERROR2;
53 if ((res = psiconv_write_u32(buf,PSICONV_ID_TEXTED_LAYOUT))) 72 if ((res = psiconv_write_u32(buf,PSICONV_ID_TEXTED_LAYOUT)))
54 return res; 73 goto ERROR2;
74 if (with_layout_section) {
75 if ((res = psiconv_write_offset(buf,layout_id)))
76 goto ERROR2;
77 } else {
55 if ((res = psiconv_write_u32(buf,0))) 78 if ((res = psiconv_write_u32(buf,0)))
56 return res; 79 goto ERROR2;
80 }
57 81
58 if ((res = psiconv_write_u32(buf,PSICONV_ID_TEXTED_TEXT))) 82 if ((res = psiconv_write_u32(buf,PSICONV_ID_TEXTED_TEXT)))
59 return res; 83 goto ERROR2;
60 84
61 return psiconv_write_text_section(buf,value->paragraphs); 85 return psiconv_write_text_section(buf,value->paragraphs);
62 86
87ERROR2:
88 psiconv_buffer_free(*extra_buf);
89ERROR1:
90 return res;
63} 91}

Legend:
Removed from v.79  
changed lines
  Added in v.80

frodo@frodo.looijaard.name
ViewVC Help
Powered by ViewVC 1.1.26