/[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 191 Revision 192
28#ifdef DMALLOC 28#ifdef DMALLOC
29#include "dmalloc.h" 29#include "dmalloc.h"
30#endif 30#endif
31 31
32#define TEMPSTR_LEN 100 32#define TEMPSTR_LEN 100
33
34static void text(const psiconv_config config,psiconv_list list,
35 psiconv_string_t data,const encoding enc);
36static void color(const psiconv_config config, psiconv_list list,
37 psiconv_color color,int may_be_transparant, const encoding enc);
38static void border(const psiconv_config config, psiconv_list list,
39 psiconv_border_kind_t border,const encoding enc);
40static void style_name(const psiconv_config config, psiconv_list list,
41 const psiconv_string_t name,const encoding enc);
42static void character_layout_diffs(const psiconv_config config,
43 psiconv_list list,
44 const psiconv_character_layout new,
45 const psiconv_character_layout base,
46 const encoding enc);
47static void paragraph_layout_diffs(const psiconv_config config,
48 psiconv_list list,
49 const psiconv_paragraph_layout new,
50 const psiconv_paragraph_layout base,
51 const encoding enc);
52static void style(const psiconv_config config, psiconv_list list,
53 const psiconv_word_style style,
54 const psiconv_paragraph_layout base_para,
55 const psiconv_character_layout base_char,
56 const encoding enc);
57static void styles(const psiconv_config config, psiconv_list list,
58 const psiconv_word_styles_section styles_sec,const encoding enc);
59static void header(const psiconv_config config, psiconv_list list,
60 const psiconv_word_styles_section styles_sec,const encoding enc);
61static void footer(const psiconv_config config, psiconv_list list,
62 const encoding enc);
63static void characters(const psiconv_config config, psiconv_list list,
64 const psiconv_string_t textstr,
65 const psiconv_character_layout layout,
66 const psiconv_character_layout base,
67 const encoding enc);
68static void paragraph(const psiconv_config config, psiconv_list list,
69 const psiconv_paragraph para,
70 const psiconv_word_styles_section styles_sec,
71 const encoding enc);
72static void gen_word(const psiconv_config config, psiconv_list list,
73 const psiconv_word_f file, const encoding enc);
74static void gen_texted(const psiconv_config config, psiconv_list list,
75 const psiconv_texted_f file, const encoding enc);
76
77
33 78
34void text(const psiconv_config config,psiconv_list list, 79void text(const psiconv_config config,psiconv_list list,
35 psiconv_string_t data,const encoding enc) 80 psiconv_string_t data,const encoding enc)
36{ 81{
37 int i; 82 int i;
549 free(text); 594 free(text);
550 charnr += layout->length; 595 charnr += layout->length;
551 } 596 }
552 } 597 }
553 output_simple_chars(config, list, 598 output_simple_chars(config, list,
554 para->base_paragraph->bullet->on?"</li></ul>\n":"<p>\n", 599 para->base_paragraph->bullet->on?"</li></ul>\n":"</p>\n",
555 enc); 600 enc);
556 if (!styles_sec) { 601 if (!styles_sec) {
557 psiconv_free_paragraph_layout(base_para); 602 psiconv_free_paragraph_layout(base_para);
558 psiconv_free_character_layout(base_char); 603 psiconv_free_character_layout(base_char);
559 } 604 }
574 } 619 }
575 paragraph(config,list,para,styles,enc); 620 paragraph(config,list,para,styles,enc);
576 } 621 }
577} 622}
578 623
579void gen_html_word(const psiconv_config config, psiconv_list list, 624void gen_word(const psiconv_config config, psiconv_list list,
580 const psiconv_word_f file, const encoding enc) 625 const psiconv_word_f file, const encoding enc)
581{ 626{
582 if (!file) 627 if (!file)
583 return; 628 return;
584 629
586 paragraphs(config,list,file->paragraphs,file->styles_sec,enc); 631 paragraphs(config,list,file->paragraphs,file->styles_sec,enc);
587 footer(config,list,enc); 632 footer(config,list,enc);
588} 633}
589 634
590 635
591void gen_html_texted(const psiconv_config config, psiconv_list list, 636void gen_texted(const psiconv_config config, psiconv_list list,
592 const psiconv_texted_f file, const encoding enc) 637 const psiconv_texted_f file, const encoding enc)
593{ 638{
594 header(config,list,NULL,enc); 639 header(config,list,NULL,enc);
595 paragraphs(config,list,file->texted_sec->paragraphs,NULL,enc); 640 paragraphs(config,list,file->texted_sec->paragraphs,NULL,enc);
596 footer(config,list,enc); 641 footer(config,list,enc);
597} 642}
598 643
599int gen_html(const psiconv_config config, psiconv_list list, 644int gen_xhtml(const psiconv_config config, psiconv_list list,
600 const psiconv_file file, const char *dest, 645 const psiconv_file file, const char *dest,
601 const encoding enc) 646 const encoding enc)
602{ 647{
648 encoding enc1 = enc;
649
603 if (enc == ENCODING_PSION) { 650 if (enc == ENCODING_PSION) {
604 fputs("Unsupported encoding\n",stderr); 651 fputs("Unsupported encoding\n",stderr);
605 return -1; 652 return -1;
606 } 653 } else if (enc == ENCODING_ASCII)
654 enc1 = ENCODING_ASCII_HTML;
607 655
608 if (file->type == psiconv_word_file) { 656 if (file->type == psiconv_word_file) {
609 gen_html_word(config,list,(psiconv_word_f) file->file,enc); 657 gen_word(config,list,(psiconv_word_f) file->file,enc1);
610 return 0; 658 return 0;
611 } else if (file->type == psiconv_texted_file) { 659 } else if (file->type == psiconv_texted_file) {
612 gen_html_texted(config,list,(psiconv_texted_f) file->file,enc); 660 gen_texted(config,list,(psiconv_texted_f) file->file,enc1);
613 return 0; 661 return 0;
614 } else 662 } else
615 return -1; 663 return -1;
616} 664}
617 665
619static struct fileformat_s ffs[] = 667static struct fileformat_s ffs[] =
620 { 668 {
621 { 669 {
622 "XHTML", 670 "XHTML",
623 "XHTML 1.0 Strict, using CSS for formatting", 671 "XHTML 1.0 Strict, using CSS for formatting",
672 FORMAT_WORD | FORMAT_TEXTED,
624 gen_html 673 gen_xhtml
625 }, 674 },
626 { 675 {
627 NULL, 676 NULL,
628 NULL, 677 NULL,
678 0,
629 NULL 679 NULL
630 } 680 }
631 }; 681 };
632 682
633 683
634void init_html(void) 684void init_xhtml(void)
635{ 685{
636 int i; 686 int i;
637 for (i = 0; ffs[i].name; i++) 687 for (i = 0; ffs[i].name; i++)
638 psiconv_list_add(fileformat_list,ffs+i); 688 psiconv_list_add(fileformat_list,ffs+i);
639} 689}

Legend:
Removed from v.191  
changed lines
  Added in v.192

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