… | |
… | |
21 | #include "compat.h" |
21 | #include "compat.h" |
22 | |
22 | |
23 | #include "generate_routines.h" |
23 | #include "generate_routines.h" |
24 | #include "error.h" |
24 | #include "error.h" |
25 | |
25 | |
|
|
26 | #ifdef DMALLOC |
|
|
27 | #include <dmalloc.h> |
|
|
28 | #endif |
|
|
29 | |
|
|
30 | |
26 | int psiconv_write_color(psiconv_buffer buf, const psiconv_color value) |
31 | int psiconv_write_color(psiconv_buffer buf, const psiconv_color value) |
27 | { |
32 | { |
28 | int res; |
33 | int res; |
29 | if (!value) { |
34 | if (!value) { |
30 | psiconv_warn(0,psiconv_buffer_length(buf),"Null color"); |
35 | psiconv_warn(0,psiconv_buffer_length(buf),"Null color"); |
… | |
… | |
37 | return psiconv_write_u8(buf,value->blue); |
42 | return psiconv_write_u8(buf,value->blue); |
38 | } |
43 | } |
39 | |
44 | |
40 | int psiconv_write_font(psiconv_buffer buf, const psiconv_font value) |
45 | int psiconv_write_font(psiconv_buffer buf, const psiconv_font value) |
41 | { |
46 | { |
42 | int res; |
47 | int res,i; |
43 | if (!value) { |
48 | if (!value) { |
44 | psiconv_warn(0,psiconv_buffer_length(buf),"Null font"); |
49 | psiconv_warn(0,psiconv_buffer_length(buf),"Null font"); |
45 | return -PSICONV_E_GENERATE; |
50 | return -PSICONV_E_GENERATE; |
46 | } |
51 | } |
|
|
52 | if ((res = psiconv_write_u8(buf,strlen(value->name)+1))) |
|
|
53 | return res; |
|
|
54 | for (i = 0; i < strlen(value->name); i++) |
47 | if ((res = psiconv_write_string(buf,value->name))) |
55 | if ((res = psiconv_write_u8(buf,value->name[i]))) |
48 | return res; |
56 | return res; |
49 | return psiconv_write_u8(buf,value->screenfont); |
57 | return psiconv_write_u8(buf,value->screenfont); |
50 | } |
58 | } |
51 | |
59 | |
52 | int psiconv_write_border(psiconv_buffer buf, const psiconv_border value) |
60 | int psiconv_write_border(psiconv_buffer buf, const psiconv_border value) |
53 | { |
61 | { |
… | |
… | |
86 | if (!value) { |
94 | if (!value) { |
87 | psiconv_warn(0,psiconv_buffer_length(buf),"Null bullet"); |
95 | psiconv_warn(0,psiconv_buffer_length(buf),"Null bullet"); |
88 | return -PSICONV_E_GENERATE; |
96 | return -PSICONV_E_GENERATE; |
89 | } |
97 | } |
90 | |
98 | |
91 | if (!(extra_buf = psiconv_buffer_new(0))) |
99 | if (!(extra_buf = psiconv_buffer_new())) |
92 | return -PSICONV_E_NOMEM; |
100 | return -PSICONV_E_NOMEM; |
93 | if ((res = psiconv_write_size(extra_buf,value->font_size))) |
101 | if ((res = psiconv_write_size(extra_buf,value->font_size))) |
94 | goto ERROR; |
102 | goto ERROR; |
95 | if ((res = psiconv_write_u8(extra_buf,value->character))) |
103 | if ((res = psiconv_write_u8(extra_buf,value->character))) |
96 | goto ERROR; |
|
|
97 | if ((res = psiconv_write_bool(extra_buf,value->on))) |
|
|
98 | goto ERROR; |
104 | goto ERROR; |
99 | if ((res = psiconv_write_bool(extra_buf,value->indent))) |
105 | if ((res = psiconv_write_bool(extra_buf,value->indent))) |
100 | goto ERROR; |
106 | goto ERROR; |
101 | if ((res = psiconv_write_color(extra_buf,value->color))) |
107 | if ((res = psiconv_write_color(extra_buf,value->color))) |
102 | goto ERROR; |
108 | goto ERROR; |
… | |
… | |
140 | |
146 | |
141 | if (!value) { |
147 | if (!value) { |
142 | psiconv_warn(0,psiconv_buffer_length(buf),"Null paragraph layout list"); |
148 | psiconv_warn(0,psiconv_buffer_length(buf),"Null paragraph layout list"); |
143 | return -PSICONV_E_GENERATE; |
149 | return -PSICONV_E_GENERATE; |
144 | } |
150 | } |
145 | if (!(extra_buf = psiconv_buffer_new(0))) |
151 | if (!(extra_buf = psiconv_buffer_new())) |
146 | return -PSICONV_E_NOMEM; |
152 | return -PSICONV_E_NOMEM; |
147 | |
153 | |
148 | if (!base || psiconv_compare_color(base->back_color,value->back_color)) { |
154 | if (!base || psiconv_compare_color(base->back_color,value->back_color)) { |
149 | if ((res = psiconv_write_u8(extra_buf,0x01))) |
155 | if ((res = psiconv_write_u8(extra_buf,0x01))) |
150 | goto ERROR; |
156 | goto ERROR; |
… | |
… | |
253 | |
259 | |
254 | if (!base || (value->no_widow_protection != base->no_widow_protection)) { |
260 | if (!base || (value->no_widow_protection != base->no_widow_protection)) { |
255 | if ((res = psiconv_write_u8(extra_buf,0x0e))) |
261 | if ((res = psiconv_write_u8(extra_buf,0x0e))) |
256 | goto ERROR; |
262 | goto ERROR; |
257 | if ((res = psiconv_write_bool(extra_buf,value->no_widow_protection))) |
263 | if ((res = psiconv_write_bool(extra_buf,value->no_widow_protection))) |
|
|
264 | goto ERROR; |
|
|
265 | } |
|
|
266 | |
|
|
267 | if (!base || (value->wrap_to_fit_cell != base->wrap_to_fit_cell)) { |
|
|
268 | if ((res = psiconv_write_u8(extra_buf,0x0f))) |
|
|
269 | goto ERROR; |
|
|
270 | if ((res = psiconv_write_bool(extra_buf,value->wrap_to_fit_cell))) |
258 | goto ERROR; |
271 | goto ERROR; |
259 | } |
272 | } |
260 | |
273 | |
261 | if (!base || (value->border_distance != base->border_distance)) { |
274 | if (!base || (value->border_distance != base->border_distance)) { |
262 | if ((res = psiconv_write_u8(extra_buf,0x10))) |
275 | if ((res = psiconv_write_u8(extra_buf,0x10))) |
… | |
… | |
349 | psiconv_buffer extra_buf; |
362 | psiconv_buffer extra_buf; |
350 | if (!value) { |
363 | if (!value) { |
351 | psiconv_warn(0,psiconv_buffer_length(buf),"Null character layout list"); |
364 | psiconv_warn(0,psiconv_buffer_length(buf),"Null character layout list"); |
352 | return -PSICONV_E_GENERATE; |
365 | return -PSICONV_E_GENERATE; |
353 | } |
366 | } |
354 | if (!(extra_buf = psiconv_buffer_new(0))) |
367 | if (!(extra_buf = psiconv_buffer_new())) |
355 | return -PSICONV_E_NOMEM; |
368 | return -PSICONV_E_NOMEM; |
356 | |
369 | |
357 | if (!base || psiconv_compare_color(base->color,value->color)) { |
370 | if (!base || psiconv_compare_color(base->color,value->color)) { |
358 | if ((res = psiconv_write_u8(extra_buf,0x19))) |
371 | if ((res = psiconv_write_u8(extra_buf,0x19))) |
359 | goto ERROR; |
372 | goto ERROR; |
… | |
… | |
397 | "Unknown supersubscript (%d); assuming normal", |
410 | "Unknown supersubscript (%d); assuming normal", |
398 | value->super_sub); |
411 | value->super_sub); |
399 | if ((res = psiconv_write_u8(extra_buf,0x1f))) |
412 | if ((res = psiconv_write_u8(extra_buf,0x1f))) |
400 | goto ERROR; |
413 | goto ERROR; |
401 | if ((res = psiconv_write_u8(extra_buf, |
414 | if ((res = psiconv_write_u8(extra_buf, |
402 | base->super_sub == psiconv_superscript?1: |
415 | value->super_sub == psiconv_superscript?1: |
403 | base->super_sub == psiconv_superscript?2:0))) |
416 | value->super_sub == psiconv_subscript?2:0))) |
404 | goto ERROR; |
417 | goto ERROR; |
405 | } |
418 | } |
406 | |
419 | |
407 | if (!base || (value->underline != base->underline)) { |
420 | if (!base || (value->underline != base->underline)) { |
408 | if ((res = psiconv_write_u8(extra_buf,0x20))) |
421 | if ((res = psiconv_write_u8(extra_buf,0x20))) |