/[public]/psiconv/trunk/program/psiconv/gen_xhtml.c
ViewVC logotype

Diff of /psiconv/trunk/program/psiconv/gen_xhtml.c

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

Revision 190 Revision 193
19#include "config.h" 19#include "config.h"
20 20
21#include <psiconv/configuration.h> 21#include <psiconv/configuration.h>
22#include <psiconv/data.h> 22#include <psiconv/data.h>
23#include "general.h" 23#include "general.h"
24#include "gen.h"
24 25
25#include <string.h> 26#include <string.h>
26#include <stdlib.h> 27#include <stdlib.h>
28#include <stdio.h>
27 29
28#ifdef DMALLOC 30#ifdef DMALLOC
29#include "dmalloc.h" 31#include "dmalloc.h"
30#endif 32#endif
31 33
32#define TEMPSTR_LEN 100 34#define TEMPSTR_LEN 100
35
36static void text(const psiconv_config config,psiconv_list list,
37 psiconv_string_t data,const encoding enc);
38static void color(const psiconv_config config, psiconv_list list,
39 psiconv_color color,int may_be_transparant, const encoding enc);
40static void border(const psiconv_config config, psiconv_list list,
41 psiconv_border_kind_t border,const encoding enc);
42static void style_name(const psiconv_config config, psiconv_list list,
43 const psiconv_string_t name,const encoding enc);
44static void character_layout_diffs(const psiconv_config config,
45 psiconv_list list,
46 const psiconv_character_layout new,
47 const psiconv_character_layout base,
48 const encoding enc);
49static void paragraph_layout_diffs(const psiconv_config config,
50 psiconv_list list,
51 const psiconv_paragraph_layout new,
52 const psiconv_paragraph_layout base,
53 const encoding enc);
54static void style(const psiconv_config config, psiconv_list list,
55 const psiconv_word_style style,
56 const psiconv_paragraph_layout base_para,
57 const psiconv_character_layout base_char,
58 const encoding enc);
59static void styles(const psiconv_config config, psiconv_list list,
60 const psiconv_word_styles_section styles_sec,const encoding enc);
61static void header(const psiconv_config config, psiconv_list list,
62 const psiconv_word_styles_section styles_sec,const encoding enc);
63static void footer(const psiconv_config config, psiconv_list list,
64 const encoding enc);
65static void characters(const psiconv_config config, psiconv_list list,
66 const psiconv_string_t textstr,
67 const psiconv_character_layout layout,
68 const psiconv_character_layout base,
69 const encoding enc);
70static void paragraphs(const psiconv_config config, psiconv_list list,
71 psiconv_text_and_layout paragraphs,
72 const psiconv_word_styles_section styles,
73 const encoding enc);
74static void paragraph(const psiconv_config config, psiconv_list list,
75 const psiconv_paragraph para,
76 const psiconv_word_styles_section styles_sec,
77 const encoding enc);
78static void gen_word(const psiconv_config config, psiconv_list list,
79 const psiconv_word_f file, const encoding enc);
80static void gen_texted(const psiconv_config config, psiconv_list list,
81 const psiconv_texted_f file, const encoding enc);
82static int gen_xhtml(const psiconv_config config, psiconv_list list,
83 const psiconv_file file, const char *dest,
84 const encoding enc);
85
86
87
88void text(const psiconv_config config,psiconv_list list,
89 psiconv_string_t data,const encoding enc)
90{
91 int i;
92 for (i = 0; i < psiconv_unicode_strlen(data); i++) {
93 if ((data[i] == 0x06) || (data[i] == 0x07) || (data[i] == 0x08))
94 output_simple_chars(config,list,"<br/>",enc);
95 else if ((data[i] == 0x0b) || (data[i] == 0x0c))
96 output_simple_chars(config,list,"-",enc);
97 else if ((data[i] == 0x0f) || (data[i] == 0x09) || (data[i] == 0x0a))
98 output_simple_chars(config,list," ",enc);
99 else if (data[i] >= 0x20)
100 output_char(config,list,data[i],enc);
101 }
102}
33 103
34void color(const psiconv_config config, psiconv_list list, 104void color(const psiconv_config config, psiconv_list list,
35 psiconv_color color,int may_be_transparant, const encoding enc) 105 psiconv_color color,int may_be_transparant, const encoding enc)
36{ 106{
37 char tempstr[TEMPSTR_LEN]; 107 char tempstr[TEMPSTR_LEN];
47 color->blue); 117 color->blue);
48 output_simple_chars(config,list,tempstr,enc); 118 output_simple_chars(config,list,tempstr,enc);
49 } 119 }
50} 120}
51 121
122void border(const psiconv_config config, psiconv_list list,
123 psiconv_border_kind_t border,const encoding enc)
124{
125 output_simple_chars(config,list,
126 border == psiconv_border_none?"none":
127 border == psiconv_border_solid?"solid":
128 border == psiconv_border_double?"double":
129 border == psiconv_border_dotted?"dotted":
130 border == psiconv_border_dashed?"dashed":
131 border == psiconv_border_dotdashed?"dashed":
132 border == psiconv_border_dotdotdashed?"dashed":"",enc);
133}
134
52void style_name(const psiconv_config config, psiconv_list list, 135void style_name(const psiconv_config config, psiconv_list list,
53 const psiconv_string_t name,const encoding enc) 136 const psiconv_string_t name,const encoding enc)
54{ 137{
55 psiconv_string_t name_copy; 138 psiconv_string_t name_copy;
56 int i; 139 int i;
76 const psiconv_character_layout base, 159 const psiconv_character_layout base,
77 const encoding enc) 160 const encoding enc)
78{ 161{
79 char tempstr[TEMPSTR_LEN]; 162 char tempstr[TEMPSTR_LEN];
80 163
164 if (!base || (new->color->red != base->color->red) ||
165 (new->color->green != base->color->green) ||
166 (new->color->blue != base->color->blue)) {
167 output_simple_chars(config,list,"color:",enc);
168 color(config,list,new->color,0,enc);
169 output_simple_chars(config,list,";",enc);
170 }
171
172 if (!base || (new->back_color->red != base->back_color->red) ||
173 (new->back_color->green != base->back_color->green) ||
174 (new->back_color->blue != base->back_color->blue)) {
175 output_simple_chars(config,list,"background-color:",enc);
176 color(config,list,new->back_color,1,enc);
177 output_simple_chars(config,list,";",enc);
178 }
179
180 if (!base || (new->font_size != base->font_size)) {
181 output_simple_chars(config,list,"font-size:",enc);
182 snprintf(tempstr,TEMPSTR_LEN,"%f",new->font_size);
183 output_simple_chars(config,list,tempstr,enc);
184 output_simple_chars(config,list,"pt;",enc);
185 }
186
81 if (!base || (new->italic != base->italic)) { 187 if (!base || (new->italic != base->italic)) {
82 output_simple_chars(config,list,"font-style:",enc); 188 output_simple_chars(config,list,"font-style:",enc);
83 output_simple_chars(config,list,new->italic?"italic":"normal",enc); 189 output_simple_chars(config,list,new->italic?"italic":"normal",enc);
190 output_simple_chars(config,list,";",enc);
191 }
192 if (!base || (new->bold != base->bold)) {
193 output_simple_chars(config,list,"font-weight:",enc);
194 output_simple_chars(config,list,new->bold?"bold":"normal",enc);
195 output_simple_chars(config,list,";",enc);
196 }
197 if (!base || (new->super_sub != base->super_sub)) {
198 output_simple_chars(config,list,"font-style:",enc);
199 output_simple_chars(config,list,
200 new->super_sub==psiconv_superscript?"super":
201 new->super_sub==psiconv_subscript?"sub":
202 "normal",enc);
84 output_simple_chars(config,list,";",enc); 203 output_simple_chars(config,list,";",enc);
85 } 204 }
86 if (!base || (new->underline != base->underline) || 205 if (!base || (new->underline != base->underline) ||
87 (new->strikethrough != base->strikethrough)) { 206 (new->strikethrough != base->strikethrough)) {
88 output_simple_chars(config,list,"text-decoration:",enc); 207 output_simple_chars(config,list,"text-decoration:",enc);
89 output_simple_chars(config,list,new->underline?"underline": 208 output_simple_chars(config,list,new->underline?"underline":
90 new->strikethrough?"line-through": 209 new->strikethrough?"line-through":
91 "none",enc); 210 "none",enc);
92 output_simple_chars(config,list,";",enc); 211 output_simple_chars(config,list,";",enc);
93 } 212 }
94 if (!base || (new->bold != base->bold)) { 213 if (!base || (new->font->screenfont != base->font->screenfont)) {
95 output_simple_chars(config,list,"font-weight:",enc);
96 output_simple_chars(config,list,new->bold?"bold":"normal",enc);
97 output_simple_chars(config,list,";",enc);
98 }
99 if (!base || (new->super_sub != base->super_sub)) {
100 output_simple_chars(config,list,"font-style:",enc); 214 output_simple_chars(config,list,"font-family:",enc);
101 output_simple_chars(config,list, 215 output_simple_chars(config,list,
102 new->super_sub==psiconv_superscript?"super": 216 new->font->screenfont == psiconv_font_serif?"serif":
103 new->super_sub==psiconv_subscript?"sub": 217 new->font->screenfont == psiconv_font_sansserif?"sans-serif":
104 "normal",enc); 218 new->font->screenfont == psiconv_font_nonprop?"monospace":
105 output_simple_chars(config,list,";",enc); 219 new->font->screenfont == psiconv_font_misc?"fantasy":"",
106 } 220 enc);
107
108 if (!base || (new->color->red != base->color->red) ||
109 (new->color->green != base->color->green) ||
110 (new->color->blue != base->color->blue)) {
111 output_simple_chars(config,list,"color:",enc);
112 color(config,list,new->color,0,enc);
113 output_simple_chars(config,list,";",enc);
114 }
115
116 if (!base || (new->back_color->red != base->back_color->red) ||
117 (new->back_color->green != base->back_color->green) ||
118 (new->back_color->blue != base->back_color->blue)) {
119 output_simple_chars(config,list,"background-color:",enc);
120 color(config,list,new->back_color,1,enc);
121 output_simple_chars(config,list,";",enc);
122 }
123
124 if (!base || (new->font_size != base->font_size)) {
125 output_simple_chars(config,list,"font-size:",enc);
126 snprintf(tempstr,TEMPSTR_LEN,"%f",new->font_size);
127 output_simple_chars(config,list,tempstr,enc);
128 output_simple_chars(config,list,"pt;",enc);
129 } 221 }
130} 222}
131 223
132void paragraph_layout_diffs(const psiconv_config config, psiconv_list list, 224void paragraph_layout_diffs(const psiconv_config config, psiconv_list list,
133 const psiconv_paragraph_layout new, 225 const psiconv_paragraph_layout new,
134 const psiconv_paragraph_layout base, 226 const psiconv_paragraph_layout base,
135 const encoding enc) 227 const encoding enc)
136{ 228{
137 char tempstr[TEMPSTR_LEN]; 229 char tempstr[TEMPSTR_LEN];
230 float pad_left_base=0.0,pad_left_new,text_indent_base=0.0,text_indent_new;
231
232 if (new->bullet->on) {
233 pad_left_new = new->indent_left < new->indent_first?
234 new->indent_left:new->indent_first;
235 text_indent_new = 0.0;
236 } else {
237 pad_left_new = new->indent_left;
238 text_indent_new = new->indent_first;
239 }
240 if (base) {
241 if (base->bullet->on) {
242 pad_left_base = base->indent_left < base->indent_first?
243 base->indent_left:base->indent_first;
244 text_indent_base = 0.0;
245 } else {
246 pad_left_base = base->indent_left;
247 text_indent_base = base->indent_first;
248 }
249 }
250
138 251
139 if (!base || (new->back_color->red != base->back_color->red) || 252 if (!base || (new->back_color->red != base->back_color->red) ||
140 (new->back_color->green != base->back_color->green) || 253 (new->back_color->green != base->back_color->green) ||
141 (new->back_color->blue != base->back_color->blue)) { 254 (new->back_color->blue != base->back_color->blue)) {
142 output_simple_chars(config,list,"background-color:",enc); 255 output_simple_chars(config,list,"background-color:",enc);
143 color(config,list,new->back_color,1,enc); 256 color(config,list,new->back_color,1,enc);
144 output_simple_chars(config,list,";",enc); 257 output_simple_chars(config,list,";",enc);
145 } 258 }
146 259
147 if (!base || (new->indent_left != base->indent_left)) { 260 if (!base || (pad_left_new != pad_left_base)) {
148 output_simple_chars(config,list,"padding-left:",enc); 261 output_simple_chars(config,list,"padding-left:",enc);
149 snprintf(tempstr,TEMPSTR_LEN,"%f",new->indent_left); 262 snprintf(tempstr,TEMPSTR_LEN,"%f",pad_left_new);
150 output_simple_chars(config,list,tempstr,enc); 263 output_simple_chars(config,list,tempstr,enc);
151 output_simple_chars(config,list,"cm;",enc); 264 output_simple_chars(config,list,"cm;",enc);
152 } 265 }
153 266
154 if (!base || (new->indent_right != base->indent_right)) { 267 if (!base || (new->indent_right != base->indent_right)) {
156 snprintf(tempstr,TEMPSTR_LEN,"%f",new->indent_right); 269 snprintf(tempstr,TEMPSTR_LEN,"%f",new->indent_right);
157 output_simple_chars(config,list,tempstr,enc); 270 output_simple_chars(config,list,tempstr,enc);
158 output_simple_chars(config,list,"cm;",enc); 271 output_simple_chars(config,list,"cm;",enc);
159 } 272 }
160 273
161 if (!base || (new->indent_left - new->indent_first != 274 if (!base || (text_indent_new != text_indent_base)) {
162 base->indent_left - base->indent_first)) {
163 output_simple_chars(config,list,"text-indent:",enc); 275 output_simple_chars(config,list,"text-indent:",enc);
164 snprintf(tempstr,TEMPSTR_LEN,"%f",new->indent_right - new->indent_first); 276 snprintf(tempstr,TEMPSTR_LEN,"%f",text_indent_new);
165 output_simple_chars(config,list,tempstr,enc); 277 output_simple_chars(config,list,tempstr,enc);
166 output_simple_chars(config,list,"cm;",enc); 278 output_simple_chars(config,list,"cm;",enc);
167 } 279 }
168 280
169 if (!base || (new->justify_hor != base ->justify_hor)) { 281 if (!base || (new->justify_hor != base ->justify_hor)) {
195 output_simple_chars(config,list,"padding-bottom:",enc); 307 output_simple_chars(config,list,"padding-bottom:",enc);
196 snprintf(tempstr,TEMPSTR_LEN,"%f",new->space_below); 308 snprintf(tempstr,TEMPSTR_LEN,"%f",new->space_below);
197 output_simple_chars(config,list,tempstr,enc); 309 output_simple_chars(config,list,tempstr,enc);
198 output_simple_chars(config,list,"pt;",enc); 310 output_simple_chars(config,list,"pt;",enc);
199 } 311 }
200 312
313 if (!base || (new->right_border->kind != base->right_border->kind)) {
314 output_simple_chars(config,list,"border-right-style:",enc);
315 border(config,list,new->right_border->kind,enc);
316 output_simple_chars(config,list,";",enc);
317 }
318 if (!base || (new->bottom_border->kind != base->bottom_border->kind)) {
319 output_simple_chars(config,list,"border-bottom-style:",enc);
320 border(config,list,new->bottom_border->kind,enc);
321 output_simple_chars(config,list,";",enc);
322 }
323 if (!base || (new->top_border->kind != base->top_border->kind)) {
324 output_simple_chars(config,list,"border-top-style:",enc);
325 border(config,list,new->top_border->kind,enc);
326 output_simple_chars(config,list,";",enc);
327 }
328 if (!base || (new->left_border->kind != base->left_border->kind)) {
329 output_simple_chars(config,list,"border-left-style:",enc);
330 border(config,list,new->left_border->kind,enc);
331 output_simple_chars(config,list,";",enc);
332 }
333
334 if (!base ||
335 ((new->right_border->kind != psiconv_border_none) &&
336 (new->right_border->thickness != base->right_border->thickness))) {
337 output_simple_chars(config,list,"border-right-width:",enc);
338 snprintf(tempstr,TEMPSTR_LEN,"%f",new->right_border->thickness);
339 output_simple_chars(config,list,tempstr,enc);
340 output_simple_chars(config,list,"pt;",enc);
341 }
342 if (!base ||
343 ((new->bottom_border->kind != psiconv_border_none) &&
344 (new->bottom_border->thickness != base->bottom_border->thickness))) {
345 output_simple_chars(config,list,"border-bottom-width:",enc);
346 snprintf(tempstr,TEMPSTR_LEN,"%f",new->bottom_border->thickness);
347 output_simple_chars(config,list,tempstr,enc);
348 output_simple_chars(config,list,"pt;",enc);
349 }
350 if (!base ||
351 ((new->top_border->kind != psiconv_border_none) &&
352 ( new->top_border->thickness != base->top_border->thickness))) {
353 output_simple_chars(config,list,"border-top-width:",enc);
354 snprintf(tempstr,TEMPSTR_LEN,"%f",new->top_border->thickness);
355 output_simple_chars(config,list,tempstr,enc);
356 output_simple_chars(config,list,"pt;",enc);
357 }
358 if (!base ||
359 ((new->left_border->kind != psiconv_border_none) &&
360 (new->left_border->thickness != base->left_border->thickness))) {
361 output_simple_chars(config,list,"border-left-width:",enc);
362 snprintf(tempstr,TEMPSTR_LEN,"%f",new->left_border->thickness);
363 output_simple_chars(config,list,tempstr,enc);
364 output_simple_chars(config,list,"pt;",enc);
365 }
366
367 if (!base ||
368 ((new->right_border->kind != psiconv_border_none) &&
369 ((new->right_border->color->red != base->right_border->color->red) ||
370 (new->right_border->color->green != base->right_border->color->green)||
371 (new->right_border->color->blue != base->right_border->color->blue)))) {
372 output_simple_chars(config,list,"border-right-color:",enc);
373 color(config,list,new->right_border->color,0,enc);
374 output_simple_chars(config,list,";",enc);
375 }
376 if (!base ||
377 ((new->top_border->kind != psiconv_border_none) &&
378 ((new->top_border->color->red != base->top_border->color->red) ||
379 (new->top_border->color->green != base->top_border->color->green) ||
380 (new->top_border->color->blue != base->top_border->color->blue)))) {
381 output_simple_chars(config,list,"border-top-color:",enc);
382 color(config,list,new->top_border->color,0,enc);
383 output_simple_chars(config,list,";",enc);
384 }
385 if (!base ||
386 ((new->bottom_border->kind != psiconv_border_none) &&
387 ((new->bottom_border->color->red != base->bottom_border->color->red) ||
388 (new->bottom_border->color->green !=base->bottom_border->color->green)||
389 (new->bottom_border->color->blue != base->bottom_border->color->blue)))){
390 output_simple_chars(config,list,"border-bottom-color:",enc);
391 color(config,list,new->bottom_border->color,0,enc);
392 output_simple_chars(config,list,";",enc);
393 }
394 if (!base ||
395 ((new->left_border->kind != psiconv_border_none) &&
396 ((new->left_border->color->red != base->left_border->color->red) ||
397 (new->left_border->color->green != base->left_border->color->green) ||
398 (new->left_border->color->blue != base->left_border->color->blue)))) {
399 output_simple_chars(config,list,"border-left-color:",enc);
400 color(config,list,new->left_border->color,0,enc);
401 output_simple_chars(config,list,";",enc);
402 }
201} 403}
202 404
203void style(const psiconv_config config, psiconv_list list, 405void style(const psiconv_config config, psiconv_list list,
204 const psiconv_word_style style, 406 const psiconv_word_style style,
205 const psiconv_paragraph_layout base_para, 407 const psiconv_paragraph_layout base_para,
206 const psiconv_character_layout base_char, 408 const psiconv_character_layout base_char,
207 const encoding enc) 409 const encoding enc)
208{ 410{
209 output_simple_chars(config,list,"p[class=\"style_",enc); 411 output_simple_chars(config,list,"*.style_",enc);
210 style_name(config,list,style->name,enc); 412 style_name(config,list,style->name,enc);
211 output_simple_chars(config,list,"\"] {",enc); 413 output_simple_chars(config,list," {",enc);
212 paragraph_layout_diffs(config,list,style->paragraph,base_para,enc); 414 paragraph_layout_diffs(config,list,style->paragraph,base_para,enc);
213 character_layout_diffs(config,list,style->character,base_char,enc); 415 character_layout_diffs(config,list,style->character,base_char,enc);
214 output_simple_chars(config,list,"}\n",enc); 416 output_simple_chars(config,list,"}\n",enc);
215} 417}
216 418
291 output_simple_chars(config,list,"</body>\n",enc); 493 output_simple_chars(config,list,"</body>\n",enc);
292 output_simple_chars(config,list,"</html>\n",enc); 494 output_simple_chars(config,list,"</html>\n",enc);
293} 495}
294 496
295void characters(const psiconv_config config, psiconv_list list, 497void characters(const psiconv_config config, psiconv_list list,
296 const psiconv_string_t text, 498 const psiconv_string_t textstr,
297 const psiconv_character_layout layout, 499 const psiconv_character_layout layout,
298 const psiconv_character_layout base, 500 const psiconv_character_layout base,
299 const encoding enc) 501 const encoding enc)
300{ 502{
301 psiconv_list templist; 503 psiconv_list templist;
313 exit(1); 515 exit(1);
314 } 516 }
315 output_simple_chars(config,list,"\">",enc); 517 output_simple_chars(config,list,"\">",enc);
316 } 518 }
317 519
318 output_string(config,list,text,enc); 520 text(config,list,textstr,enc);
319 521
320 if (psiconv_list_length(templist)) { 522 if (psiconv_list_length(templist)) {
321 output_simple_chars(config,list,"</span>",enc); 523 output_simple_chars(config,list,"</span>",enc);
322 } 524 }
323 525
356 fputs("Out of memory error\n",stderr); 558 fputs("Out of memory error\n",stderr);
357 exit(1); 559 exit(1);
358 } 560 }
359 } 561 }
360 562
361 output_simple_chars(config,list,"<p ",enc); 563 output_simple_chars(config,
564 list,para->base_paragraph->bullet->on?"<ul><li ":"<p ",
565 enc);
362 566
363 if (styles_sec) { 567 if (styles_sec) {
364 output_simple_chars(config,list,"class=\"style_",enc); 568 output_simple_chars(config,list,"class=\"style_",enc);
365 style_name(config,list,style->name,enc); 569 style_name(config,list,style->name,enc);
366 output_simple_chars(config,list,"\" ",enc); 570 output_simple_chars(config,list,"\" ",enc);
398 characters(config,list,text,layout->layout,para->base_character,enc); 602 characters(config,list,text,layout->layout,para->base_character,enc);
399 free(text); 603 free(text);
400 charnr += layout->length; 604 charnr += layout->length;
401 } 605 }
402 } 606 }
403 output_simple_chars(config,list,"</p>\n",enc); 607 output_simple_chars(config, list,
608 para->base_paragraph->bullet->on?"</li></ul>\n":"</p>\n",
609 enc);
404 if (!styles_sec) { 610 if (!styles_sec) {
405 psiconv_free_paragraph_layout(base_para); 611 psiconv_free_paragraph_layout(base_para);
406 psiconv_free_character_layout(base_char); 612 psiconv_free_character_layout(base_char);
407 } 613 }
408 psiconv_list_free(templist); 614 psiconv_list_free(templist);
422 } 628 }
423 paragraph(config,list,para,styles,enc); 629 paragraph(config,list,para,styles,enc);
424 } 630 }
425} 631}
426 632
427void gen_html_word(const psiconv_config config, psiconv_list list, 633void gen_word(const psiconv_config config, psiconv_list list,
428 const psiconv_word_f file, const encoding enc) 634 const psiconv_word_f file, const encoding enc)
429{ 635{
430 if (!file) 636 if (!file)
431 return; 637 return;
432 638
434 paragraphs(config,list,file->paragraphs,file->styles_sec,enc); 640 paragraphs(config,list,file->paragraphs,file->styles_sec,enc);
435 footer(config,list,enc); 641 footer(config,list,enc);
436} 642}
437 643
438 644
439void gen_html_texted(const psiconv_config config, psiconv_list list, 645void gen_texted(const psiconv_config config, psiconv_list list,
440 const psiconv_texted_f file, const encoding enc) 646 const psiconv_texted_f file, const encoding enc)
441{ 647{
442 header(config,list,NULL,enc); 648 header(config,list,NULL,enc);
443 paragraphs(config,list,file->texted_sec->paragraphs,NULL,enc); 649 paragraphs(config,list,file->texted_sec->paragraphs,NULL,enc);
444 footer(config,list,enc); 650 footer(config,list,enc);
445} 651}
446 652
447int gen_html(const psiconv_config config, psiconv_list list, 653int gen_xhtml(const psiconv_config config, psiconv_list list,
448 const psiconv_file file, const char *dest, 654 const psiconv_file file, const char *dest,
449 const encoding enc) 655 const encoding enc)
450{ 656{
657 encoding enc1 = enc;
658
451 if (enc == ENCODING_PSION) { 659 if (enc == ENCODING_PSION) {
452 fputs("Unsupported encoding\n",stderr); 660 fputs("Unsupported encoding\n",stderr);
453 return -1; 661 return -1;
454 } 662 } else if (enc == ENCODING_ASCII)
663 enc1 = ENCODING_ASCII_HTML;
455 664
456 if (file->type == psiconv_word_file) { 665 if (file->type == psiconv_word_file) {
457 gen_html_word(config,list,(psiconv_word_f) file->file,enc); 666 gen_word(config,list,(psiconv_word_f) file->file,enc1);
458 return 0; 667 return 0;
459 } else if (file->type == psiconv_texted_file) { 668 } else if (file->type == psiconv_texted_file) {
460 gen_html_texted(config,list,(psiconv_texted_f) file->file,enc); 669 gen_texted(config,list,(psiconv_texted_f) file->file,enc1);
461 return 0; 670 return 0;
462 } else 671 } else
463 return -1; 672 return -1;
464} 673}
465 674
467static struct fileformat_s ffs[] = 676static struct fileformat_s ffs[] =
468 { 677 {
469 { 678 {
470 "XHTML", 679 "XHTML",
471 "XHTML 1.0 Strict, using CSS for formatting", 680 "XHTML 1.0 Strict, using CSS for formatting",
681 FORMAT_WORD | FORMAT_TEXTED,
472 gen_html 682 gen_xhtml
473 }, 683 },
474 { 684 {
475 NULL, 685 NULL,
476 NULL, 686 NULL,
687 0,
477 NULL 688 NULL
478 } 689 }
479 }; 690 };
480 691
481 692
482void init_html(void) 693void init_xhtml(void)
483{ 694{
484 int i; 695 int i;
485 for (i = 0; ffs[i].name; i++) 696 for (i = 0; ffs[i].name; i++)
486 psiconv_list_add(fileformat_list,ffs+i); 697 psiconv_list_add(fileformat_list,ffs+i);
487} 698}

Legend:
Removed from v.190  
changed lines
  Added in v.193

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