--- psiconv/trunk/lib/psiconv/data.c 1999/10/27 15:05:03 20 +++ psiconv/trunk/lib/psiconv/data.c 2000/12/10 15:44:40 56 @@ -34,28 +34,29 @@ static void psiconv_free_in_line_layout_aux(void * layout); static void psiconv_free_paragraph_aux(void * paragraph); static void psiconv_free_paint_data_section_aux(void * section); +static void psiconv_free_clipart_section_aux(void * section); psiconv_character_layout psiconv_basic_character_layout(void) { /* Make the structures static, to oblige IRIX */ - static struct psiconv_color black = + static struct psiconv_color_s black = { 0x00, /* red */ 0x00, /* green */ 0x00, /* blue */ }; - static struct psiconv_color white = + static struct psiconv_color_s white = { 0xff, /* red */ 0xff, /* green */ 0xff, /* blue */ }; - static struct psiconv_font font = + static struct psiconv_font_s font = { "Times New Roman", /* name */ 3 /* screenfont */ }; - struct psiconv_character_layout cl = + struct psiconv_character_layout_s cl = { &black, /* color */ &white, /* back_color */ @@ -65,7 +66,7 @@ psiconv_normalscript, /* super_sub */ psiconv_bool_false, /* underline */ psiconv_bool_false, /* strike_out */ - NULL, /* font */ + &font, /* font */ }; return psiconv_clone_character_layout(&cl); @@ -73,30 +74,30 @@ psiconv_paragraph_layout psiconv_basic_paragraph_layout(void) { - static struct psiconv_font font = + static struct psiconv_font_s font = { "Times New Roman", /* name */ 2 /* screenfont */ }; - static struct psiconv_color black = + static struct psiconv_color_s black = { 0x00, /* red */ 0x00, /* green */ 0x00, /* blue */ }; - static struct psiconv_color white = + static struct psiconv_color_s white = { 0xff, /* red */ 0xff, /* green */ 0xff, /* blue */ }; - static struct psiconv_border no_border = + static struct psiconv_border_s no_border = { psiconv_border_none, /* kind */ 1, /* thickness */ &black /* color */ }; - static struct psiconv_bullet bullet = + static struct psiconv_bullet_s bullet = { psiconv_bool_false, /* on */ 10.0, /* font_size */ @@ -105,12 +106,12 @@ &black, /* color */ &font, /* font */ }; - static struct psiconv_all_tabs tabs = + static struct psiconv_all_tabs_s tabs = { 0.64, /* normal */ NULL /* kind */ }; - struct psiconv_paragraph_layout pl = + struct psiconv_paragraph_layout_s pl = { &white, /* back_color */ 0.0, /* indent_left */ @@ -136,7 +137,7 @@ }; psiconv_paragraph_layout res; - pl.tabs->extras = psiconv_list_new(sizeof(struct psiconv_tab)); + pl.tabs->extras = psiconv_list_new(sizeof(struct psiconv_tab_s)); res = psiconv_clone_paragraph_layout(&pl); psiconv_list_free(pl.tabs->extras); return res; @@ -483,7 +484,7 @@ psiconv_list_free_el(section,&psiconv_free_paint_data_section_aux); } -void psiconv_free_mbm_jumptable_section (psiconv_mbm_jumptable_section section) +void psiconv_free_jumptable_section (psiconv_jumptable_section section) { if (section) psiconv_list_free(section); @@ -497,6 +498,50 @@ } } +void psiconv_free_sketch_section(psiconv_sketch_section sec) +{ + if (sec) { + psiconv_free_paint_data_section(sec->picture); + free(sec); + } +} + +void psiconv_free_sketch_f(psiconv_sketch_f file) +{ + if (file) { + psiconv_free_sketch_section(file->sketch_sec); + free(file); + } +} + +void psiconv_free_clipart_section_aux(void *section) +{ + if (section) + free(((psiconv_clipart_section ) section)->picture); +} + +void psiconv_free_clipart_section(psiconv_clipart_section section) +{ + if (section) { + psiconv_free_clipart_section_aux(section); + free(section); + } +} + +void psiconv_free_cliparts(psiconv_cliparts section) +{ + if (section) + psiconv_list_free_el(section,&psiconv_free_clipart_section_aux); +} + +void psiconv_free_clipart_f(psiconv_clipart_f file) +{ + if (file) { + psiconv_free_cliparts(file->sections); + free(file); + } +} + void psiconv_free_file(psiconv_file file) { if (file) { @@ -506,6 +551,10 @@ psiconv_free_texted_f((psiconv_texted_f) file->file); else if (file->type == psiconv_mbm_file) psiconv_free_mbm_f((psiconv_mbm_f) file->file); + else if (file->type == psiconv_sketch_file) + psiconv_free_sketch_f((psiconv_sketch_f) file->file); + else if (file->type == psiconv_clipart_file) + psiconv_free_clipart_f((psiconv_clipart_f) file->file); free(file); } }