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

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

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

Revision 14 Revision 90
19 19
20#include "config.h" 20#include "config.h"
21#include <stdio.h> 21#include <stdio.h>
22#include <string.h> 22#include <string.h>
23#include <stdlib.h> 23#include <stdlib.h>
24#include "data.h" 24#include "psiconv/data.h"
25#include "list.h" 25#include "psiconv/list.h"
26#include "gen.h" 26#include "gen.h"
27#include "psiconv.h"
27 28
28/* This determines for each character how it is displayed */ 29/* This determines for each character how it is displayed */
29static const char *char_table[0x100] = 30static const char *char_table[0x100] =
30{ 31{
31 /* 0x00 */ "" ,"" ,"" ,"" ,"" ,"" ,"<P> ","<BR>" , 32 /* 0x00 */ "" ,"" ,"" ,"" ,"" ,"" ,"<P> ","<BR>" ,
90 This one is specific for the base point of HTML */ 91 This one is specific for the base point of HTML */
91psiconv_character_layout gen_base_char(const psiconv_font font, 92psiconv_character_layout gen_base_char(const psiconv_font font,
92 const psiconv_color color, 93 const psiconv_color color,
93 const psiconv_color back_color) 94 const psiconv_color back_color)
94{ 95{
95 struct psiconv_character_layout base_char_struct = 96 struct psiconv_character_layout_s base_char_struct =
96 { 97 {
97 color, /* color */ 98 NULL, /* color */
98 back_color, /* back_color */ 99 NULL, /* back_color */
99 13.0, /* font_size */ 100 13.0, /* font_size */
100 psiconv_bool_false, /* italic */ 101 psiconv_bool_false, /* italic */
101 psiconv_bool_false, /* bold */ 102 psiconv_bool_false, /* bold */
102 psiconv_normalscript, /* super_sub */ 103 psiconv_normalscript, /* super_sub */
103 psiconv_bool_false, /* underline */ 104 psiconv_bool_false, /* underline */
104 psiconv_bool_false, /* strike_out */ 105 psiconv_bool_false, /* strikethrough */
105 font, /* font */ 106 NULL, /* font */
106 }; 107 };
108 base_char_struct.color = color;
109 base_char_struct.back_color = back_color;
110 base_char_struct.font = font;
107 return psiconv_clone_character_layout(&base_char_struct); 111 return psiconv_clone_character_layout(&base_char_struct);
108} 112}
109 113
110/* flags & 1: 0 if no <FONT> was yet generated. 114/* flags & 1: 0 if no <FONT> was yet generated.
111 flags & 2: 1 if at end-of-paragraph 115 flags & 2: 1 if at end-of-paragraph
127 fputs("</I>",of); 131 fputs("</I>",of);
128 if (old->bold) 132 if (old->bold)
129 fputs("</B>",of); 133 fputs("</B>",of);
130 if (old->underline) 134 if (old->underline)
131 fputs("</U>",of); 135 fputs("</U>",of);
132 if (old->strike_out) 136 if (old->strikethrough)
133 fputs("</STRIKE>",of); 137 fputs("</STRIKE>",of);
134 if (old->super_sub == psiconv_superscript) 138 if (old->super_sub == psiconv_superscript)
135 fputs("</SUP>",of); 139 fputs("</SUP>",of);
136 if (old->super_sub == psiconv_subscript) 140 if (old->super_sub == psiconv_subscript)
137 fputs("</SUB>",of); 141 fputs("</SUB>",of);
154 fputs("6",of); 158 fputs("6",of);
155 else 159 else
156 fputs("7",of); 160 fputs("7",of);
157 fprintf(of," COLOR=#%02x%02x%02x",new->color->red,new->color->green, 161 fprintf(of," COLOR=#%02x%02x%02x",new->color->red,new->color->green,
158 new->color->blue); 162 new->color->blue);
159 if (new->font->screenfont == 1) 163 if (new->font->screenfont == psiconv_font_sansserif)
160 fprintf(of," FACE=\"%s, Sans-Serif\">",new->font->name); 164 fprintf(of," FACE=\"%s, Sans-Serif\">",new->font->name);
161 else if (new->font->screenfont == 2) 165 else if (new->font->screenfont == psiconv_font_nonprop)
162 fprintf(of," FACE=\"%s, Monospace\">",new->font-> name); 166 fprintf(of," FACE=\"%s, Monospace\">",new->font-> name);
163 else if (new->font->screenfont == 3) 167 else if (new->font->screenfont == psiconv_font_serif)
164 fprintf(of," FACE=\"%s, Serif\">",new->font-> name); 168 fprintf(of," FACE=\"%s, Serif\">",new->font-> name);
165 else 169 else
166 fprintf(of," FACE=\"%s, Serif\">",new->font-> name); 170 fprintf(of," FACE=\"%s, Serif\">",new->font-> name);
167 } 171 }
168 if (new->italic) 172 if (new->italic)
169 fputs("<I>",of); 173 fputs("<I>",of);
170 if (new->bold) 174 if (new->bold)
171 fputs("<B>",of); 175 fputs("<B>",of);
172 if (new->underline) 176 if (new->underline)
173 fputs("<U>",of); 177 fputs("<U>",of);
174 if (new->strike_out) 178 if (new->strikethrough)
175 fputs("<STRIKE>",of); 179 fputs("<STRIKE>",of);
176 if (new->super_sub == psiconv_superscript) 180 if (new->super_sub == psiconv_superscript)
177 fputs("<SUP>",of); 181 fputs("<SUP>",of);
178 if (new->super_sub == psiconv_subscript) 182 if (new->super_sub == psiconv_subscript)
179 fputs("<SUB>",of); 183 fputs("<SUB>",of);
194 if (old->underline) 198 if (old->underline)
195 fputs("</U>",of); 199 fputs("</U>",of);
196 else 200 else
197 fputs("<U>",of); 201 fputs("<U>",of);
198 } 202 }
199 if (old->strike_out != new->strike_out) { 203 if (old->strikethrough != new->strikethrough) {
200 if (old->strike_out) 204 if (old->strikethrough)
201 fputs("</STRIKE>",of); 205 fputs("</STRIKE>",of);
202 else 206 else
203 fputs("<STRIKE>",of); 207 fputs("<STRIKE>",of);
204 } 208 }
205 if (old->super_sub != new->super_sub) { 209 if (old->super_sub != new->super_sub) {
273 fputs("</UL>",of); 277 fputs("</UL>",of);
274 278
275 fputs("</P>\n",of); 279 fputs("</P>\n",of);
276} 280}
277 281
278void psiconv_gen_html(FILE *of,psiconv_file file) 282int psiconv_gen_html(const char * filename,const psiconv_file file,
283 const char *dest)
279{ 284{
285 FILE *of = fopen(filename,"w");
286 if (! of)
287 return -1;
288
280 if (file->type == psiconv_word_file) 289 if (file->type == psiconv_word_file) {
281 psiconv_gen_html_word(of,(psiconv_word_f) file->file); 290 psiconv_gen_html_word(of,(psiconv_word_f) file->file);
282 else if (file->type == psiconv_texted_file) 291 } else if (file->type == psiconv_texted_file) {
283 psiconv_gen_html_texted(of,(psiconv_texted_f) file->file); 292 psiconv_gen_html_texted(of,(psiconv_texted_f) file->file);
284 else 293 } else {
294 fclose(of);
285 return; 295 return -1;
296 }
297 return fclose(of);
286} 298}
287 299
288void psiconv_gen_html_texted(FILE *of,psiconv_texted_f tf) 300void psiconv_gen_html_texted(FILE *of,psiconv_texted_f tf)
289{ 301{
290 psiconv_character_layout base_char; 302 psiconv_character_layout base_char;
341 } 353 }
342 fputs("</BODY>\n</HTML>\n",of); 354 fputs("</BODY>\n</HTML>\n",of);
343 psiconv_free_character_layout(base_char); 355 psiconv_free_character_layout(base_char);
344} 356}
345 357
358static struct psiconv_fileformat_s ff =
359 {
360 "HTML3",
361 "HTML 3.2, not verified so probably not completely compliant",
362 &psiconv_gen_html
363 };
346 364
365void init_html(void)
366{
367 psiconv_list_add(fileformat_list,&ff);
368}

Legend:
Removed from v.14  
changed lines
  Added in v.90

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