--- psiconv/trunk/lib/psiconv/data.h 2000/12/15 18:52:49 67 +++ psiconv/trunk/lib/psiconv/data.h 2001/07/10 22:38:49 125 @@ -34,6 +34,7 @@ extern "C" { #endif /* __cplusplus */ +typedef double psiconv_float_t; typedef enum psiconv_file_type { psiconv_unknown_file, @@ -41,7 +42,8 @@ psiconv_texted_file, psiconv_mbm_file, psiconv_sketch_file, - psiconv_clipart_file + psiconv_clipart_file, + psiconv_sheet_file } psiconv_file_type_t; /* Length indicators */ @@ -63,6 +65,13 @@ psiconv_bool_true } psiconv_bool_t; +typedef enum psiconv_triple +{ + psiconv_triple_on, + psiconv_triple_off, + psiconv_triple_auto +} psiconv_triple_t; + typedef enum psiconv_super_sub { psiconv_normalscript, psiconv_superscript, @@ -92,6 +101,14 @@ psiconv_border_dotdotdashed } psiconv_border_kind_t; +typedef enum psiconv_screenfont +{ + psiconv_font_misc, + psiconv_font_sansserif, + psiconv_font_nonprop, + psiconv_font_serif +} psiconv_screenfont_t; + /* Colors. black: 0x00 0x00 0x00 white: 0xff 0xff 0xff */ @@ -105,7 +122,7 @@ typedef struct psiconv_font_s { char *name; - psiconv_u8 screenfont; + psiconv_screenfont_t screenfont; } *psiconv_font; typedef struct psiconv_border_s @@ -176,6 +193,7 @@ psiconv_bool_t keep_with_next; psiconv_bool_t on_next_page; psiconv_bool_t no_widow_protection; + psiconv_bool_t wrap_to_fit_cell; psiconv_length_t border_distance; psiconv_bullet bullet; psiconv_border left_border; @@ -273,6 +291,7 @@ psiconv_length_t page_height; psiconv_page_header header; psiconv_page_header footer; + psiconv_bool_t landscape; } * psiconv_page_layout_section; typedef struct psiconv_word_status_section_s @@ -388,6 +407,305 @@ psiconv_cliparts sections; } *psiconv_clipart_f; +typedef struct psiconv_sheet_ref_s +{ + psiconv_s16 offset; + psiconv_bool_t absolute; +} psiconv_sheet_ref_t; + +typedef struct psiconv_sheet_cell_reference_s +{ + psiconv_sheet_ref_t row; + psiconv_sheet_ref_t column; +} psiconv_sheet_cell_reference_t; + +typedef struct psiconv_sheet_cell_block_s +{ + psiconv_sheet_cell_reference_t first; + psiconv_sheet_cell_reference_t last; +} psiconv_sheet_cell_block_t; + +typedef enum psiconv_cell_type +{ + psiconv_cell_blank, + psiconv_cell_int, + psiconv_cell_bool, + psiconv_cell_error, + psiconv_cell_float, + psiconv_cell_string +} psiconv_cell_type_t; + +typedef enum psiconv_sheet_errorcode +{ + psiconv_sheet_error_none, + psiconv_sheet_error_null, + psiconv_sheet_error_divzero, + psiconv_sheet_error_value, + psiconv_sheet_error_reference, + psiconv_sheet_error_name, + psiconv_sheet_error_number, + psiconv_sheet_error_notavail +} psiconv_sheet_errorcode_t; + +typedef enum psiconv_sheet_numberformat_code +{ + psiconv_numberformat_general, + psiconv_numberformat_fixeddecimal, + psiconv_numberformat_scientific, + psiconv_numberformat_currency, + psiconv_numberformat_percent, + psiconv_numberformat_triads, + psiconv_numberformat_boolean, + psiconv_numberformat_text, + psiconv_numberformat_date_dmm, + psiconv_numberformat_date_mmd, + psiconv_numberformat_date_ddmmyy, + psiconv_numberformat_date_mmddyy, + psiconv_numberformat_date_yymmdd, + psiconv_numberformat_date_dmmm, + psiconv_numberformat_date_dmmmyy, + psiconv_numberformat_date_ddmmmyy, + psiconv_numberformat_date_mmm, + psiconv_numberformat_date_monthname, + psiconv_numberformat_date_mmmyy, + psiconv_numberformat_date_monthnameyy, + psiconv_numberformat_date_monthnamedyyyy, + psiconv_numberformat_datetime_ddmmyyyyhhii, + psiconv_numberformat_datetime_ddmmyyyyHHii, + psiconv_numberformat_datetime_mmddyyyyhhii, + psiconv_numberformat_datetime_mmddyyyyHHii, + psiconv_numberformat_datetime_yyyymmddhhii, + psiconv_numberformat_datetime_yyyymmddHHii, + psiconv_numberformat_time_hhii, + psiconv_numberformat_time_hhiiss, + psiconv_numberformat_time_HHii, + psiconv_numberformat_time_HHiiss +} psiconv_sheet_numberformat_code_t; + +typedef struct psiconv_sheet_numberformat_s +{ + psiconv_sheet_numberformat_code_t code; + psiconv_u8 decimal; +} *psiconv_sheet_numberformat; + +typedef struct psiconv_sheet_cell_layout_s +{ + psiconv_character_layout character; + psiconv_paragraph_layout paragraph; + psiconv_sheet_numberformat numberformat; +} * psiconv_sheet_cell_layout; + +typedef struct psiconv_sheet_cell_s +{ + psiconv_u16 column; + psiconv_u16 row; + psiconv_cell_type_t type; + union { + psiconv_u32 dat_int; + double dat_float; + char *dat_string; + psiconv_bool_t dat_bool; + psiconv_sheet_errorcode_t dat_error; + } data; + psiconv_sheet_cell_layout layout; + psiconv_bool_t calculated; + psiconv_u32 ref_formula; +} *psiconv_sheet_cell; + +typedef psiconv_list psiconv_sheet_cell_list; + /* Of struct psiconv_sheet_cell_s */ + +typedef struct psiconv_sheet_status_section_s +{ + psiconv_bool_t show_graph; + psiconv_u32 cursor_row; + psiconv_u32 cursor_column; + psiconv_bool_t show_top_sheet_toolbar; + psiconv_bool_t show_side_sheet_toolbar; + psiconv_bool_t show_top_graph_toolbar; + psiconv_bool_t show_side_graph_toolbar; + psiconv_u32 sheet_display_size; + psiconv_u32 graph_display_size; + psiconv_triple_t show_horizontal_scrollbar; + psiconv_triple_t show_vertical_scrollbar; +} *psiconv_sheet_status_section; + +typedef enum psiconv_formula_type +{ + psiconv_formula_unknown, + psiconv_formula_op_lt, + psiconv_formula_op_le, + psiconv_formula_op_gt, + psiconv_formula_op_ge, + psiconv_formula_op_ne, + psiconv_formula_op_eq, + psiconv_formula_op_add, + psiconv_formula_op_sub, + psiconv_formula_op_mul, + psiconv_formula_op_div, + psiconv_formula_op_pow, + psiconv_formula_op_pos, + psiconv_formula_op_neg, + psiconv_formula_op_not, + psiconv_formula_op_and, + psiconv_formula_op_or, + psiconv_formula_op_con, + psiconv_formula_op_bra, + psiconv_formula_mark_eof, + psiconv_formula_dat_float, + psiconv_formula_dat_int, + psiconv_formula_dat_var, + psiconv_formula_dat_string, + psiconv_formula_dat_cellref, + psiconv_formula_dat_cellblock, + psiconv_formula_dat_vcellblock, + psiconv_formula_mark_opsep, + psiconv_formula_mark_opend, + psiconv_formula_fun_false, + psiconv_formula_fun_if, + psiconv_formula_fun_true, + psiconv_formula_fun_cell, + psiconv_formula_fun_errortype, + psiconv_formula_fun_isblank, + psiconv_formula_fun_iserr, + psiconv_formula_fun_iserror, + psiconv_formula_fun_islogical, + psiconv_formula_fun_isna, + psiconv_formula_fun_isnontext, + psiconv_formula_fun_isnumber, + psiconv_formula_fun_istext, + psiconv_formula_fun_n, + psiconv_formula_fun_type, + psiconv_formula_fun_address, + psiconv_formula_fun_column, + psiconv_formula_fun_columns, + psiconv_formula_fun_hlookup, + psiconv_formula_fun_index, + psiconv_formula_fun_indirect, + psiconv_formula_fun_lookup, + psiconv_formula_fun_offset, + psiconv_formula_fun_row, + psiconv_formula_fun_rows, + psiconv_formula_fun_vlookup, + psiconv_formula_fun_char, + psiconv_formula_fun_code, + psiconv_formula_fun_exact, + psiconv_formula_fun_find, + psiconv_formula_fun_left, + psiconv_formula_fun_len, + psiconv_formula_fun_lower, + psiconv_formula_fun_mid, + psiconv_formula_fun_proper, + psiconv_formula_fun_replace, + psiconv_formula_fun_rept, + psiconv_formula_fun_right, + psiconv_formula_fun_string, + psiconv_formula_fun_t, + psiconv_formula_fun_trim, + psiconv_formula_fun_upper, + psiconv_formula_fun_value, + psiconv_formula_fun_date, + psiconv_formula_fun_datevalue, + psiconv_formula_fun_day, + psiconv_formula_fun_hour, + psiconv_formula_fun_minute, + psiconv_formula_fun_month, + psiconv_formula_fun_now, + psiconv_formula_fun_second, + psiconv_formula_fun_today, + psiconv_formula_fun_time, + psiconv_formula_fun_timevalue, + psiconv_formula_fun_year, + psiconv_formula_fun_abs, + psiconv_formula_fun_acos, + psiconv_formula_fun_asin, + psiconv_formula_fun_atan, + psiconv_formula_fun_atan2, + psiconv_formula_fun_cos, + psiconv_formula_fun_degrees, + psiconv_formula_fun_exp, + psiconv_formula_fun_fact, + psiconv_formula_fun_int, + psiconv_formula_fun_ln, + psiconv_formula_fun_log10, + psiconv_formula_fun_mod, + psiconv_formula_fun_pi, + psiconv_formula_fun_radians, + psiconv_formula_fun_rand, + psiconv_formula_fun_round, + psiconv_formula_fun_sign, + psiconv_formula_fun_sin, + psiconv_formula_fun_sqrt, + psiconv_formula_fun_sumproduct, + psiconv_formula_fun_tan, + psiconv_formula_fun_trunc, + psiconv_formula_fun_cterm, + psiconv_formula_fun_ddb, + psiconv_formula_fun_fv, + psiconv_formula_fun_irr, + psiconv_formula_fun_npv, + psiconv_formula_fun_pmt, + psiconv_formula_fun_pv, + psiconv_formula_fun_rate, + psiconv_formula_fun_sln, + psiconv_formula_fun_syd, + psiconv_formula_fun_term, + psiconv_formula_fun_combin, + psiconv_formula_fun_permut, + psiconv_formula_vfn_average, + psiconv_formula_vfn_choose, + psiconv_formula_vfn_count, + psiconv_formula_vfn_counta, + psiconv_formula_vfn_countblank, + psiconv_formula_vfn_max, + psiconv_formula_vfn_min, + psiconv_formula_vfn_product, + psiconv_formula_vfn_stdevp, + psiconv_formula_vfn_stdev, + psiconv_formula_vfn_sum, + psiconv_formula_vfn_sumsq, + psiconv_formula_vfn_varp, + psiconv_formula_vfn_var +} psiconv_formula_type_t; + +typedef psiconv_list psiconv_formula_list; /* Of struct psiconv_formula_s */ + +typedef struct psiconv_formula_s +{ + psiconv_formula_type_t type; + union { + psiconv_u32 dat_int; + double dat_float; + char *dat_string; + psiconv_sheet_cell_reference_t dat_cellref; + psiconv_sheet_cell_block_t dat_cellblock; + psiconv_formula_list fun_operands; + } data; +} *psiconv_formula; + +typedef struct psiconv_sheet_worksheet_s +{ + psiconv_sheet_cell_layout default_layout; + psiconv_sheet_cell_list cells; + psiconv_bool_t show_zeros; +} *psiconv_sheet_worksheet; + +typedef psiconv_list psiconv_sheet_worksheet_list; + /* of struct psiconv_sheet_worksheet */ + +typedef struct psiconv_sheet_workbook_section_s +{ + psiconv_formula_list formulas; + psiconv_sheet_worksheet_list worksheets; +} *psiconv_sheet_workbook_section; + +typedef struct psiconv_sheet_f_s +{ + psiconv_page_layout_section page_sec; + psiconv_sheet_status_section status_sec; + psiconv_sheet_workbook_section workbook_sec; +} *psiconv_sheet_f; + typedef struct psiconv_file_s { psiconv_file_type_t type; @@ -405,6 +723,7 @@ #define PSICONV_ID_WORD 0x1000007F #define PSICONV_ID_TEXTED 0x10000085 #define PSICONV_ID_SKETCH 0x1000007D +#define PSICONV_ID_SHEET 0x10000088 /* Section table ids */ #define PSICONV_ID_WORD_STATUS_SECTION 0x10000243 @@ -415,9 +734,13 @@ #define PSICONV_ID_PAGE_LAYOUT_SECTION 0x10000105 #define PSICONV_ID_PASSWORD_SECTION 0x100000CD #define PSICONV_ID_SKETCH_SECTION 0x1000007D +#define PSICONV_ID_SHEET_STATUS_SECTION 0x1000011F +#define PSICONV_ID_SHEET_WORKBOOK_SECTION 0x1000011D +#define PSICONV_ID_SHEET_GRAPH_SECTION 0x10000121 /* Other ids */ -#define PSICONV_ID_PAGE_DIMENSIONS 0x100000fd +#define PSICONV_ID_PAGE_DIMENSIONS1 0x100000fd +#define PSICONV_ID_PAGE_DIMENSIONS2 0x1000010e #define PSICONV_ID_TEXTED_BODY 0x1000005c #define PSICONV_ID_TEXTED_REPLACEMENT 0x10000063 #define PSICONV_ID_TEXTED_UNKNOWN 0x10000065 @@ -446,6 +769,7 @@ /* Get a numbered style. Returns NULL if the style is unknown. */ extern psiconv_word_style psiconv_get_style (psiconv_word_styles_section ss, int nr); +extern psiconv_formula psiconv_get_formula (psiconv_formula_list ss, int nr); extern void psiconv_free_color(psiconv_color color); extern void psiconv_free_border(psiconv_border border); @@ -458,6 +782,20 @@ extern void psiconv_free_word_style(psiconv_word_style style); extern void psiconv_free_word_styles_section (psiconv_word_styles_section styles); +extern void psiconv_free_formula(psiconv_formula formula); +extern void psiconv_free_formula_list(psiconv_formula_list list); +extern void psiconv_free_sheet_status_section + (psiconv_sheet_status_section section); +extern void psiconv_free_sheet_cell_layout(psiconv_sheet_cell_layout layout); +extern void psiconv_free_sheet_worksheet(psiconv_sheet_worksheet sheet); +extern void psiconv_free_sheet_worksheet_list + (psiconv_sheet_worksheet_list list); + +extern void psiconv_free_sheet_f(psiconv_sheet_f file); +extern void psiconv_free_sheet_cell(psiconv_sheet_cell cell); +extern void psiconv_free_sheet_cell_list(psiconv_sheet_cell_list list); +extern void psiconv_free_sheet_numberformat + (psiconv_sheet_numberformat numberformat); extern void psiconv_free_header_section(psiconv_header_section header); extern void psiconv_free_section_table_entry(psiconv_section_table_entry entry); extern void psiconv_free_section_table_section @@ -489,9 +827,32 @@ extern void psiconv_free_cliparts(psiconv_cliparts section); extern void psiconv_free_clipart_f(psiconv_clipart_f file); - extern void psiconv_free_file(psiconv_file file); +extern int psiconv_compare_color(const psiconv_color value1, + const psiconv_color value2); +extern int psiconv_compare_font(const psiconv_font value1, + const psiconv_font value2); +extern int psiconv_compare_border(const psiconv_border value1, + const psiconv_border value2); +extern int psiconv_compare_bullet(const psiconv_bullet value1, + const psiconv_bullet value2); +extern int psiconv_compare_tab(const psiconv_tab value1, + const psiconv_tab value2); +extern int psiconv_compare_all_tabs(const psiconv_all_tabs value1, + const psiconv_all_tabs value2); +extern int psiconv_compare_paragraph_layout + (const psiconv_paragraph_layout value1, + const psiconv_paragraph_layout value2); + +extern int psiconv_compare_character_layout + (const psiconv_character_layout value1, + const psiconv_character_layout value2); + +/* Get a newly allocated file with sensible defaults, ready to generate. */ +extern psiconv_file psiconv_empty_file(psiconv_file_type_t type); + + #ifdef __cplusplus } #endif /* __cplusplus */