/[public]/psiconv/trunk/lib/psiconv/parse_common.c
ViewVC logotype

Diff of /psiconv/trunk/lib/psiconv/parse_common.c

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

Revision 41 Revision 63
1/* 1/*
2 parse_common.c - Part of psiconv, a PSION 5 file formats converter 2 parse_common.c - Part of psiconv, a PSION 5 file formats converter
3 Copyright (c) 1999 Frodo Looijaard <frodol@dds.nl> 3 Copyright (c) 1999, 2000 Frodo Looijaard <frodol@dds.nl>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
51 (*result)->file = psiconv_clipart_file; 51 (*result)->file = psiconv_clipart_file;
52 (*result)->uid2 = 0; 52 (*result)->uid2 = 0;
53 (*result)->uid3 = 0; 53 (*result)->uid3 = 0;
54 (*result)->checksum = 0; 54 (*result)->checksum = 0;
55 len += 4; 55 len += 4;
56 psiconv_debug(lev+2,off+len,"File is a Clipart file");
56 goto DONE; 57 goto DONE;
57 } 58 }
58 if ((*result)->uid1 != PSICONV_ID_PSION5) { 59 if ((*result)->uid1 != PSICONV_ID_PSION5) {
59 psiconv_warn(lev+2,off+len,"UID1 has unknown value. This is probably " 60 psiconv_warn(lev+2,off+len,"UID1 has unknown value. This is probably "
60 "not a (parsable) Psion 5 file"); 61 "not a (parsable) Psion 5 file");
257 free(para); 258 free(para);
258 259
259 /* Initialize the remaining parts of each paragraph */ 260 /* Initialize the remaining parts of each paragraph */
260 for (i = 0; i < psiconv_list_length(*result); i ++) { 261 for (i = 0; i < psiconv_list_length(*result); i ++) {
261 para = psiconv_list_get(*result,i); 262 para = psiconv_list_get(*result,i);
262 para->in_lines = psiconv_list_new(sizeof(struct psiconv_in_line_layout)); 263 para->in_lines = psiconv_list_new(sizeof(struct psiconv_in_line_layout_s));
263 para->replacements = psiconv_list_new(sizeof(struct psiconv_replacement)); 264 para->replacements = psiconv_list_new(sizeof(struct psiconv_replacement_s));
264 para->base_style = 0; 265 para->base_style = 0;
265 para->base_character = psiconv_basic_character_layout(); 266 para->base_character = psiconv_basic_character_layout();
266 para->base_paragraph = psiconv_basic_paragraph_layout(); 267 para->base_paragraph = psiconv_basic_paragraph_layout();
267 } 268 }
268 269
289 int res = 0; 290 int res = 0;
290 int len = 0; 291 int len = 0;
291 psiconv_u32 temp; 292 psiconv_u32 temp;
292 int parse_styles,nr,i,j,total,leng,line_length; 293 int parse_styles,nr,i,j,total,leng,line_length;
293 294
294 typedef struct anon_style 295 typedef struct anon_style_s
295 { 296 {
296 int nr; 297 int nr;
297 psiconv_s16 base_style; 298 psiconv_s16 base_style;
298 psiconv_character_layout character; 299 psiconv_character_layout character;
299 psiconv_paragraph_layout paragraph; 300 psiconv_paragraph_layout paragraph;
300 } *anon_style; 301 } *anon_style;
301 302
302 typedef psiconv_list anon_style_list; /* of struct anon_style */ 303 typedef psiconv_list anon_style_list; /* of struct anon_style */
303 304
304 anon_style_list anon_styles; 305 anon_style_list anon_styles;
305 struct anon_style anon; 306 struct anon_style_s anon;
306 anon_style anon_ptr=NULL; 307 anon_style anon_ptr=NULL;
307 308
308 psiconv_paragraph para; 309 psiconv_paragraph para;
309 struct psiconv_in_line_layout in_line; 310 struct psiconv_in_line_layout_s in_line;
310 311
311 int *inline_count; 312 int *inline_count;
312 313
313 314
314 psiconv_progress(lev+1,off,"Going to read the layout section"); 315 psiconv_progress(lev+1,off,"Going to read the layout section");
395 for (i = 0; i < nr; i ++) { 396 for (i = 0; i < nr; i ++) {
396 psiconv_progress(lev+3,off+len,"Element %d",i); 397 psiconv_progress(lev+3,off+len,"Element %d",i);
397 if (i >= psiconv_list_length(result)) { 398 if (i >= psiconv_list_length(result)) {
398 psiconv_debug(lev+4,off+len,"Going to allocate a new element"); 399 psiconv_debug(lev+4,off+len,"Going to allocate a new element");
399 para = malloc(sizeof(*para)); 400 para = malloc(sizeof(*para));
400 para->in_lines = psiconv_list_new(sizeof(struct psiconv_in_line_layout)); 401 para->in_lines = psiconv_list_new(sizeof(struct psiconv_in_line_layout_s));
401 para->base_style = 0; 402 para->base_style = 0;
402 para->base_character = psiconv_basic_character_layout(); 403 para->base_character = psiconv_basic_character_layout();
403 para->base_paragraph = psiconv_basic_paragraph_layout(); 404 para->base_paragraph = psiconv_basic_paragraph_layout();
404 free(para); 405 free(para);
405 } 406 }
451 } else { 452 } else {
452 psiconv_debug(lev+4,off+len,"Type: %02x (not based on a paragraph type)" 453 psiconv_debug(lev+4,off+len,"Type: %02x (not based on a paragraph type)"
453 ,temp); 454 ,temp);
454 len += 0x01; 455 len += 0x01;
455 if (parse_styles) { 456 if (parse_styles) {
456 psiconv_progress(lev+4,off+len+psiconv_read_u32(buf,lev+4,off+len), 457 psiconv_progress(lev+4,off+len+psiconv_read_u32(buf,lev+4,off+len)+4,
457 "Going to read the paragraph element base style"); 458 "Going to read the paragraph element base style");
458 temp = psiconv_read_u8(buf,lev+4, 459 temp = psiconv_read_u8(buf,lev+4,
459 off+len+psiconv_read_u32(buf,lev+4,off+len)); 460 off+len+psiconv_read_u32(buf,lev+4,off+len)+4);
460 psiconv_debug(lev+4,off+len+psiconv_read_u32(buf,lev+4,off+len), 461 psiconv_debug(lev+4,off+len+psiconv_read_u32(buf,lev+4,off+len)+4,
461 "Style: %02x",temp); 462 "Style: %02x",temp);
462 } else 463 } else
463 temp = 0x00; 464 temp = 0x00;
464 psiconv_free_paragraph_layout(para->base_paragraph); 465 psiconv_free_paragraph_layout(para->base_paragraph);
465 psiconv_free_character_layout(para->base_character); 466 psiconv_free_character_layout(para->base_character);
585 styles_section->normal = malloc(sizeof(*styles_section->normal)); 586 styles_section->normal = malloc(sizeof(*styles_section->normal));
586 styles_section->normal->character = psiconv_clone_character_layout(base_char); 587 styles_section->normal->character = psiconv_clone_character_layout(base_char);
587 styles_section->normal->paragraph = psiconv_clone_paragraph_layout(base_para); 588 styles_section->normal->paragraph = psiconv_clone_paragraph_layout(base_para);
588 styles_section->normal->hotkey = 0; 589 styles_section->normal->hotkey = 0;
589 styles_section->normal->name = strdup(""); 590 styles_section->normal->name = strdup("");
590 styles_section->styles = psiconv_list_new(sizeof(struct psiconv_word_style)); 591 styles_section->styles = psiconv_list_new(sizeof(struct psiconv_word_style_s));
591 592
592 res = psiconv_parse_layout_section(buf,lev,off,length,result, 593 res = psiconv_parse_layout_section(buf,lev,off,length,result,
593 styles_section,0); 594 styles_section,0);
594 595
595 psiconv_free_word_styles_section(styles_section); 596 psiconv_free_word_styles_section(styles_section);

Legend:
Removed from v.41  
changed lines
  Added in v.63

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