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

Annotation of /psiconv/trunk/lib/psiconv/data.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 129 - (hide annotations)
Tue Jul 24 20:32:51 2001 UTC (22 years, 8 months ago) by frodo
File MIME type: text/plain
File size: 28527 byte(s)
(Frodo) Many new sheet things

  * Variable section and formula variable parsing
  * Info section
  * Name section
  * Better parsing of vararg functions

1 frodo 2 /*
2     data.h - Part of psiconv, a PSION 5 file formats converter
3 frodo 63 Copyright (c) 1999, 2000 Frodo Looijaard <frodol@dds.nl>
4 frodo 2
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9    
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13     GNU General Public License for more details.
14    
15     You should have received a copy of the GNU General Public License
16     along with this program; if not, write to the Free Software
17     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18     */
19    
20     /* This file contains the declarations of all types that are used to
21     represent the Word file. Variables of these types are written by the
22     parse routines, and read by the generation routines. */
23    
24     #ifndef PSICONV_DATA_H
25     #define PSICONV_DATA_H
26    
27 frodo 58 #include <psiconv/general.h>
28     #include <psiconv/list.h>
29 frodo 2
30     /* All types which end on _t are plain types; all other types are pointers
31     to structs */
32    
33 frodo 55 #ifdef __cplusplus
34     extern "C" {
35     #endif /* __cplusplus */
36    
37 frodo 101 typedef double psiconv_float_t;
38 frodo 55
39 frodo 2 typedef enum psiconv_file_type {
40     psiconv_unknown_file,
41     psiconv_word_file,
42     psiconv_texted_file,
43 frodo 12 psiconv_mbm_file,
44 frodo 41 psiconv_sketch_file,
45 frodo 94 psiconv_clipart_file,
46     psiconv_sheet_file
47 frodo 2 } psiconv_file_type_t;
48    
49     /* Length indicators */
50     typedef psiconv_u32 psiconv_S_t;
51     typedef psiconv_u32 psiconv_X_t;
52    
53     /* A string */
54     typedef char *psiconv_string_t;
55    
56     /* In the Psion file, these are identical; but we translate them to more
57     human-readable quantities */
58     typedef float psiconv_length_t; /* For offsets in centimeters */
59     typedef float psiconv_size_t; /* For sizes in points */
60    
61     /* Some enums */
62     typedef enum psiconv_bool
63     {
64     psiconv_bool_false,
65     psiconv_bool_true
66     } psiconv_bool_t;
67    
68 frodo 94 typedef enum psiconv_triple
69     {
70     psiconv_triple_on,
71     psiconv_triple_off,
72     psiconv_triple_auto
73     } psiconv_triple_t;
74    
75 frodo 2 typedef enum psiconv_super_sub
76     { psiconv_normalscript,
77     psiconv_superscript,
78     psiconv_subscript
79     } psiconv_super_sub_t;
80    
81     typedef enum psiconv_justify_hor
82     { psiconv_justify_left,
83     psiconv_justify_centre,
84     psiconv_justify_right,
85     psiconv_justify_full
86     } psiconv_justify_hor_t;
87    
88     typedef enum psiconv_justify_ver
89     { psiconv_justify_top,
90     psiconv_justify_middle,
91     psiconv_justify_bottom
92     } psiconv_justify_ver_t;
93    
94     typedef enum psiconv_border_kind
95     { psiconv_border_none,
96     psiconv_border_solid,
97     psiconv_border_double,
98     psiconv_border_dotted,
99 frodo 67 psiconv_border_dashed,
100     psiconv_border_dotdashed,
101     psiconv_border_dotdotdashed
102 frodo 2 } psiconv_border_kind_t;
103    
104 frodo 90 typedef enum psiconv_screenfont
105     {
106     psiconv_font_misc,
107     psiconv_font_sansserif,
108     psiconv_font_nonprop,
109     psiconv_font_serif
110     } psiconv_screenfont_t;
111    
112 frodo 2 /* Colors.
113     black: 0x00 0x00 0x00
114     white: 0xff 0xff 0xff */
115 frodo 56 typedef struct psiconv_color_s
116 frodo 2 {
117     psiconv_u8 red;
118     psiconv_u8 green;
119     psiconv_u8 blue;
120     } * psiconv_color;
121    
122 frodo 56 typedef struct psiconv_font_s
123 frodo 2 {
124     char *name;
125 frodo 90 psiconv_screenfont_t screenfont;
126 frodo 2 } *psiconv_font;
127    
128 frodo 56 typedef struct psiconv_border_s
129 frodo 2 {
130     psiconv_border_kind_t kind;
131     psiconv_size_t thickness; /* Set to 1/20 for non-solid lines */
132     psiconv_color color;
133     } *psiconv_border;
134    
135 frodo 56 typedef struct psiconv_bullet_s
136 frodo 2 {
137     psiconv_bool_t on;
138     psiconv_size_t font_size;
139     psiconv_u8 character;
140     psiconv_bool_t indent;
141     psiconv_color color;
142     psiconv_font font;
143     } *psiconv_bullet;
144    
145     typedef enum psiconv_tab_kind
146     {
147     psiconv_tab_left,
148     psiconv_tab_centre,
149     psiconv_tab_right
150     } psiconv_tab_kind_t;
151    
152 frodo 56 typedef struct psiconv_tab_s
153 frodo 2 {
154     psiconv_length_t location;
155     psiconv_tab_kind_t kind;
156     } *psiconv_tab;
157    
158    
159     typedef psiconv_list psiconv_tab_list; /* of struct psiconv_tab */
160    
161 frodo 56 typedef struct psiconv_all_tabs_s
162 frodo 2 {
163     psiconv_length_t normal;
164     psiconv_tab_list extras;
165     } *psiconv_all_tabs;
166    
167 frodo 56 typedef struct psiconv_character_layout_s
168 frodo 2 {
169     psiconv_color color;
170     psiconv_color back_color;
171     psiconv_size_t font_size;
172     psiconv_bool_t italic;
173     psiconv_bool_t bold;
174     psiconv_super_sub_t super_sub;
175     psiconv_bool_t underline;
176 frodo 67 psiconv_bool_t strikethrough;
177 frodo 2 psiconv_font font;
178     } *psiconv_character_layout;
179    
180 frodo 56 typedef struct psiconv_paragraph_layout_s
181 frodo 2 {
182     psiconv_color back_color;
183     psiconv_length_t indent_left;
184     psiconv_length_t indent_right;
185     psiconv_length_t indent_first;
186     psiconv_justify_hor_t justify_hor;
187     psiconv_justify_ver_t justify_ver;
188 frodo 67 psiconv_size_t linespacing;
189     psiconv_bool_t linespacing_exact;
190     psiconv_size_t space_above;
191     psiconv_size_t space_below;
192     psiconv_bool_t keep_together;
193     psiconv_bool_t keep_with_next;
194 frodo 2 psiconv_bool_t on_next_page;
195     psiconv_bool_t no_widow_protection;
196 frodo 104 psiconv_bool_t wrap_to_fit_cell;
197 frodo 2 psiconv_length_t border_distance;
198     psiconv_bullet bullet;
199     psiconv_border left_border;
200     psiconv_border right_border;
201     psiconv_border top_border;
202     psiconv_border bottom_border;
203     psiconv_all_tabs tabs;
204     } *psiconv_paragraph_layout;
205    
206 frodo 56 typedef struct psiconv_header_section_s
207 frodo 2 {
208     psiconv_u32 uid1;
209     psiconv_u32 uid2;
210     psiconv_u32 uid3;
211     psiconv_u32 checksum;
212     psiconv_file_type_t file;
213     } *psiconv_header_section;
214    
215 frodo 56 typedef struct psiconv_section_table_entry_s
216 frodo 2 {
217     psiconv_u32 id;
218     psiconv_u32 offset;
219     } *psiconv_section_table_entry;
220    
221     typedef psiconv_list psiconv_section_table_section;
222     /* Of struct sectiontable_entry */
223    
224 frodo 56 typedef struct psiconv_application_id_section_s
225 frodo 2 {
226     psiconv_u32 id;
227     psiconv_string_t name;
228     } *psiconv_application_id_section;
229    
230 frodo 56 typedef struct psiconv_in_line_layout_s
231 frodo 2 {
232     psiconv_character_layout layout;
233     int length;
234     } *psiconv_in_line_layout;
235    
236     typedef psiconv_list psiconv_in_line_layouts; /* of struct in_line_layout */
237    
238     typedef enum psiconv_replacement_type
239     {
240     psiconv_replace_time,
241     psiconv_replace_date,
242     psiconv_replace_pagenr,
243     psiconv_replace_nr_of_pages,
244     psiconv_replace_filename
245     } psiconv_replacement_type_t;
246    
247 frodo 56 typedef struct psiconv_replacement_s
248 frodo 2 {
249     int offset;
250     int cur_len;
251     psiconv_replacement_type_t type;
252     } *psiconv_replacement;
253    
254     typedef psiconv_list psiconv_replacements; /* of struct replacement */
255    
256 frodo 56 typedef struct psiconv_paragraph_s
257 frodo 2 {
258     char *text;
259     psiconv_character_layout base_character;
260     psiconv_paragraph_layout base_paragraph;
261     psiconv_s16 base_style;
262     psiconv_in_line_layouts in_lines;
263     psiconv_replacements replacements;
264     } *psiconv_paragraph;
265    
266     typedef psiconv_list psiconv_text_and_layout; /* Of struct paragraphs */
267    
268 frodo 56 typedef struct psiconv_texted_section_s
269 frodo 2 {
270     psiconv_text_and_layout paragraphs;
271     } *psiconv_texted_section;
272    
273 frodo 56 typedef struct psiconv_page_header_s
274 frodo 2 {
275     psiconv_bool_t on_first_page;
276     psiconv_paragraph_layout base_paragraph_layout;
277     psiconv_character_layout base_character_layout;
278     psiconv_texted_section text;
279     } *psiconv_page_header;
280    
281 frodo 56 typedef struct psiconv_page_layout_section_s
282 frodo 2 {
283     psiconv_u32 first_page_nr;
284     psiconv_length_t header_dist;
285     psiconv_length_t footer_dist;
286     psiconv_length_t left_margin;
287     psiconv_length_t right_margin;
288     psiconv_length_t top_margin;
289     psiconv_length_t bottom_margin;
290     psiconv_length_t page_width;
291     psiconv_length_t page_height;
292     psiconv_page_header header;
293     psiconv_page_header footer;
294 frodo 76 psiconv_bool_t landscape;
295 frodo 2 } * psiconv_page_layout_section;
296    
297 frodo 56 typedef struct psiconv_word_status_section_s
298 frodo 2 {
299     psiconv_bool_t show_tabs;
300     psiconv_bool_t show_spaces;
301     psiconv_bool_t show_paragraph_ends;
302     psiconv_bool_t show_line_breaks;
303     psiconv_bool_t show_hard_minus;
304     psiconv_bool_t show_hard_space;
305     psiconv_bool_t show_full_pictures;
306     psiconv_bool_t show_full_graphs;
307     psiconv_bool_t show_top_toolbar;
308     psiconv_bool_t show_side_toolbar;
309     psiconv_bool_t fit_lines_to_screen;
310     psiconv_u32 cursor_position;
311     psiconv_u32 display_size;
312     } *psiconv_word_status_section;
313    
314 frodo 56 typedef struct psiconv_word_style_s
315 frodo 2 {
316     psiconv_character_layout character;
317     psiconv_paragraph_layout paragraph;
318     psiconv_u8 hotkey;
319     psiconv_string_t name;
320     psiconv_bool_t built_in;
321 frodo 28 psiconv_u32 outline_level;
322 frodo 2 } *psiconv_word_style;
323    
324     typedef psiconv_list psiconv_word_style_list; /* Of style */
325    
326 frodo 56 typedef struct psiconv_word_styles_section_s
327 frodo 2 {
328     psiconv_word_style normal;
329     psiconv_word_style_list styles;
330     } *psiconv_word_styles_section;
331    
332 frodo 56 typedef struct psiconv_word_f_s
333     {
334 frodo 2 psiconv_page_layout_section page_sec;
335     psiconv_text_and_layout paragraphs;
336     psiconv_word_status_section status_sec;
337     psiconv_word_styles_section styles_sec;
338     } *psiconv_word_f;
339    
340 frodo 56 typedef struct psiconv_texted_f_s
341     {
342 frodo 2 psiconv_page_layout_section page_sec;
343     psiconv_texted_section texted_sec;
344     } *psiconv_texted_f;
345    
346 frodo 42 typedef psiconv_list psiconv_jumptable_section; /* of psiconv_u32 */
347 frodo 12
348 frodo 11 /* Normalized values [0..1] for each component
349     Origin is (x,y)=(0,0), to get pixel at (X,Y) use index [Y*xsize+X] */
350 frodo 56 typedef struct psiconv_paint_data_section_s
351     {
352 frodo 11 psiconv_u32 xsize;
353     psiconv_u32 ysize;
354 frodo 25 psiconv_length_t pic_xsize; /* 0 if not specified */
355     psiconv_length_t pic_ysize; /* 0 if not specified */
356 frodo 11 float *red;
357     float *green;
358     float *blue;
359     } *psiconv_paint_data_section;
360    
361 frodo 12 typedef psiconv_list psiconv_pictures;
362     /* of struct psiconv_paint_data_section */
363    
364 frodo 56 typedef struct psiconv_mbm_f_s
365     {
366 frodo 12 psiconv_pictures sections;
367     } *psiconv_mbm_f;
368    
369 frodo 24 /* This is a little intricated. A picture may be embedded in a larger form.
370     A form is empty, except for the picture. The form has size form_{x,y}size,
371     and the picture is at offset picture_{x,y}_offset within the form. The
372     picture itself has size picture_{x,y}size.
373     Cuts are always <= 1.0; a cut of 0.0 cuts nothing away, a cut of 1.0
374     cuts everything away. */
375 frodo 56 typedef struct psiconv_sketch_section_s
376     {
377 frodo 24 psiconv_u16 form_xsize;
378     psiconv_u16 form_ysize;
379     psiconv_u16 picture_x_offset;
380     psiconv_u16 picture_y_offset;
381     psiconv_u16 picture_xsize;
382     psiconv_u16 picture_ysize;
383     float magnification_x; /* computed relative to first six values */
384     float magnification_y; /* computed relative to first six values */
385     float cut_left; /* computed relative to first six values */
386     float cut_right; /* computed relative to first six values */
387     float cut_top; /* computed relative to first six values */
388     float cut_bottom; /* computed relative to first six values */
389     psiconv_paint_data_section picture;
390     } *psiconv_sketch_section;
391    
392 frodo 56 typedef struct psiconv_sketch_f_s
393     {
394 frodo 24 psiconv_sketch_section sketch_sec;
395     } *psiconv_sketch_f;
396    
397 frodo 56 typedef struct psiconv_clipart_section_s
398     {
399 frodo 41 /* Perhaps later on some currently unknown stuff. */
400     psiconv_paint_data_section picture;
401     } * psiconv_clipart_section;
402    
403     typedef psiconv_list psiconv_cliparts; /* of struct psiconv_clipart_section */
404    
405 frodo 56 typedef struct psiconv_clipart_f_s
406     {
407 frodo 41 psiconv_cliparts sections;
408     } *psiconv_clipart_f;
409    
410 frodo 102 typedef struct psiconv_sheet_ref_s
411     {
412     psiconv_s16 offset;
413     psiconv_bool_t absolute;
414     } psiconv_sheet_ref_t;
415    
416     typedef struct psiconv_sheet_cell_reference_s
417     {
418     psiconv_sheet_ref_t row;
419     psiconv_sheet_ref_t column;
420     } psiconv_sheet_cell_reference_t;
421    
422     typedef struct psiconv_sheet_cell_block_s
423     {
424     psiconv_sheet_cell_reference_t first;
425     psiconv_sheet_cell_reference_t last;
426     } psiconv_sheet_cell_block_t;
427    
428 frodo 110 typedef enum psiconv_cell_type
429     {
430     psiconv_cell_blank,
431     psiconv_cell_int,
432     psiconv_cell_bool,
433     psiconv_cell_error,
434     psiconv_cell_float,
435     psiconv_cell_string
436     } psiconv_cell_type_t;
437    
438     typedef enum psiconv_sheet_errorcode
439     {
440     psiconv_sheet_error_none,
441     psiconv_sheet_error_null,
442     psiconv_sheet_error_divzero,
443     psiconv_sheet_error_value,
444     psiconv_sheet_error_reference,
445     psiconv_sheet_error_name,
446     psiconv_sheet_error_number,
447     psiconv_sheet_error_notavail
448     } psiconv_sheet_errorcode_t;
449    
450 frodo 111 typedef enum psiconv_sheet_numberformat_code
451 frodo 110 {
452     psiconv_numberformat_general,
453     psiconv_numberformat_fixeddecimal,
454     psiconv_numberformat_scientific,
455     psiconv_numberformat_currency,
456     psiconv_numberformat_percent,
457     psiconv_numberformat_triads,
458     psiconv_numberformat_boolean,
459     psiconv_numberformat_text,
460 frodo 122 psiconv_numberformat_date_dmm,
461     psiconv_numberformat_date_mmd,
462 frodo 110 psiconv_numberformat_date_ddmmyy,
463     psiconv_numberformat_date_mmddyy,
464     psiconv_numberformat_date_yymmdd,
465 frodo 122 psiconv_numberformat_date_dmmm,
466     psiconv_numberformat_date_dmmmyy,
467 frodo 110 psiconv_numberformat_date_ddmmmyy,
468     psiconv_numberformat_date_mmm,
469     psiconv_numberformat_date_monthname,
470     psiconv_numberformat_date_mmmyy,
471     psiconv_numberformat_date_monthnameyy,
472 frodo 122 psiconv_numberformat_date_monthnamedyyyy,
473 frodo 110 psiconv_numberformat_datetime_ddmmyyyyhhii,
474     psiconv_numberformat_datetime_ddmmyyyyHHii,
475     psiconv_numberformat_datetime_mmddyyyyhhii,
476     psiconv_numberformat_datetime_mmddyyyyHHii,
477     psiconv_numberformat_datetime_yyyymmddhhii,
478     psiconv_numberformat_datetime_yyyymmddHHii,
479     psiconv_numberformat_time_hhii,
480     psiconv_numberformat_time_hhiiss,
481     psiconv_numberformat_time_HHii,
482     psiconv_numberformat_time_HHiiss
483 frodo 111 } psiconv_sheet_numberformat_code_t;
484 frodo 110
485 frodo 111 typedef struct psiconv_sheet_numberformat_s
486 frodo 110 {
487 frodo 111 psiconv_sheet_numberformat_code_t code;
488 frodo 110 psiconv_u8 decimal;
489 frodo 111 } *psiconv_sheet_numberformat;
490 frodo 110
491 frodo 111 typedef struct psiconv_sheet_cell_layout_s
492     {
493     psiconv_character_layout character;
494     psiconv_paragraph_layout paragraph;
495     psiconv_sheet_numberformat numberformat;
496     } * psiconv_sheet_cell_layout;
497    
498 frodo 110 typedef struct psiconv_sheet_cell_s
499     {
500     psiconv_u16 column;
501     psiconv_u16 row;
502     psiconv_cell_type_t type;
503     union {
504     psiconv_u32 dat_int;
505     double dat_float;
506     char *dat_string;
507 frodo 129 psiconv_bool_t dat_bool;
508     psiconv_sheet_errorcode_t dat_error;
509 frodo 110 } data;
510 frodo 111 psiconv_sheet_cell_layout layout;
511 frodo 110 psiconv_bool_t calculated;
512     psiconv_u32 ref_formula;
513     } *psiconv_sheet_cell;
514    
515     typedef psiconv_list psiconv_sheet_cell_list;
516    
517 frodo 94 typedef struct psiconv_sheet_status_section_s
518     {
519     psiconv_bool_t show_graph;
520     psiconv_u32 cursor_row;
521     psiconv_u32 cursor_column;
522     psiconv_bool_t show_top_sheet_toolbar;
523     psiconv_bool_t show_side_sheet_toolbar;
524     psiconv_bool_t show_top_graph_toolbar;
525     psiconv_bool_t show_side_graph_toolbar;
526     psiconv_u32 sheet_display_size;
527     psiconv_u32 graph_display_size;
528     psiconv_triple_t show_horizontal_scrollbar;
529     psiconv_triple_t show_vertical_scrollbar;
530     } *psiconv_sheet_status_section;
531    
532 frodo 98 typedef enum psiconv_formula_type
533 frodo 97 {
534 frodo 99 psiconv_formula_unknown,
535     psiconv_formula_op_lt,
536     psiconv_formula_op_le,
537     psiconv_formula_op_gt,
538     psiconv_formula_op_ge,
539     psiconv_formula_op_ne,
540     psiconv_formula_op_eq,
541     psiconv_formula_op_add,
542     psiconv_formula_op_sub,
543     psiconv_formula_op_mul,
544     psiconv_formula_op_div,
545     psiconv_formula_op_pow,
546     psiconv_formula_op_pos,
547     psiconv_formula_op_neg,
548 frodo 107 psiconv_formula_op_not,
549     psiconv_formula_op_and,
550     psiconv_formula_op_or,
551 frodo 99 psiconv_formula_op_con,
552     psiconv_formula_op_bra,
553     psiconv_formula_mark_eof,
554     psiconv_formula_dat_float,
555     psiconv_formula_dat_int,
556     psiconv_formula_dat_var,
557     psiconv_formula_dat_string,
558     psiconv_formula_dat_cellref,
559     psiconv_formula_dat_cellblock,
560     psiconv_formula_dat_vcellblock,
561     psiconv_formula_mark_opsep,
562     psiconv_formula_mark_opend,
563     psiconv_formula_fun_false,
564     psiconv_formula_fun_if,
565     psiconv_formula_fun_true,
566     psiconv_formula_fun_cell,
567     psiconv_formula_fun_errortype,
568     psiconv_formula_fun_isblank,
569     psiconv_formula_fun_iserr,
570     psiconv_formula_fun_iserror,
571     psiconv_formula_fun_islogical,
572     psiconv_formula_fun_isna,
573     psiconv_formula_fun_isnontext,
574     psiconv_formula_fun_isnumber,
575     psiconv_formula_fun_istext,
576     psiconv_formula_fun_n,
577     psiconv_formula_fun_type,
578     psiconv_formula_fun_address,
579     psiconv_formula_fun_column,
580     psiconv_formula_fun_columns,
581     psiconv_formula_fun_hlookup,
582     psiconv_formula_fun_index,
583     psiconv_formula_fun_indirect,
584     psiconv_formula_fun_lookup,
585     psiconv_formula_fun_offset,
586     psiconv_formula_fun_row,
587     psiconv_formula_fun_rows,
588     psiconv_formula_fun_vlookup,
589     psiconv_formula_fun_char,
590     psiconv_formula_fun_code,
591     psiconv_formula_fun_exact,
592     psiconv_formula_fun_find,
593     psiconv_formula_fun_left,
594     psiconv_formula_fun_len,
595     psiconv_formula_fun_lower,
596     psiconv_formula_fun_mid,
597     psiconv_formula_fun_proper,
598     psiconv_formula_fun_replace,
599     psiconv_formula_fun_rept,
600     psiconv_formula_fun_right,
601     psiconv_formula_fun_string,
602     psiconv_formula_fun_t,
603     psiconv_formula_fun_trim,
604     psiconv_formula_fun_upper,
605     psiconv_formula_fun_value,
606     psiconv_formula_fun_date,
607     psiconv_formula_fun_datevalue,
608     psiconv_formula_fun_day,
609     psiconv_formula_fun_hour,
610     psiconv_formula_fun_minute,
611     psiconv_formula_fun_month,
612     psiconv_formula_fun_now,
613     psiconv_formula_fun_second,
614     psiconv_formula_fun_today,
615     psiconv_formula_fun_time,
616     psiconv_formula_fun_timevalue,
617     psiconv_formula_fun_year,
618     psiconv_formula_fun_abs,
619     psiconv_formula_fun_acos,
620     psiconv_formula_fun_asin,
621     psiconv_formula_fun_atan,
622     psiconv_formula_fun_atan2,
623     psiconv_formula_fun_cos,
624     psiconv_formula_fun_degrees,
625     psiconv_formula_fun_exp,
626     psiconv_formula_fun_fact,
627     psiconv_formula_fun_int,
628     psiconv_formula_fun_ln,
629     psiconv_formula_fun_log10,
630     psiconv_formula_fun_mod,
631     psiconv_formula_fun_pi,
632     psiconv_formula_fun_radians,
633     psiconv_formula_fun_rand,
634     psiconv_formula_fun_round,
635     psiconv_formula_fun_sign,
636     psiconv_formula_fun_sin,
637     psiconv_formula_fun_sqrt,
638     psiconv_formula_fun_sumproduct,
639     psiconv_formula_fun_tan,
640     psiconv_formula_fun_trunc,
641     psiconv_formula_fun_cterm,
642     psiconv_formula_fun_ddb,
643     psiconv_formula_fun_fv,
644     psiconv_formula_fun_irr,
645     psiconv_formula_fun_npv,
646     psiconv_formula_fun_pmt,
647     psiconv_formula_fun_pv,
648     psiconv_formula_fun_rate,
649     psiconv_formula_fun_sln,
650     psiconv_formula_fun_syd,
651     psiconv_formula_fun_term,
652     psiconv_formula_fun_combin,
653     psiconv_formula_fun_permut,
654     psiconv_formula_vfn_average,
655     psiconv_formula_vfn_choose,
656     psiconv_formula_vfn_count,
657     psiconv_formula_vfn_counta,
658     psiconv_formula_vfn_countblank,
659     psiconv_formula_vfn_max,
660     psiconv_formula_vfn_min,
661     psiconv_formula_vfn_product,
662     psiconv_formula_vfn_stdevp,
663     psiconv_formula_vfn_stdev,
664     psiconv_formula_vfn_sum,
665     psiconv_formula_vfn_sumsq,
666     psiconv_formula_vfn_varp,
667     psiconv_formula_vfn_var
668 frodo 98 } psiconv_formula_type_t;
669 frodo 97
670 frodo 98 typedef psiconv_list psiconv_formula_list; /* Of struct psiconv_formula_s */
671 frodo 97
672 frodo 98 typedef struct psiconv_formula_s
673     {
674     psiconv_formula_type_t type;
675     union {
676 frodo 99 psiconv_u32 dat_int;
677     double dat_float;
678     char *dat_string;
679 frodo 102 psiconv_sheet_cell_reference_t dat_cellref;
680     psiconv_sheet_cell_block_t dat_cellblock;
681 frodo 99 psiconv_formula_list fun_operands;
682 frodo 129 psiconv_u32 dat_variable;
683 frodo 98 } data;
684     } *psiconv_formula;
685    
686 frodo 128 typedef struct psiconv_sheet_line_s
687     {
688     psiconv_u32 position;
689     psiconv_sheet_cell_layout layout;
690     } *psiconv_sheet_line;
691    
692     typedef psiconv_list psiconv_sheet_line_list;
693     /* Of struct psiconv_sheet_line_s */
694    
695 frodo 111 typedef struct psiconv_sheet_worksheet_s
696 frodo 110 {
697 frodo 111 psiconv_sheet_cell_layout default_layout;
698 frodo 110 psiconv_sheet_cell_list cells;
699 frodo 111 psiconv_bool_t show_zeros;
700 frodo 128 psiconv_sheet_line_list row_default_layouts;
701     psiconv_sheet_line_list col_default_layouts;
702 frodo 111 } *psiconv_sheet_worksheet;
703 frodo 110
704 frodo 111 typedef psiconv_list psiconv_sheet_worksheet_list;
705 frodo 129 /* of struct psiconv_sheet_worksheet_s */
706 frodo 111
707 frodo 129 typedef enum psiconv_variable_type
708     {
709     psiconv_var_int,
710     psiconv_var_float,
711     psiconv_var_string,
712     psiconv_var_cellref,
713     psiconv_var_cellblock
714     } psiconv_variable_type_t;
715    
716     typedef struct psiconv_sheet_variable_s
717     {
718     psiconv_u32 number;
719     char *name;
720     psiconv_variable_type_t type;
721     union {
722     psiconv_s32 dat_int;
723     double dat_float;
724     char *dat_string;
725     psiconv_sheet_cell_reference_t dat_cellref;
726     psiconv_sheet_cell_block_t dat_cellblock;
727     } data;
728     } *psiconv_sheet_variable;
729    
730     typedef psiconv_list psiconv_sheet_variable_list;
731     /* of struct psiconv_sheet_variable_s */
732    
733     typedef struct psiconv_sheet_name_section_s
734     {
735     char *name;
736     } *psiconv_sheet_name_section;
737    
738     typedef struct psiconv_sheet_info_section_s
739     {
740     psiconv_bool_t auto_recalc;
741     } *psiconv_sheet_info_section;
742    
743 frodo 95 typedef struct psiconv_sheet_workbook_section_s
744     {
745 frodo 98 psiconv_formula_list formulas;
746 frodo 111 psiconv_sheet_worksheet_list worksheets;
747 frodo 129 psiconv_sheet_variable_list variables;
748     psiconv_sheet_info_section info;
749     psiconv_sheet_name_section name;
750 frodo 95 } *psiconv_sheet_workbook_section;
751    
752 frodo 94 typedef struct psiconv_sheet_f_s
753     {
754     psiconv_page_layout_section page_sec;
755     psiconv_sheet_status_section status_sec;
756 frodo 95 psiconv_sheet_workbook_section workbook_sec;
757 frodo 94 } *psiconv_sheet_f;
758    
759 frodo 56 typedef struct psiconv_file_s
760     {
761 frodo 2 psiconv_file_type_t type;
762     void *file;
763     } *psiconv_file;
764    
765    
766     /* UID1 */
767     #define PSICONV_ID_PSION5 0x10000037
768 frodo 41 #define PSICONV_ID_CLIPART 0x10000041
769 frodo 2 /* UID2 */
770     #define PSICONV_ID_DATA_FILE 0x1000006D
771 frodo 12 #define PSICONV_ID_MBM_FILE 0x10000042
772 frodo 2 /* UID3 */
773     #define PSICONV_ID_WORD 0x1000007F
774     #define PSICONV_ID_TEXTED 0x10000085
775 frodo 24 #define PSICONV_ID_SKETCH 0x1000007D
776 frodo 94 #define PSICONV_ID_SHEET 0x10000088
777 frodo 2
778     /* Section table ids */
779     #define PSICONV_ID_WORD_STATUS_SECTION 0x10000243
780     #define PSICONV_ID_APPL_ID_SECTION 0x10000089
781     #define PSICONV_ID_TEXT_SECTION 0x10000106
782     #define PSICONV_ID_LAYOUT_SECTION 0x10000143
783     #define PSICONV_ID_WORD_STYLES_SECTION 0x10000104
784     #define PSICONV_ID_PAGE_LAYOUT_SECTION 0x10000105
785     #define PSICONV_ID_PASSWORD_SECTION 0x100000CD
786 frodo 24 #define PSICONV_ID_SKETCH_SECTION 0x1000007D
787 frodo 94 #define PSICONV_ID_SHEET_STATUS_SECTION 0x1000011F
788 frodo 95 #define PSICONV_ID_SHEET_WORKBOOK_SECTION 0x1000011D
789 frodo 110 #define PSICONV_ID_SHEET_GRAPH_SECTION 0x10000121
790 frodo 2
791     /* Other ids */
792 frodo 76 #define PSICONV_ID_PAGE_DIMENSIONS1 0x100000fd
793     #define PSICONV_ID_PAGE_DIMENSIONS2 0x1000010e
794 frodo 2 #define PSICONV_ID_TEXTED_BODY 0x1000005c
795     #define PSICONV_ID_TEXTED_REPLACEMENT 0x10000063
796     #define PSICONV_ID_TEXTED_UNKNOWN 0x10000065
797     #define PSICONV_ID_TEXTED_LAYOUT 0x10000066
798     #define PSICONV_ID_TEXTED_TEXT 0x10000064
799     #define PSICONV_ID_STYLE_REMOVABLE 0x1000004F
800     #define PSICONV_ID_STYLE_BUILT_IN 0x1000004C
801 frodo 43 #define PSICONV_ID_CLIPART_ITEM 0x10000040
802 frodo 2
803    
804 frodo 62 /* Return a clean layout_status. You can modify it at will. Returns NULL
805     if there is not enough memory. */
806 frodo 2 extern psiconv_character_layout psiconv_basic_character_layout(void);
807    
808 frodo 62 /* Return a clean layout_status. You can modify it at will. Returns NULL
809     if there is not enough memory. */
810 frodo 2 extern psiconv_paragraph_layout psiconv_basic_paragraph_layout(void);
811    
812     /* Clone a layout_status: the new copy is completely independent of the
813 frodo 62 original one. Returns NULL if there is not enough memory. */
814 frodo 2 extern psiconv_paragraph_layout psiconv_clone_paragraph_layout
815     (psiconv_paragraph_layout ls);
816    
817     extern psiconv_character_layout psiconv_clone_character_layout
818     (psiconv_character_layout ls);
819    
820 frodo 62 /* Get a numbered style. Returns NULL if the style is unknown. */
821 frodo 2 extern psiconv_word_style psiconv_get_style (psiconv_word_styles_section ss, int nr);
822 frodo 128 /* Get a numbered formula. Returns NULL if the style is unknown. */
823 frodo 125 extern psiconv_formula psiconv_get_formula (psiconv_formula_list ss, int nr);
824 frodo 2
825 frodo 128 /* Return the default layout */
826     extern psiconv_sheet_cell_layout psiconv_get_default_layout
827     (psiconv_sheet_line_list row_defaults,
828     psiconv_sheet_line_list col_defaults,
829     psiconv_sheet_cell_layout cell_default,
830     int row,int col);
831    
832 frodo 2 extern void psiconv_free_color(psiconv_color color);
833     extern void psiconv_free_border(psiconv_border border);
834     extern void psiconv_free_bullet(psiconv_bullet bullet);
835     extern void psiconv_free_font(psiconv_font font);
836     extern void psiconv_free_tab(psiconv_tab tab);
837     extern void psiconv_free_tabs(psiconv_all_tabs tabs);
838     extern void psiconv_free_paragraph_layout(psiconv_paragraph_layout layout);
839     extern void psiconv_free_character_layout(psiconv_character_layout layout);
840     extern void psiconv_free_word_style(psiconv_word_style style);
841     extern void psiconv_free_word_styles_section
842     (psiconv_word_styles_section styles);
843 frodo 98 extern void psiconv_free_formula(psiconv_formula formula);
844     extern void psiconv_free_formula_list(psiconv_formula_list list);
845 frodo 94 extern void psiconv_free_sheet_status_section
846     (psiconv_sheet_status_section section);
847 frodo 111 extern void psiconv_free_sheet_cell_layout(psiconv_sheet_cell_layout layout);
848     extern void psiconv_free_sheet_worksheet(psiconv_sheet_worksheet sheet);
849     extern void psiconv_free_sheet_worksheet_list
850     (psiconv_sheet_worksheet_list list);
851    
852 frodo 94 extern void psiconv_free_sheet_f(psiconv_sheet_f file);
853 frodo 110 extern void psiconv_free_sheet_cell(psiconv_sheet_cell cell);
854     extern void psiconv_free_sheet_cell_list(psiconv_sheet_cell_list list);
855 frodo 111 extern void psiconv_free_sheet_numberformat
856     (psiconv_sheet_numberformat numberformat);
857 frodo 128 extern void psiconv_free_sheet_line_list(psiconv_sheet_line_list list);
858     extern void psiconv_free_sheet_line(psiconv_sheet_line line);
859 frodo 129 extern void psiconv_free_sheet_name_section(psiconv_sheet_name_section section);
860     extern void psiconv_free_sheet_variable(psiconv_sheet_variable list);
861     extern void psiconv_free_sheet_variable_list(psiconv_sheet_variable_list list);
862     extern void psiconv_free_sheet_info_section(psiconv_sheet_info_section section);
863 frodo 2 extern void psiconv_free_header_section(psiconv_header_section header);
864     extern void psiconv_free_section_table_entry(psiconv_section_table_entry entry);
865     extern void psiconv_free_section_table_section
866     (psiconv_section_table_section section);
867     extern void psiconv_free_application_id_section
868     (psiconv_application_id_section section);
869     extern void psiconv_free_in_line_layout(psiconv_in_line_layout layout);
870     extern void psiconv_free_in_line_layouts(psiconv_in_line_layouts layouts);
871     extern void psiconv_free_replacement(psiconv_replacement replacement);
872     extern void psiconv_free_replacements(psiconv_replacements replacements);
873     extern void psiconv_free_paragraph(psiconv_paragraph paragraph);
874     extern void psiconv_free_text_and_layout(psiconv_text_and_layout text);
875     extern void psiconv_free_texted_section(psiconv_texted_section section);
876     extern void psiconv_free_page_header(psiconv_page_header header);
877     extern void psiconv_free_page_layout_section
878     (psiconv_page_layout_section section);
879     extern void psiconv_free_word_status_section
880     (psiconv_word_status_section section);
881     extern void psiconv_free_word_f(psiconv_word_f file);
882 frodo 12 extern void psiconv_free_texted_f(psiconv_texted_f file);
883     extern void psiconv_free_paint_data_section(psiconv_paint_data_section section);
884     extern void psiconv_free_pictures(psiconv_pictures section);
885 frodo 42 extern void psiconv_free_jumptable_section
886     (psiconv_jumptable_section section);
887 frodo 12 extern void psiconv_free_mbm_f(psiconv_mbm_f file);
888 frodo 24 extern void psiconv_free_sketch_section(psiconv_sketch_section sec);
889     extern void psiconv_free_sketch_f(psiconv_sketch_f file);
890 frodo 41 extern void psiconv_free_clipart_section(psiconv_clipart_section section);
891     extern void psiconv_free_cliparts(psiconv_cliparts section);
892     extern void psiconv_free_clipart_f(psiconv_clipart_f file);
893 frodo 24
894 frodo 2 extern void psiconv_free_file(psiconv_file file);
895    
896 frodo 78 extern int psiconv_compare_color(const psiconv_color value1,
897     const psiconv_color value2);
898     extern int psiconv_compare_font(const psiconv_font value1,
899     const psiconv_font value2);
900     extern int psiconv_compare_border(const psiconv_border value1,
901     const psiconv_border value2);
902     extern int psiconv_compare_bullet(const psiconv_bullet value1,
903     const psiconv_bullet value2);
904     extern int psiconv_compare_tab(const psiconv_tab value1,
905     const psiconv_tab value2);
906     extern int psiconv_compare_all_tabs(const psiconv_all_tabs value1,
907     const psiconv_all_tabs value2);
908     extern int psiconv_compare_paragraph_layout
909     (const psiconv_paragraph_layout value1,
910     const psiconv_paragraph_layout value2);
911    
912     extern int psiconv_compare_character_layout
913     (const psiconv_character_layout value1,
914     const psiconv_character_layout value2);
915    
916 frodo 87 /* Get a newly allocated file with sensible defaults, ready to generate. */
917     extern psiconv_file psiconv_empty_file(psiconv_file_type_t type);
918 frodo 78
919 frodo 87
920 frodo 55 #ifdef __cplusplus
921     }
922     #endif /* __cplusplus */
923 frodo 2
924     #endif /* def PSICONV_DATA_H */

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