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

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

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

Revision 86 Revision 87
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#include "data.h" 24#include "data.h"
25#include "list.h"
25 26
26static psiconv_color clone_color(psiconv_color color); 27static psiconv_color clone_color(psiconv_color color);
27static psiconv_font clone_font(psiconv_font font); 28static psiconv_font clone_font(psiconv_font font);
28static psiconv_border clone_border(psiconv_border border); 29static psiconv_border clone_border(psiconv_border border);
29static psiconv_bullet clone_bullet(psiconv_bullet bullet); 30static psiconv_bullet clone_bullet(psiconv_bullet bullet);
31static void psiconv_free_style_aux(void *style); 32static void psiconv_free_style_aux(void *style);
32static void psiconv_free_in_line_layout_aux(void * layout); 33static void psiconv_free_in_line_layout_aux(void * layout);
33static void psiconv_free_paragraph_aux(void * paragraph); 34static void psiconv_free_paragraph_aux(void * paragraph);
34static void psiconv_free_paint_data_section_aux(void * section); 35static void psiconv_free_paint_data_section_aux(void * section);
35static void psiconv_free_clipart_section_aux(void * section); 36static void psiconv_free_clipart_section_aux(void * section);
37
38static psiconv_word_styles_section psiconv_empty_word_styles_section(void);
39static psiconv_text_and_layout psiconv_empty_text_and_layout(void);
40static psiconv_texted_section psiconv_empty_texted_section(void);
41static psiconv_page_header psiconv_empty_page_header(void);
42static psiconv_page_layout_section psiconv_empty_page_layout_section(void);
43static psiconv_word_status_section psiconv_empty_word_status_section(void);
44static psiconv_word_f psiconv_empty_word_f(void);
45static psiconv_texted_f psiconv_empty_texted_f(void);
46static psiconv_paint_data_section psiconv_empty_paint_data_section(void);
47static psiconv_pictures psiconv_empty_pictures(void);
48static psiconv_mbm_f psiconv_empty_mbm_f(void);
49static psiconv_sketch_section psiconv_empty_sketch_section(void);
50static psiconv_sketch_f psiconv_empty_sketch_f(void);
51static psiconv_clipart_f psiconv_empty_clipart_f(void);
52static psiconv_cliparts psiconv_empty_cliparts(void);
53
36 54
37/* Note: these defaults seem to be hard-coded somewhere outside the 55/* Note: these defaults seem to be hard-coded somewhere outside the
38 files themself. */ 56 files themself. */
39psiconv_character_layout psiconv_basic_character_layout(void) 57psiconv_character_layout psiconv_basic_character_layout(void)
40{ 58{
758 !psiconv_compare_font(value1->font,value2->font)) 776 !psiconv_compare_font(value1->font,value2->font))
759 return 0; 777 return 0;
760 else 778 else
761 return 1; 779 return 1;
762} 780}
781
782
783
784psiconv_word_styles_section psiconv_empty_word_styles_section(void)
785{
786 psiconv_word_styles_section result;
787 if (!(result = malloc(sizeof(*result))))
788 goto ERROR1;
789 if (!(result->styles = psiconv_list_new(sizeof(struct psiconv_word_style_s))))
790 goto ERROR2;
791 if (!(result->normal = malloc(sizeof(struct psiconv_word_style_s))))
792 goto ERROR3;
793 if (!(result->normal->character = psiconv_basic_character_layout()))
794 goto ERROR4;
795 if (!(result->normal->paragraph = psiconv_basic_paragraph_layout()))
796 goto ERROR5;
797 result->normal->hotkey = 'N';
798 result->normal->name = NULL;
799 result->normal->built_in = psiconv_bool_true;
800 result->normal->outline_level = 0;
801 return result;
802ERROR5:
803 psiconv_free_character_layout(result->normal->character);
804ERROR4:
805 free(result->normal);
806ERROR3:
807 psiconv_list_free(result->styles);
808ERROR2:
809 free(result);
810ERROR1:
811 return NULL;
812}
813
814psiconv_text_and_layout psiconv_empty_text_and_layout(void)
815{
816 return psiconv_list_new(sizeof(struct psiconv_paragraph_s));
817}
818
819psiconv_texted_section psiconv_empty_texted_section(void)
820{
821 psiconv_texted_section result;
822 if (!(result = malloc(sizeof(*result))))
823 goto ERROR1;
824 if (!(result->paragraphs = psiconv_empty_text_and_layout()))
825 goto ERROR2;
826 return result;
827ERROR2:
828 free(result);
829ERROR1:
830 return NULL;
831}
832
833psiconv_page_header psiconv_empty_page_header(void)
834{
835 psiconv_page_header result;
836 if (!(result = malloc(sizeof(*result))))
837 goto ERROR1;
838 result->on_first_page = psiconv_bool_true;
839 if (!(result->base_paragraph_layout = psiconv_basic_paragraph_layout()))
840 goto ERROR2;
841 if (!(result->base_character_layout = psiconv_basic_character_layout()))
842 goto ERROR3;
843 if (!(result->text = psiconv_empty_texted_section()))
844 goto ERROR4;
845 return result;
846ERROR4:
847 psiconv_free_character_layout(result->base_character_layout);
848ERROR3:
849 psiconv_free_paragraph_layout(result->base_paragraph_layout);
850ERROR2:
851 free(result);
852ERROR1:
853 return NULL;
854}
855
856psiconv_page_layout_section psiconv_empty_page_layout_section(void)
857{
858 psiconv_page_layout_section result;
859 if (!(result = malloc(sizeof(*result))))
860 goto ERROR1;
861 result->first_page_nr = 0;
862 result->header_dist = result->footer_dist = 1.27;
863 result->left_margin = result->right_margin = 3.175;
864 result->top_margin = result->bottom_margin = 2.54;
865 result->page_width = 21.0;
866 result->page_height = 29.7;
867 result->landscape = psiconv_bool_false;
868 if (!(result->header = psiconv_empty_page_header()))
869 goto ERROR2;
870 if (!(result->footer = psiconv_empty_page_header()))
871 goto ERROR3;
872 return result;
873ERROR3:
874 psiconv_free_page_header(result->header);
875ERROR2:
876 free(result);
877ERROR1:
878 return NULL;
879}
880
881psiconv_word_status_section psiconv_empty_word_status_section(void)
882{
883 psiconv_word_status_section result;
884 if (!(result = malloc(sizeof(*result))))
885 return NULL;
886 result->show_tabs = result->show_spaces = result->show_paragraph_ends =
887 result->show_hard_minus = result->show_hard_space =
888 result->fit_lines_to_screen = psiconv_bool_false;
889 result->show_full_pictures = result->show_full_graphs =
890 result->show_top_toolbar = result->show_side_toolbar =
891 psiconv_bool_true;
892 result->cursor_position = 0;
893 result->display_size = 1000;
894 return result;
895}
896
897psiconv_word_f psiconv_empty_word_f(void)
898{
899 psiconv_word_f result;
900 if (!(result = malloc(sizeof(*result))))
901 goto ERROR1;
902 if (!(result->page_sec = psiconv_empty_page_layout_section()))
903 goto ERROR2;
904 if (!(result->paragraphs = psiconv_empty_text_and_layout()))
905 goto ERROR3;
906 if (!(result->status_sec = psiconv_empty_word_status_section()))
907 goto ERROR4;
908 if (!(result->styles_sec = psiconv_empty_word_styles_section()))
909 goto ERROR5;
910 return result;
911ERROR5:
912 psiconv_free_word_status_section(result->status_sec);
913ERROR4:
914 psiconv_free_text_and_layout(result->paragraphs);
915ERROR3:
916 psiconv_free_page_layout_section(result->page_sec);
917ERROR2:
918 free(result);
919ERROR1:
920 return NULL;
921}
922
923psiconv_texted_f psiconv_empty_texted_f(void)
924{
925 psiconv_texted_f result;
926 if (!(result = malloc(sizeof(*result))))
927 goto ERROR1;
928 if (!(result->page_sec = psiconv_empty_page_layout_section()))
929 goto ERROR2;
930 if (!(result->texted_sec = psiconv_empty_texted_section()))
931 goto ERROR3;
932 return result;
933ERROR3:
934 psiconv_free_page_layout_section(result->page_sec);
935ERROR2:
936 free(result);
937ERROR1:
938 return NULL;
939}
940
941psiconv_paint_data_section psiconv_empty_paint_data_section(void)
942{
943 psiconv_paint_data_section result;
944 if (!(result = malloc(sizeof(*result))))
945 goto ERROR1;
946 /* Is this correct? */
947 result->xsize = result->ysize = result->pic_xsize = result->pic_ysize = 0;
948 /* Probably forbidden... */
949 if (!(result->red = malloc(0)))
950 goto ERROR2;
951 if (!(result->green = malloc(0)))
952 goto ERROR3;
953 if (!(result->blue = malloc(0)))
954 goto ERROR4;
955 return result;
956ERROR4:
957 free(result->green);
958ERROR3:
959 free(result->red);
960ERROR2:
961 free(result);
962ERROR1:
963 return NULL;
964}
965
966
967psiconv_pictures psiconv_empty_pictures(void)
968{
969 psiconv_pictures result;
970 psiconv_paint_data_section pds;
971 if (!(result = psiconv_list_new(sizeof(struct psiconv_paint_data_section_s))))
972 goto ERROR1;
973 if (!(pds = psiconv_empty_paint_data_section()))
974 goto ERROR2;
975 if (psiconv_list_add(result,pds))
976 goto ERROR3;
977 free(pds);
978 return result;
979ERROR3:
980 psiconv_free_paint_data_section(pds);
981ERROR2:
982 psiconv_list_free(result);
983ERROR1:
984 return NULL;
985}
986
987psiconv_mbm_f psiconv_empty_mbm_f(void)
988{
989 psiconv_mbm_f result;
990 if (!(result = malloc(sizeof(*result))))
991 goto ERROR1;
992 if (!(result->sections = psiconv_empty_pictures()))
993 goto ERROR2;
994 return result;
995ERROR2:
996 free(result);
997ERROR1:
998 return NULL;
999}
1000
1001psiconv_sketch_section psiconv_empty_sketch_section(void)
1002{
1003 psiconv_sketch_section result;
1004 if (!(result = malloc(sizeof(*result))))
1005 goto ERROR1;
1006 result->form_xsize = 320;
1007 result->form_ysize = 200;
1008 result->picture_x_offset = result->picture_y_offset = result->picture_xsize =
1009 result->picture_ysize = 0;
1010 result->magnification_x = result->magnification_y = 1.0;
1011 result->cut_left = result->cut_right = result->cut_top =
1012 result->cut_bottom = 0.0;
1013 if (!(result->picture = psiconv_empty_paint_data_section()))
1014 goto ERROR2;
1015 return result;
1016ERROR2:
1017 free(result);
1018ERROR1:
1019 return NULL;
1020}
1021
1022psiconv_sketch_f psiconv_empty_sketch_f(void)
1023{
1024 psiconv_sketch_f result;
1025 if (!(result = malloc(sizeof(*result))))
1026 goto ERROR1;
1027 if (!(result->sketch_sec = psiconv_empty_sketch_section()))
1028 goto ERROR2;
1029 return result;
1030ERROR2:
1031 free(result);
1032ERROR1:
1033 return NULL;
1034}
1035
1036psiconv_cliparts psiconv_empty_cliparts(void)
1037{
1038 /* Is this correct? */
1039 return psiconv_list_new(sizeof(struct psiconv_clipart_section_s));
1040}
1041
1042psiconv_clipart_f psiconv_empty_clipart_f(void)
1043{
1044 psiconv_clipart_f result;
1045 if (!(result = malloc(sizeof(*result))))
1046 goto ERROR1;
1047 if (!(result->sections = psiconv_empty_cliparts()))
1048 goto ERROR2;
1049 return result;
1050ERROR2:
1051 free(result);
1052ERROR1:
1053 return NULL;
1054}
1055
1056psiconv_file psiconv_empty_file(psiconv_file_type_t type)
1057{
1058 psiconv_file result;
1059 if (!(result = malloc(sizeof(*result))))
1060 return NULL;
1061 result->type = type;
1062 if (type == psiconv_word_file) {
1063 if (!(result->file = psiconv_empty_word_f()))
1064 goto ERROR;
1065 } else if (type == psiconv_texted_file) {
1066 if (!(result->file = psiconv_empty_texted_f()))
1067 goto ERROR;
1068 } else if (type == psiconv_mbm_file) {
1069 if (!(result->file = psiconv_empty_mbm_f()))
1070 goto ERROR;
1071 } else if (type == psiconv_sketch_file) {
1072 if (!(result->file = psiconv_empty_sketch_f()))
1073 goto ERROR;
1074 } else if (type == psiconv_clipart_file) {
1075 if (!(result->file = psiconv_empty_clipart_f()))
1076 goto ERROR;
1077 } else
1078 goto ERROR;
1079 return result;
1080ERROR:
1081 free(result);
1082 return NULL;
1083}

Legend:
Removed from v.86  
changed lines
  Added in v.87

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