--- psiconv/trunk/lib/psiconv/data.h 2001/01/30 21:37:19 99 +++ 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, @@ -192,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; @@ -405,6 +407,114 @@ 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; @@ -436,6 +546,9 @@ 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, @@ -564,13 +677,26 @@ 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 @@ -610,6 +736,7 @@ #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_DIMENSIONS1 0x100000fd @@ -642,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); @@ -658,7 +786,16 @@ 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