… | |
… | |
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); |