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

Legend:
Removed from v.73  
changed lines
  Added in v.142

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