/[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 64 Revision 94
20#include "config.h" 20#include "config.h"
21#include "compat.h" 21#include "compat.h"
22#include <stdlib.h> 22#include <stdlib.h>
23#include <string.h> 23#include <string.h>
24 24
25#include "data.h"
26#include "parse_routines.h" 25#include "parse_routines.h"
26#include "error.h"
27 27
28static int psiconv_parse_layout_section(const psiconv_buffer buf, 28static int psiconv_parse_layout_section(const psiconv_buffer buf,
29 int lev,psiconv_u32 off, 29 int lev,psiconv_u32 off,
30 int *length, 30 int *length,
31 psiconv_text_and_layout result, 31 psiconv_text_and_layout result,
44 if (!((*result) = malloc(sizeof(**result)))) 44 if (!((*result) = malloc(sizeof(**result))))
45 goto ERROR1; 45 goto ERROR1;
46 46
47 psiconv_progress(lev+2,off+len,"Going to read UID1 to UID3"); 47 psiconv_progress(lev+2,off+len,"Going to read UID1 to UID3");
48 (*result)->uid1 = psiconv_read_u32(buf,lev+2,off+len,&res); 48 (*result)->uid1 = psiconv_read_u32(buf,lev+2,off+len,&res);
49 if (!res) 49 if (res)
50 goto ERROR2; 50 goto ERROR2;
51 psiconv_debug(lev+2,off+len,"UID1: %08x",(*result)->uid1); 51 psiconv_debug(lev+2,off+len,"UID1: %08x",(*result)->uid1);
52 if ((*result)->uid1 == PSICONV_ID_CLIPART) { 52 if ((*result)->uid1 == PSICONV_ID_CLIPART) {
53 /* That's all folks... */ 53 /* That's all folks... */
54 (*result)->file = psiconv_clipart_file; 54 (*result)->file = psiconv_clipart_file;
87 (*result)->file = psiconv_texted_file; 87 (*result)->file = psiconv_texted_file;
88 psiconv_debug(lev+2,off+len,"File is a TextEd file"); 88 psiconv_debug(lev+2,off+len,"File is a TextEd file");
89 } else if ((*result)->uid3 == PSICONV_ID_SKETCH) { 89 } else if ((*result)->uid3 == PSICONV_ID_SKETCH) {
90 (*result)->file = psiconv_sketch_file; 90 (*result)->file = psiconv_sketch_file;
91 psiconv_debug(lev+2,off+len,"File is a Sketch file"); 91 psiconv_debug(lev+2,off+len,"File is a Sketch file");
92 } else if ((*result)->uid3 == PSICONV_ID_SHEET) {
93 (*result)->file = psiconv_sheet_file;
94 psiconv_debug(lev+2,off+len,"File is a Sheet file");
92 } 95 }
93 } else if ((*result)->uid2 == PSICONV_ID_MBM_FILE) { 96 } else if ((*result)->uid2 == PSICONV_ID_MBM_FILE) {
94 (*result)->file = psiconv_mbm_file; 97 (*result)->file = psiconv_mbm_file;
95 if ((*result)->uid3 != 0x00) 98 if ((*result)->uid3 != 0x00)
96 psiconv_warn(lev+2,off+len,"UID3 set in MBM file?!?"); 99 psiconv_warn(lev+2,off+len,"UID3 set in MBM file?!?");
97 psiconv_debug(lev+2,off+len,"File is a MBM file"); 100 psiconv_debug(lev+2,off+len,"File is a MBM file");
271 goto ERROR1; 274 goto ERROR1;
272 if (!(para = malloc(sizeof(*para)))) 275 if (!(para = malloc(sizeof(*para))))
273 goto ERROR2; 276 goto ERROR2;
274 277
275 text_len = psiconv_read_X(buf,lev+2,off,&leng,&res); 278 text_len = psiconv_read_X(buf,lev+2,off,&leng,&res);
276 if (!res) 279 if (res)
277 goto ERROR3; 280 goto ERROR3;
278 psiconv_debug(lev+2,off,"Length: %08x",text_len); 281 psiconv_debug(lev+2,off,"Length: %08x",text_len);
279 len += leng; 282 len += leng;
280 283
281 psiconv_progress(lev+2,off+len,"Going to read all paragraph text"); 284 psiconv_progress(lev+2,off+len,"Going to read all paragraph text");
567 if (!(para = psiconv_list_get(result,i))) 570 if (!(para = psiconv_list_get(result,i)))
568 goto ERROR4; 571 goto ERROR4;
569 572
570 psiconv_progress(lev+4,off+len,"Going to read the paragraph length"); 573 psiconv_progress(lev+4,off+len,"Going to read the paragraph length");
571 temp = psiconv_read_u32(buf,lev+4,off+len,&res); 574 temp = psiconv_read_u32(buf,lev+4,off+len,&res);
572 if (!res) 575 if (res)
573 goto ERROR4; 576 goto ERROR4;
574 if (temp != strlen(para->text)+1) { 577 if (temp != strlen(para->text)+1) {
575 psiconv_warn(lev+4,off+len, 578 psiconv_warn(lev+4,off+len,
576 "Disagreement of the length of paragraph in layout section"); 579 "Disagreement of the length of paragraph in layout section");
577 psiconv_debug(lev+4,off+len, 580 psiconv_debug(lev+4,off+len,
581 psiconv_debug(lev+4,off+len,"Paragraph length: %d",temp); 584 psiconv_debug(lev+4,off+len,"Paragraph length: %d",temp);
582 len += 4; 585 len += 4;
583 586
584 psiconv_progress(lev+4,off+len,"Going to read the paragraph type"); 587 psiconv_progress(lev+4,off+len,"Going to read the paragraph type");
585 temp = psiconv_read_u8(buf,lev+4,off+len,&res); 588 temp = psiconv_read_u8(buf,lev+4,off+len,&res);
586 if (!res) 589 if (res)
587 goto ERROR4; 590 goto ERROR4;
588 if (temp != 0x00) { 591 if (temp != 0x00) {
589 psiconv_debug(lev+4,off+len,"Type: %02x",temp); 592 psiconv_debug(lev+4,off+len,"Type: %02x",temp);
590 for (j = 0; j < psiconv_list_length(anon_styles); j++) { 593 for (j = 0; j < psiconv_list_length(anon_styles); j++) {
591 if (!(anon_ptr = psiconv_list_get(anon_styles,j))) { 594 if (!(anon_ptr = psiconv_list_get(anon_styles,j))) {
663 psiconv_free_character_layout(para->base_character); 666 psiconv_free_character_layout(para->base_character);
664 para->base_character = temp_char; 667 para->base_character = temp_char;
665 668
666 para->base_style = temp; 669 para->base_style = temp;
667 psiconv_progress(lev+4,off+len,"Going to read paragraph layout"); 670 psiconv_progress(lev+4,off+len,"Going to read paragraph layout");
668 if (!(psiconv_parse_paragraph_layout_list(buf,lev+4,off+len,&leng, 671 if ((res = psiconv_parse_paragraph_layout_list(buf,lev+4,off+len,&leng,
669 para->base_paragraph))) 672 para->base_paragraph)))
670 goto ERROR4; 673 goto ERROR4;
671 len += leng; 674 len += leng;
672 if (parse_styles) 675 if (parse_styles)
673 len += 1; 676 len += 1;
685 688
686 psiconv_progress(lev+3,off+len,"Going to read the number of elements"); 689 psiconv_progress(lev+3,off+len,"Going to read the number of elements");
687 nr = psiconv_read_u32(buf,lev+3,off+len,&res); 690 nr = psiconv_read_u32(buf,lev+3,off+len,&res);
688 if (res) 691 if (res)
689 goto ERROR4; 692 goto ERROR4;
690 psiconv_debug(lev+3,off,"Elements: %08x",nr); 693 psiconv_debug(lev+3,off+len,"Elements: %08x",nr);
691 len += 0x04; 694 len += 0x04;
692 695
693 psiconv_progress(lev+3,off+len, 696 psiconv_progress(lev+3,off+len,
694 "Going to read the text layout inline elements"); 697 "Going to read the text layout inline elements");
695 total = 0; 698 total = 0;
714 psiconv_progress(lev+4,off+len,"Going to read the element type"); 717 psiconv_progress(lev+4,off+len,"Going to read the element type");
715 temp = psiconv_read_u8(buf,lev+4,len+off,&res); 718 temp = psiconv_read_u8(buf,lev+4,len+off,&res);
716 if (res) 719 if (res)
717 goto ERROR4; 720 goto ERROR4;
718 len += 1; 721 len += 1;
719 psiconv_debug(lev+4,off,"Type: %02x",temp); 722 psiconv_debug(lev+4,off+len,"Type: %02x",temp);
720 psiconv_progress(lev+4,off, 723 psiconv_progress(lev+4,off+len,
721 "Going to read the number of characters it applies to"); 724 "Going to read the number of characters it applies to");
722 in_line.length = psiconv_read_u32(buf,lev+4,len+off,&res); 725 in_line.length = psiconv_read_u32(buf,lev+4,len+off,&res);
723 if (res) 726 if (res)
724 goto ERROR4; 727 goto ERROR4;
725 psiconv_debug(lev+4,off+len,"Length: %02x",in_line.length); 728 psiconv_debug(lev+4,off+len,"Length: %02x",in_line.length);
767 psiconv_list_free(anon_styles); 770 psiconv_list_free(anon_styles);
768 771
769 if (length) 772 if (length)
770 *length = len; 773 *length = len;
771 774
772 psiconv_progress(lev+1,off+len-1,"End of layout section (total length: %08x", 775 psiconv_progress(lev+1,off+len-1,"End of layout section (total length: %08x)",
773 len); 776 len);
774 777
775 return 0; 778 return 0;
776 779
777ERROR4_4: 780ERROR4_4:
822{ 825{
823 return psiconv_parse_layout_section(buf,lev,off,length,result,styles,1); 826 return psiconv_parse_layout_section(buf,lev,off,length,result,styles,1);
824} 827}
825 828
826int psiconv_parse_styleless_layout_section(const psiconv_buffer buf, 829int psiconv_parse_styleless_layout_section(const psiconv_buffer buf,
827 int lev,psiconv_u32 off, 830 int lev,psiconv_u32 off,
828 int *length, 831 int *length,
829 psiconv_text_and_layout result, 832 psiconv_text_and_layout result,
830 psiconv_character_layout base_char, 833 const psiconv_character_layout base_char,
831 psiconv_paragraph_layout base_para) 834 const psiconv_paragraph_layout base_para)
832{ 835{
833 int res = 0; 836 int res = 0;
834 psiconv_word_styles_section styles_section; 837 psiconv_word_styles_section styles_section;
835 838
836 if (!(styles_section = malloc(sizeof(*styles_section)))) 839 if (!(styles_section = malloc(sizeof(*styles_section))))

Legend:
Removed from v.64  
changed lines
  Added in v.94

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