/[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 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
33 87
34void text(const psiconv_config config,psiconv_list list, 88void text(const psiconv_config config,psiconv_list list,
35 psiconv_string_t data,const encoding enc) 89 psiconv_string_t data,const encoding enc)
36{ 90{
37 int i; 91 int i;
38 for (i = 0; i < psiconv_unicode_strlen(data); i++) { 92 for (i = 0; i < psiconv_unicode_strlen(data); i++) {
39 if ((data[i] == 0x06) || (data[i] == 0x07) || (data[i] == 0x08)) 93 if ((data[i] == 0x06) || (data[i] == 0x07) || (data[i] == 0x08))
40 output_simple_chars(config,list,"<br/>",enc); 94 output_simple_chars(config,list,"<br/>",enc);
41 else if ((data[i] == 0x0b) || (data[i] == 0x0c)) 95 else if ((data[i] == 0x0b) || (data[i] == 0x0c))
42 output_simple_chars(config,list,"-",enc); 96 output_simple_chars(config,list,"-",enc);
43 else if (data[i] == 0x0f) 97 else if ((data[i] == 0x0f) || (data[i] == 0x09) || (data[i] == 0x0a))
44 output_simple_chars(config,list," ",enc); 98 output_simple_chars(config,list," ",enc);
45 else if (data[i] >= 0x20) 99 else if (data[i] >= 0x20)
46 output_char(config,list,data[i],enc); 100 output_char(config,list,data[i],enc);
47 } 101 }
48} 102}
549 free(text); 603 free(text);
550 charnr += layout->length; 604 charnr += layout->length;
551 } 605 }
552 } 606 }
553 output_simple_chars(config, list, 607 output_simple_chars(config, list,
554 para->base_paragraph->bullet->on?"</li></ul>\n":"<p>\n", 608 para->base_paragraph->bullet->on?"</li></ul>\n":"</p>\n",
555 enc); 609 enc);
556 if (!styles_sec) { 610 if (!styles_sec) {
557 psiconv_free_paragraph_layout(base_para); 611 psiconv_free_paragraph_layout(base_para);
558 psiconv_free_character_layout(base_char); 612 psiconv_free_character_layout(base_char);
559 } 613 }
574 } 628 }
575 paragraph(config,list,para,styles,enc); 629 paragraph(config,list,para,styles,enc);
576 } 630 }
577} 631}
578 632
579void gen_html_word(const psiconv_config config, psiconv_list list, 633void gen_word(const psiconv_config config, psiconv_list list,
580 const psiconv_word_f file, const encoding enc) 634 const psiconv_word_f file, const encoding enc)
581{ 635{
582 if (!file) 636 if (!file)
583 return; 637 return;
584 638
586 paragraphs(config,list,file->paragraphs,file->styles_sec,enc); 640 paragraphs(config,list,file->paragraphs,file->styles_sec,enc);
587 footer(config,list,enc); 641 footer(config,list,enc);
588} 642}
589 643
590 644
591void gen_html_texted(const psiconv_config config, psiconv_list list, 645void gen_texted(const psiconv_config config, psiconv_list list,
592 const psiconv_texted_f file, const encoding enc) 646 const psiconv_texted_f file, const encoding enc)
593{ 647{
594 header(config,list,NULL,enc); 648 header(config,list,NULL,enc);
595 paragraphs(config,list,file->texted_sec->paragraphs,NULL,enc); 649 paragraphs(config,list,file->texted_sec->paragraphs,NULL,enc);
596 footer(config,list,enc); 650 footer(config,list,enc);
597} 651}
598 652
599int gen_html(const psiconv_config config, psiconv_list list, 653int gen_xhtml(const psiconv_config config, psiconv_list list,
600 const psiconv_file file, const char *dest, 654 const psiconv_file file, const char *dest,
601 const encoding enc) 655 const encoding enc)
602{ 656{
657 encoding enc1 = enc;
658
603 if (enc == ENCODING_PSION) { 659 if (enc == ENCODING_PSION) {
604 fputs("Unsupported encoding\n",stderr); 660 fputs("Unsupported encoding\n",stderr);
605 return -1; 661 return -1;
606 } 662 } else if (enc == ENCODING_ASCII)
663 enc1 = ENCODING_ASCII_HTML;
607 664
608 if (file->type == psiconv_word_file) { 665 if (file->type == psiconv_word_file) {
609 gen_html_word(config,list,(psiconv_word_f) file->file,enc); 666 gen_word(config,list,(psiconv_word_f) file->file,enc1);
610 return 0; 667 return 0;
611 } else if (file->type == psiconv_texted_file) { 668 } else if (file->type == psiconv_texted_file) {
612 gen_html_texted(config,list,(psiconv_texted_f) file->file,enc); 669 gen_texted(config,list,(psiconv_texted_f) file->file,enc1);
613 return 0; 670 return 0;
614 } else 671 } else
615 return -1; 672 return -1;
616} 673}
617 674
619static struct fileformat_s ffs[] = 676static struct fileformat_s ffs[] =
620 { 677 {
621 { 678 {
622 "XHTML", 679 "XHTML",
623 "XHTML 1.0 Strict, using CSS for formatting", 680 "XHTML 1.0 Strict, using CSS for formatting",
681 FORMAT_WORD | FORMAT_TEXTED,
624 gen_html 682 gen_xhtml
625 }, 683 },
626 { 684 {
627 NULL, 685 NULL,
628 NULL, 686 NULL,
687 0,
629 NULL 688 NULL
630 } 689 }
631 }; 690 };
632 691
633 692
634void init_html(void) 693void init_xhtml(void)
635{ 694{
636 int i; 695 int i;
637 for (i = 0; ffs[i].name; i++) 696 for (i = 0; ffs[i].name; i++)
638 psiconv_list_add(fileformat_list,ffs+i); 697 psiconv_list_add(fileformat_list,ffs+i);
639} 698}

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

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