1 | /* |
1 | /* |
2 | data.h - Part of psiconv, a PSION 5 file formats converter |
2 | data.h - Part of psiconv, a PSION 5 file formats converter |
3 | Copyright (c) 1999 Frodo Looijaard <frodol@dds.nl> |
3 | Copyright (c) 1999, 2000 Frodo Looijaard <frodol@dds.nl> |
4 | |
4 | |
5 | This program is free software; you can redistribute it and/or modify |
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 |
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 |
7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. |
8 | (at your option) any later version. |
… | |
… | |
22 | parse routines, and read by the generation routines. */ |
22 | parse routines, and read by the generation routines. */ |
23 | |
23 | |
24 | #ifndef PSICONV_DATA_H |
24 | #ifndef PSICONV_DATA_H |
25 | #define PSICONV_DATA_H |
25 | #define PSICONV_DATA_H |
26 | |
26 | |
27 | #include "general.h" |
27 | #include <psiconv/general.h> |
28 | #include "list.h" |
28 | #include <psiconv/list.h> |
29 | |
29 | |
30 | /* All types which end on _t are plain types; all other types are pointers |
30 | /* All types which end on _t are plain types; all other types are pointers |
31 | to structs */ |
31 | to structs */ |
|
|
32 | |
|
|
33 | #ifdef __cplusplus |
|
|
34 | extern "C" { |
|
|
35 | #endif /* __cplusplus */ |
|
|
36 | |
|
|
37 | typedef double psiconv_float_t; |
32 | |
38 | |
33 | typedef enum psiconv_file_type { |
39 | typedef enum psiconv_file_type { |
34 | psiconv_unknown_file, |
40 | psiconv_unknown_file, |
35 | psiconv_word_file, |
41 | psiconv_word_file, |
36 | psiconv_texted_file, |
42 | psiconv_texted_file, |
37 | psiconv_mbm_file, |
43 | psiconv_mbm_file, |
38 | psiconv_sketch_file |
44 | psiconv_sketch_file, |
|
|
45 | psiconv_clipart_file, |
|
|
46 | psiconv_sheet_file |
39 | } psiconv_file_type_t; |
47 | } psiconv_file_type_t; |
40 | |
48 | |
41 | /* Length indicators */ |
49 | /* Length indicators */ |
42 | typedef psiconv_u32 psiconv_S_t; |
50 | typedef psiconv_u32 psiconv_S_t; |
43 | typedef psiconv_u32 psiconv_X_t; |
51 | typedef psiconv_u32 psiconv_X_t; |
… | |
… | |
54 | typedef enum psiconv_bool |
62 | typedef enum psiconv_bool |
55 | { |
63 | { |
56 | psiconv_bool_false, |
64 | psiconv_bool_false, |
57 | psiconv_bool_true |
65 | psiconv_bool_true |
58 | } psiconv_bool_t; |
66 | } psiconv_bool_t; |
|
|
67 | |
|
|
68 | typedef enum psiconv_triple |
|
|
69 | { |
|
|
70 | psiconv_triple_on, |
|
|
71 | psiconv_triple_off, |
|
|
72 | psiconv_triple_auto |
|
|
73 | } psiconv_triple_t; |
59 | |
74 | |
60 | typedef enum psiconv_super_sub |
75 | typedef enum psiconv_super_sub |
61 | { psiconv_normalscript, |
76 | { psiconv_normalscript, |
62 | psiconv_superscript, |
77 | psiconv_superscript, |
63 | psiconv_subscript |
78 | psiconv_subscript |
… | |
… | |
79 | typedef enum psiconv_border_kind |
94 | typedef enum psiconv_border_kind |
80 | { psiconv_border_none, |
95 | { psiconv_border_none, |
81 | psiconv_border_solid, |
96 | psiconv_border_solid, |
82 | psiconv_border_double, |
97 | psiconv_border_double, |
83 | psiconv_border_dotted, |
98 | psiconv_border_dotted, |
84 | psiconv_border_striped, |
99 | psiconv_border_dashed, |
85 | psiconv_border_dotstripe, |
100 | psiconv_border_dotdashed, |
86 | psiconv_border_dotdotstripe |
101 | psiconv_border_dotdotdashed |
87 | } psiconv_border_kind_t; |
102 | } psiconv_border_kind_t; |
|
|
103 | |
|
|
104 | 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; |
88 | |
111 | |
89 | /* Colors. |
112 | /* Colors. |
90 | black: 0x00 0x00 0x00 |
113 | black: 0x00 0x00 0x00 |
91 | white: 0xff 0xff 0xff */ |
114 | white: 0xff 0xff 0xff */ |
92 | typedef struct psiconv_color |
115 | typedef struct psiconv_color_s |
93 | { |
116 | { |
94 | psiconv_u8 red; |
117 | psiconv_u8 red; |
95 | psiconv_u8 green; |
118 | psiconv_u8 green; |
96 | psiconv_u8 blue; |
119 | psiconv_u8 blue; |
97 | } * psiconv_color; |
120 | } * psiconv_color; |
98 | |
121 | |
99 | typedef struct psiconv_font |
122 | typedef struct psiconv_font_s |
100 | { |
123 | { |
101 | char *name; |
124 | char *name; |
102 | psiconv_u8 screenfont; |
125 | psiconv_screenfont_t screenfont; |
103 | } *psiconv_font; |
126 | } *psiconv_font; |
104 | |
127 | |
105 | typedef struct psiconv_border |
128 | typedef struct psiconv_border_s |
106 | { |
129 | { |
107 | psiconv_border_kind_t kind; |
130 | psiconv_border_kind_t kind; |
108 | psiconv_size_t thickness; /* Set to 1/20 for non-solid lines */ |
131 | psiconv_size_t thickness; /* Set to 1/20 for non-solid lines */ |
109 | psiconv_color color; |
132 | psiconv_color color; |
110 | } *psiconv_border; |
133 | } *psiconv_border; |
111 | |
134 | |
112 | typedef struct psiconv_bullet |
135 | typedef struct psiconv_bullet_s |
113 | { |
136 | { |
114 | psiconv_bool_t on; |
137 | psiconv_bool_t on; |
115 | psiconv_size_t font_size; |
138 | psiconv_size_t font_size; |
116 | psiconv_u8 character; |
139 | psiconv_u8 character; |
117 | psiconv_bool_t indent; |
140 | psiconv_bool_t indent; |
… | |
… | |
124 | psiconv_tab_left, |
147 | psiconv_tab_left, |
125 | psiconv_tab_centre, |
148 | psiconv_tab_centre, |
126 | psiconv_tab_right |
149 | psiconv_tab_right |
127 | } psiconv_tab_kind_t; |
150 | } psiconv_tab_kind_t; |
128 | |
151 | |
129 | typedef struct psiconv_tab |
152 | typedef struct psiconv_tab_s |
130 | { |
153 | { |
131 | psiconv_length_t location; |
154 | psiconv_length_t location; |
132 | psiconv_tab_kind_t kind; |
155 | psiconv_tab_kind_t kind; |
133 | } *psiconv_tab; |
156 | } *psiconv_tab; |
134 | |
157 | |
135 | |
158 | |
136 | typedef psiconv_list psiconv_tab_list; /* of struct psiconv_tab */ |
159 | typedef psiconv_list psiconv_tab_list; /* of struct psiconv_tab */ |
137 | |
160 | |
138 | typedef struct psiconv_all_tabs |
161 | typedef struct psiconv_all_tabs_s |
139 | { |
162 | { |
140 | psiconv_length_t normal; |
163 | psiconv_length_t normal; |
141 | psiconv_tab_list extras; |
164 | psiconv_tab_list extras; |
142 | } *psiconv_all_tabs; |
165 | } *psiconv_all_tabs; |
143 | |
166 | |
144 | typedef struct psiconv_character_layout |
167 | typedef struct psiconv_character_layout_s |
145 | { |
168 | { |
146 | psiconv_color color; |
169 | psiconv_color color; |
147 | psiconv_color back_color; |
170 | psiconv_color back_color; |
148 | psiconv_size_t font_size; |
171 | psiconv_size_t font_size; |
149 | psiconv_bool_t italic; |
172 | psiconv_bool_t italic; |
150 | psiconv_bool_t bold; |
173 | psiconv_bool_t bold; |
151 | psiconv_super_sub_t super_sub; |
174 | psiconv_super_sub_t super_sub; |
152 | psiconv_bool_t underline; |
175 | psiconv_bool_t underline; |
153 | psiconv_bool_t strike_out; |
176 | psiconv_bool_t strikethrough; |
154 | psiconv_font font; |
177 | psiconv_font font; |
155 | } *psiconv_character_layout; |
178 | } *psiconv_character_layout; |
156 | |
179 | |
157 | typedef struct psiconv_paragraph_layout |
180 | typedef struct psiconv_paragraph_layout_s |
158 | { |
181 | { |
159 | psiconv_color back_color; |
182 | psiconv_color back_color; |
160 | psiconv_length_t indent_left; |
183 | psiconv_length_t indent_left; |
161 | psiconv_length_t indent_right; |
184 | psiconv_length_t indent_right; |
162 | psiconv_length_t indent_first; |
185 | psiconv_length_t indent_first; |
163 | psiconv_justify_hor_t justify_hor; |
186 | psiconv_justify_hor_t justify_hor; |
164 | psiconv_justify_ver_t justify_ver; |
187 | psiconv_justify_ver_t justify_ver; |
165 | psiconv_size_t interline; |
188 | psiconv_size_t linespacing; |
166 | psiconv_bool_t interline_exact; |
189 | psiconv_bool_t linespacing_exact; |
167 | psiconv_size_t top_space; |
190 | psiconv_size_t space_above; |
168 | psiconv_size_t bottom_space; |
191 | psiconv_size_t space_below; |
169 | psiconv_bool_t on_one_page; |
192 | psiconv_bool_t keep_together; |
170 | psiconv_bool_t together_with; /* What the heck is this? */ |
193 | psiconv_bool_t keep_with_next; |
171 | psiconv_bool_t on_next_page; |
194 | psiconv_bool_t on_next_page; |
172 | psiconv_bool_t no_widow_protection; |
195 | psiconv_bool_t no_widow_protection; |
173 | psiconv_length_t border_distance; |
196 | psiconv_length_t border_distance; |
174 | psiconv_bullet bullet; |
197 | psiconv_bullet bullet; |
175 | psiconv_border left_border; |
198 | psiconv_border left_border; |
… | |
… | |
177 | psiconv_border top_border; |
200 | psiconv_border top_border; |
178 | psiconv_border bottom_border; |
201 | psiconv_border bottom_border; |
179 | psiconv_all_tabs tabs; |
202 | psiconv_all_tabs tabs; |
180 | } *psiconv_paragraph_layout; |
203 | } *psiconv_paragraph_layout; |
181 | |
204 | |
182 | typedef struct psiconv_header_section |
205 | typedef struct psiconv_header_section_s |
183 | { |
206 | { |
184 | psiconv_u32 uid1; |
207 | psiconv_u32 uid1; |
185 | psiconv_u32 uid2; |
208 | psiconv_u32 uid2; |
186 | psiconv_u32 uid3; |
209 | psiconv_u32 uid3; |
187 | psiconv_u32 checksum; |
210 | psiconv_u32 checksum; |
188 | psiconv_file_type_t file; |
211 | psiconv_file_type_t file; |
189 | } *psiconv_header_section; |
212 | } *psiconv_header_section; |
190 | |
213 | |
191 | typedef struct psiconv_section_table_entry |
214 | typedef struct psiconv_section_table_entry_s |
192 | { |
215 | { |
193 | psiconv_u32 id; |
216 | psiconv_u32 id; |
194 | psiconv_u32 offset; |
217 | psiconv_u32 offset; |
195 | } *psiconv_section_table_entry; |
218 | } *psiconv_section_table_entry; |
196 | |
219 | |
197 | typedef psiconv_list psiconv_section_table_section; |
220 | typedef psiconv_list psiconv_section_table_section; |
198 | /* Of struct sectiontable_entry */ |
221 | /* Of struct sectiontable_entry */ |
199 | |
222 | |
200 | typedef struct psiconv_application_id_section |
223 | typedef struct psiconv_application_id_section_s |
201 | { |
224 | { |
202 | psiconv_u32 id; |
225 | psiconv_u32 id; |
203 | psiconv_string_t name; |
226 | psiconv_string_t name; |
204 | } *psiconv_application_id_section; |
227 | } *psiconv_application_id_section; |
205 | |
228 | |
206 | typedef struct psiconv_in_line_layout |
229 | typedef struct psiconv_in_line_layout_s |
207 | { |
230 | { |
208 | psiconv_character_layout layout; |
231 | psiconv_character_layout layout; |
209 | int length; |
232 | int length; |
210 | } *psiconv_in_line_layout; |
233 | } *psiconv_in_line_layout; |
211 | |
234 | |
… | |
… | |
218 | psiconv_replace_pagenr, |
241 | psiconv_replace_pagenr, |
219 | psiconv_replace_nr_of_pages, |
242 | psiconv_replace_nr_of_pages, |
220 | psiconv_replace_filename |
243 | psiconv_replace_filename |
221 | } psiconv_replacement_type_t; |
244 | } psiconv_replacement_type_t; |
222 | |
245 | |
223 | typedef struct psiconv_replacement |
246 | typedef struct psiconv_replacement_s |
224 | { |
247 | { |
225 | int offset; |
248 | int offset; |
226 | int cur_len; |
249 | int cur_len; |
227 | psiconv_replacement_type_t type; |
250 | psiconv_replacement_type_t type; |
228 | } *psiconv_replacement; |
251 | } *psiconv_replacement; |
229 | |
252 | |
230 | typedef psiconv_list psiconv_replacements; /* of struct replacement */ |
253 | typedef psiconv_list psiconv_replacements; /* of struct replacement */ |
231 | |
254 | |
232 | typedef struct psiconv_paragraph |
255 | typedef struct psiconv_paragraph_s |
233 | { |
256 | { |
234 | char *text; |
257 | char *text; |
235 | psiconv_character_layout base_character; |
258 | psiconv_character_layout base_character; |
236 | psiconv_paragraph_layout base_paragraph; |
259 | psiconv_paragraph_layout base_paragraph; |
237 | psiconv_s16 base_style; |
260 | psiconv_s16 base_style; |
… | |
… | |
239 | psiconv_replacements replacements; |
262 | psiconv_replacements replacements; |
240 | } *psiconv_paragraph; |
263 | } *psiconv_paragraph; |
241 | |
264 | |
242 | typedef psiconv_list psiconv_text_and_layout; /* Of struct paragraphs */ |
265 | typedef psiconv_list psiconv_text_and_layout; /* Of struct paragraphs */ |
243 | |
266 | |
244 | typedef struct psiconv_texted_section |
267 | typedef struct psiconv_texted_section_s |
245 | { |
268 | { |
246 | psiconv_text_and_layout paragraphs; |
269 | psiconv_text_and_layout paragraphs; |
247 | } *psiconv_texted_section; |
270 | } *psiconv_texted_section; |
248 | |
271 | |
249 | typedef struct psiconv_page_header |
272 | typedef struct psiconv_page_header_s |
250 | { |
273 | { |
251 | psiconv_bool_t on_first_page; |
274 | psiconv_bool_t on_first_page; |
252 | psiconv_paragraph_layout base_paragraph_layout; |
275 | psiconv_paragraph_layout base_paragraph_layout; |
253 | psiconv_character_layout base_character_layout; |
276 | psiconv_character_layout base_character_layout; |
254 | psiconv_texted_section text; |
277 | psiconv_texted_section text; |
255 | } *psiconv_page_header; |
278 | } *psiconv_page_header; |
256 | |
279 | |
257 | typedef struct psiconv_page_layout_section |
280 | typedef struct psiconv_page_layout_section_s |
258 | { |
281 | { |
259 | psiconv_u32 first_page_nr; |
282 | psiconv_u32 first_page_nr; |
260 | psiconv_length_t header_dist; |
283 | psiconv_length_t header_dist; |
261 | psiconv_length_t footer_dist; |
284 | psiconv_length_t footer_dist; |
262 | psiconv_length_t left_margin; |
285 | psiconv_length_t left_margin; |
… | |
… | |
265 | psiconv_length_t bottom_margin; |
288 | psiconv_length_t bottom_margin; |
266 | psiconv_length_t page_width; |
289 | psiconv_length_t page_width; |
267 | psiconv_length_t page_height; |
290 | psiconv_length_t page_height; |
268 | psiconv_page_header header; |
291 | psiconv_page_header header; |
269 | psiconv_page_header footer; |
292 | psiconv_page_header footer; |
|
|
293 | psiconv_bool_t landscape; |
270 | } * psiconv_page_layout_section; |
294 | } * psiconv_page_layout_section; |
271 | |
295 | |
272 | typedef struct psiconv_word_status_section |
296 | typedef struct psiconv_word_status_section_s |
273 | { |
297 | { |
274 | psiconv_bool_t show_tabs; |
298 | psiconv_bool_t show_tabs; |
275 | psiconv_bool_t show_spaces; |
299 | psiconv_bool_t show_spaces; |
276 | psiconv_bool_t show_paragraph_ends; |
300 | psiconv_bool_t show_paragraph_ends; |
277 | psiconv_bool_t show_line_breaks; |
301 | psiconv_bool_t show_line_breaks; |
… | |
… | |
284 | psiconv_bool_t fit_lines_to_screen; |
308 | psiconv_bool_t fit_lines_to_screen; |
285 | psiconv_u32 cursor_position; |
309 | psiconv_u32 cursor_position; |
286 | psiconv_u32 display_size; |
310 | psiconv_u32 display_size; |
287 | } *psiconv_word_status_section; |
311 | } *psiconv_word_status_section; |
288 | |
312 | |
289 | typedef struct psiconv_word_style |
313 | typedef struct psiconv_word_style_s |
290 | { |
314 | { |
291 | psiconv_character_layout character; |
315 | psiconv_character_layout character; |
292 | psiconv_paragraph_layout paragraph; |
316 | psiconv_paragraph_layout paragraph; |
293 | psiconv_u8 hotkey; |
317 | psiconv_u8 hotkey; |
294 | psiconv_string_t name; |
318 | psiconv_string_t name; |
295 | psiconv_bool_t built_in; |
319 | psiconv_bool_t built_in; |
|
|
320 | psiconv_u32 outline_level; |
296 | } *psiconv_word_style; |
321 | } *psiconv_word_style; |
297 | |
322 | |
298 | typedef psiconv_list psiconv_word_style_list; /* Of style */ |
323 | typedef psiconv_list psiconv_word_style_list; /* Of style */ |
299 | |
324 | |
300 | typedef struct psiconv_word_styles_section |
325 | typedef struct psiconv_word_styles_section_s |
301 | { |
326 | { |
302 | psiconv_word_style normal; |
327 | psiconv_word_style normal; |
303 | psiconv_word_style_list styles; |
328 | psiconv_word_style_list styles; |
304 | } *psiconv_word_styles_section; |
329 | } *psiconv_word_styles_section; |
305 | |
330 | |
306 | typedef struct psiconv_word_f { |
331 | typedef struct psiconv_word_f_s |
|
|
332 | { |
307 | psiconv_page_layout_section page_sec; |
333 | psiconv_page_layout_section page_sec; |
308 | psiconv_text_and_layout paragraphs; |
334 | psiconv_text_and_layout paragraphs; |
309 | psiconv_word_status_section status_sec; |
335 | psiconv_word_status_section status_sec; |
310 | psiconv_word_styles_section styles_sec; |
336 | psiconv_word_styles_section styles_sec; |
311 | } *psiconv_word_f; |
337 | } *psiconv_word_f; |
312 | |
338 | |
313 | typedef struct psiconv_texted_f { |
339 | typedef struct psiconv_texted_f_s |
|
|
340 | { |
314 | psiconv_page_layout_section page_sec; |
341 | psiconv_page_layout_section page_sec; |
315 | psiconv_texted_section texted_sec; |
342 | psiconv_texted_section texted_sec; |
316 | } *psiconv_texted_f; |
343 | } *psiconv_texted_f; |
317 | |
344 | |
318 | typedef psiconv_list psiconv_mbm_jumptable_section; /* of psiconv_u32 */ |
345 | typedef psiconv_list psiconv_jumptable_section; /* of psiconv_u32 */ |
319 | |
346 | |
320 | /* Normalized values [0..1] for each component |
347 | /* Normalized values [0..1] for each component |
321 | Origin is (x,y)=(0,0), to get pixel at (X,Y) use index [Y*xsize+X] */ |
348 | Origin is (x,y)=(0,0), to get pixel at (X,Y) use index [Y*xsize+X] */ |
322 | typedef struct psiconv_paint_data_section { |
349 | typedef struct psiconv_paint_data_section_s |
|
|
350 | { |
323 | psiconv_u32 xsize; |
351 | psiconv_u32 xsize; |
324 | psiconv_u32 ysize; |
352 | psiconv_u32 ysize; |
|
|
353 | psiconv_length_t pic_xsize; /* 0 if not specified */ |
|
|
354 | psiconv_length_t pic_ysize; /* 0 if not specified */ |
325 | float *red; |
355 | float *red; |
326 | float *green; |
356 | float *green; |
327 | float *blue; |
357 | float *blue; |
328 | } *psiconv_paint_data_section; |
358 | } *psiconv_paint_data_section; |
329 | |
359 | |
330 | typedef psiconv_list psiconv_pictures; |
360 | typedef psiconv_list psiconv_pictures; |
331 | /* of struct psiconv_paint_data_section */ |
361 | /* of struct psiconv_paint_data_section */ |
332 | |
362 | |
333 | typedef struct psiconv_mbm_f { |
363 | typedef struct psiconv_mbm_f_s |
|
|
364 | { |
334 | psiconv_pictures sections; |
365 | psiconv_pictures sections; |
335 | } *psiconv_mbm_f; |
366 | } *psiconv_mbm_f; |
336 | |
367 | |
|
|
368 | /* This is a little intricated. A picture may be embedded in a larger form. |
|
|
369 | A form is empty, except for the picture. The form has size form_{x,y}size, |
|
|
370 | and the picture is at offset picture_{x,y}_offset within the form. The |
|
|
371 | picture itself has size picture_{x,y}size. |
|
|
372 | Cuts are always <= 1.0; a cut of 0.0 cuts nothing away, a cut of 1.0 |
|
|
373 | cuts everything away. */ |
|
|
374 | typedef struct psiconv_sketch_section_s |
|
|
375 | { |
|
|
376 | psiconv_u16 form_xsize; |
|
|
377 | psiconv_u16 form_ysize; |
|
|
378 | psiconv_u16 picture_x_offset; |
|
|
379 | psiconv_u16 picture_y_offset; |
|
|
380 | psiconv_u16 picture_xsize; |
|
|
381 | psiconv_u16 picture_ysize; |
|
|
382 | float magnification_x; /* computed relative to first six values */ |
|
|
383 | float magnification_y; /* computed relative to first six values */ |
|
|
384 | float cut_left; /* computed relative to first six values */ |
|
|
385 | float cut_right; /* computed relative to first six values */ |
|
|
386 | float cut_top; /* computed relative to first six values */ |
|
|
387 | float cut_bottom; /* computed relative to first six values */ |
|
|
388 | psiconv_paint_data_section picture; |
|
|
389 | } *psiconv_sketch_section; |
|
|
390 | |
|
|
391 | typedef struct psiconv_sketch_f_s |
|
|
392 | { |
|
|
393 | psiconv_sketch_section sketch_sec; |
|
|
394 | } *psiconv_sketch_f; |
|
|
395 | |
|
|
396 | typedef struct psiconv_clipart_section_s |
|
|
397 | { |
|
|
398 | /* Perhaps later on some currently unknown stuff. */ |
|
|
399 | psiconv_paint_data_section picture; |
|
|
400 | } * psiconv_clipart_section; |
|
|
401 | |
|
|
402 | typedef psiconv_list psiconv_cliparts; /* of struct psiconv_clipart_section */ |
|
|
403 | |
|
|
404 | typedef struct psiconv_clipart_f_s |
|
|
405 | { |
|
|
406 | psiconv_cliparts sections; |
|
|
407 | } *psiconv_clipart_f; |
|
|
408 | |
|
|
409 | typedef struct psiconv_sheet_status_section_s |
|
|
410 | { |
|
|
411 | psiconv_bool_t show_graph; |
|
|
412 | psiconv_u32 cursor_row; |
|
|
413 | psiconv_u32 cursor_column; |
|
|
414 | psiconv_bool_t show_top_sheet_toolbar; |
|
|
415 | psiconv_bool_t show_side_sheet_toolbar; |
|
|
416 | psiconv_bool_t show_top_graph_toolbar; |
|
|
417 | psiconv_bool_t show_side_graph_toolbar; |
|
|
418 | psiconv_u32 sheet_display_size; |
|
|
419 | psiconv_u32 graph_display_size; |
|
|
420 | psiconv_triple_t show_horizontal_scrollbar; |
|
|
421 | psiconv_triple_t show_vertical_scrollbar; |
|
|
422 | } *psiconv_sheet_status_section; |
|
|
423 | |
|
|
424 | typedef enum psiconv_formula_type |
|
|
425 | { |
|
|
426 | psiconv_formula_unknown, |
|
|
427 | psiconv_formula_op_lt, |
|
|
428 | psiconv_formula_op_le, |
|
|
429 | psiconv_formula_op_gt, |
|
|
430 | psiconv_formula_op_ge, |
|
|
431 | psiconv_formula_op_ne, |
|
|
432 | psiconv_formula_op_eq, |
|
|
433 | psiconv_formula_op_add, |
|
|
434 | psiconv_formula_op_sub, |
|
|
435 | psiconv_formula_op_mul, |
|
|
436 | psiconv_formula_op_div, |
|
|
437 | psiconv_formula_op_pow, |
|
|
438 | psiconv_formula_op_pos, |
|
|
439 | psiconv_formula_op_neg, |
|
|
440 | psiconv_formula_op_con, |
|
|
441 | psiconv_formula_op_bra, |
|
|
442 | psiconv_formula_mark_eof, |
|
|
443 | psiconv_formula_dat_float, |
|
|
444 | psiconv_formula_dat_int, |
|
|
445 | psiconv_formula_dat_var, |
|
|
446 | psiconv_formula_dat_string, |
|
|
447 | psiconv_formula_dat_cellref, |
|
|
448 | psiconv_formula_dat_cellblock, |
|
|
449 | psiconv_formula_dat_vcellblock, |
|
|
450 | psiconv_formula_mark_opsep, |
|
|
451 | psiconv_formula_mark_opend, |
|
|
452 | psiconv_formula_fun_false, |
|
|
453 | psiconv_formula_fun_if, |
|
|
454 | psiconv_formula_fun_true, |
|
|
455 | psiconv_formula_fun_cell, |
|
|
456 | psiconv_formula_fun_errortype, |
|
|
457 | psiconv_formula_fun_isblank, |
|
|
458 | psiconv_formula_fun_iserr, |
|
|
459 | psiconv_formula_fun_iserror, |
|
|
460 | psiconv_formula_fun_islogical, |
|
|
461 | psiconv_formula_fun_isna, |
|
|
462 | psiconv_formula_fun_isnontext, |
|
|
463 | psiconv_formula_fun_isnumber, |
|
|
464 | psiconv_formula_fun_istext, |
|
|
465 | psiconv_formula_fun_n, |
|
|
466 | psiconv_formula_fun_type, |
|
|
467 | psiconv_formula_fun_address, |
|
|
468 | psiconv_formula_fun_column, |
|
|
469 | psiconv_formula_fun_columns, |
|
|
470 | psiconv_formula_fun_hlookup, |
|
|
471 | psiconv_formula_fun_index, |
|
|
472 | psiconv_formula_fun_indirect, |
|
|
473 | psiconv_formula_fun_lookup, |
|
|
474 | psiconv_formula_fun_offset, |
|
|
475 | psiconv_formula_fun_row, |
|
|
476 | psiconv_formula_fun_rows, |
|
|
477 | psiconv_formula_fun_vlookup, |
|
|
478 | psiconv_formula_fun_char, |
|
|
479 | psiconv_formula_fun_code, |
|
|
480 | psiconv_formula_fun_exact, |
|
|
481 | psiconv_formula_fun_find, |
|
|
482 | psiconv_formula_fun_left, |
|
|
483 | psiconv_formula_fun_len, |
|
|
484 | psiconv_formula_fun_lower, |
|
|
485 | psiconv_formula_fun_mid, |
|
|
486 | psiconv_formula_fun_proper, |
|
|
487 | psiconv_formula_fun_replace, |
|
|
488 | psiconv_formula_fun_rept, |
|
|
489 | psiconv_formula_fun_right, |
|
|
490 | psiconv_formula_fun_string, |
|
|
491 | psiconv_formula_fun_t, |
|
|
492 | psiconv_formula_fun_trim, |
|
|
493 | psiconv_formula_fun_upper, |
|
|
494 | psiconv_formula_fun_value, |
|
|
495 | psiconv_formula_fun_date, |
|
|
496 | psiconv_formula_fun_datevalue, |
|
|
497 | psiconv_formula_fun_day, |
|
|
498 | psiconv_formula_fun_hour, |
|
|
499 | psiconv_formula_fun_minute, |
|
|
500 | psiconv_formula_fun_month, |
|
|
501 | psiconv_formula_fun_now, |
|
|
502 | psiconv_formula_fun_second, |
|
|
503 | psiconv_formula_fun_today, |
|
|
504 | psiconv_formula_fun_time, |
|
|
505 | psiconv_formula_fun_timevalue, |
|
|
506 | psiconv_formula_fun_year, |
|
|
507 | psiconv_formula_fun_abs, |
|
|
508 | psiconv_formula_fun_acos, |
|
|
509 | psiconv_formula_fun_asin, |
|
|
510 | psiconv_formula_fun_atan, |
|
|
511 | psiconv_formula_fun_atan2, |
|
|
512 | psiconv_formula_fun_cos, |
|
|
513 | psiconv_formula_fun_degrees, |
|
|
514 | psiconv_formula_fun_exp, |
|
|
515 | psiconv_formula_fun_fact, |
|
|
516 | psiconv_formula_fun_int, |
|
|
517 | psiconv_formula_fun_ln, |
|
|
518 | psiconv_formula_fun_log10, |
|
|
519 | psiconv_formula_fun_mod, |
|
|
520 | psiconv_formula_fun_pi, |
|
|
521 | psiconv_formula_fun_radians, |
|
|
522 | psiconv_formula_fun_rand, |
|
|
523 | psiconv_formula_fun_round, |
|
|
524 | psiconv_formula_fun_sign, |
|
|
525 | psiconv_formula_fun_sin, |
|
|
526 | psiconv_formula_fun_sqrt, |
|
|
527 | psiconv_formula_fun_sumproduct, |
|
|
528 | psiconv_formula_fun_tan, |
|
|
529 | psiconv_formula_fun_trunc, |
|
|
530 | psiconv_formula_fun_cterm, |
|
|
531 | psiconv_formula_fun_ddb, |
|
|
532 | psiconv_formula_fun_fv, |
|
|
533 | psiconv_formula_fun_irr, |
|
|
534 | psiconv_formula_fun_npv, |
|
|
535 | psiconv_formula_fun_pmt, |
|
|
536 | psiconv_formula_fun_pv, |
|
|
537 | psiconv_formula_fun_rate, |
|
|
538 | psiconv_formula_fun_sln, |
|
|
539 | psiconv_formula_fun_syd, |
|
|
540 | psiconv_formula_fun_term, |
|
|
541 | psiconv_formula_fun_combin, |
|
|
542 | psiconv_formula_fun_permut, |
|
|
543 | psiconv_formula_vfn_average, |
|
|
544 | psiconv_formula_vfn_choose, |
|
|
545 | psiconv_formula_vfn_count, |
|
|
546 | psiconv_formula_vfn_counta, |
|
|
547 | psiconv_formula_vfn_countblank, |
|
|
548 | psiconv_formula_vfn_max, |
|
|
549 | psiconv_formula_vfn_min, |
|
|
550 | psiconv_formula_vfn_product, |
|
|
551 | psiconv_formula_vfn_stdevp, |
|
|
552 | psiconv_formula_vfn_stdev, |
|
|
553 | psiconv_formula_vfn_sum, |
|
|
554 | psiconv_formula_vfn_sumsq, |
|
|
555 | psiconv_formula_vfn_varp, |
|
|
556 | psiconv_formula_vfn_var |
|
|
557 | } psiconv_formula_type_t; |
|
|
558 | |
|
|
559 | typedef psiconv_list psiconv_formula_list; /* Of struct psiconv_formula_s */ |
|
|
560 | |
|
|
561 | typedef struct psiconv_formula_s |
|
|
562 | { |
|
|
563 | psiconv_formula_type_t type; |
|
|
564 | union { |
|
|
565 | psiconv_u32 dat_int; |
|
|
566 | double dat_float; |
|
|
567 | char *dat_string; |
|
|
568 | psiconv_formula_list fun_operands; |
|
|
569 | } data; |
|
|
570 | } *psiconv_formula; |
|
|
571 | |
|
|
572 | typedef struct psiconv_sheet_workbook_section_s |
|
|
573 | { |
|
|
574 | psiconv_formula_list formulas; |
|
|
575 | } *psiconv_sheet_workbook_section; |
|
|
576 | |
|
|
577 | typedef struct psiconv_sheet_f_s |
|
|
578 | { |
|
|
579 | psiconv_page_layout_section page_sec; |
|
|
580 | psiconv_sheet_status_section status_sec; |
|
|
581 | psiconv_sheet_workbook_section workbook_sec; |
|
|
582 | } *psiconv_sheet_f; |
|
|
583 | |
337 | typedef struct psiconv_file { |
584 | typedef struct psiconv_file_s |
|
|
585 | { |
338 | psiconv_file_type_t type; |
586 | psiconv_file_type_t type; |
339 | void *file; |
587 | void *file; |
340 | } *psiconv_file; |
588 | } *psiconv_file; |
341 | |
589 | |
342 | |
590 | |
343 | /* UID1 */ |
591 | /* UID1 */ |
344 | #define PSICONV_ID_PSION5 0x10000037 |
592 | #define PSICONV_ID_PSION5 0x10000037 |
|
|
593 | #define PSICONV_ID_CLIPART 0x10000041 |
345 | /* UID2 */ |
594 | /* UID2 */ |
346 | #define PSICONV_ID_DATA_FILE 0x1000006D |
595 | #define PSICONV_ID_DATA_FILE 0x1000006D |
347 | #define PSICONV_ID_MBM_FILE 0x10000042 |
596 | #define PSICONV_ID_MBM_FILE 0x10000042 |
348 | /* UID3 */ |
597 | /* UID3 */ |
349 | #define PSICONV_ID_WORD 0x1000007F |
598 | #define PSICONV_ID_WORD 0x1000007F |
350 | #define PSICONV_ID_TEXTED 0x10000085 |
599 | #define PSICONV_ID_TEXTED 0x10000085 |
|
|
600 | #define PSICONV_ID_SKETCH 0x1000007D |
|
|
601 | #define PSICONV_ID_SHEET 0x10000088 |
351 | |
602 | |
352 | /* Section table ids */ |
603 | /* Section table ids */ |
353 | #define PSICONV_ID_WORD_STATUS_SECTION 0x10000243 |
604 | #define PSICONV_ID_WORD_STATUS_SECTION 0x10000243 |
354 | #define PSICONV_ID_APPL_ID_SECTION 0x10000089 |
605 | #define PSICONV_ID_APPL_ID_SECTION 0x10000089 |
355 | #define PSICONV_ID_TEXT_SECTION 0x10000106 |
606 | #define PSICONV_ID_TEXT_SECTION 0x10000106 |
356 | #define PSICONV_ID_LAYOUT_SECTION 0x10000143 |
607 | #define PSICONV_ID_LAYOUT_SECTION 0x10000143 |
357 | #define PSICONV_ID_WORD_STYLES_SECTION 0x10000104 |
608 | #define PSICONV_ID_WORD_STYLES_SECTION 0x10000104 |
358 | #define PSICONV_ID_PAGE_LAYOUT_SECTION 0x10000105 |
609 | #define PSICONV_ID_PAGE_LAYOUT_SECTION 0x10000105 |
359 | #define PSICONV_ID_PASSWORD_SECTION 0x100000CD |
610 | #define PSICONV_ID_PASSWORD_SECTION 0x100000CD |
|
|
611 | #define PSICONV_ID_SKETCH_SECTION 0x1000007D |
|
|
612 | #define PSICONV_ID_SHEET_STATUS_SECTION 0x1000011F |
|
|
613 | #define PSICONV_ID_SHEET_WORKBOOK_SECTION 0x1000011D |
360 | |
614 | |
361 | /* Other ids */ |
615 | /* Other ids */ |
362 | #define PSICONV_ID_PAGE_DIMENSIONS 0x100000fd |
616 | #define PSICONV_ID_PAGE_DIMENSIONS1 0x100000fd |
|
|
617 | #define PSICONV_ID_PAGE_DIMENSIONS2 0x1000010e |
363 | #define PSICONV_ID_TEXTED_BODY 0x1000005c |
618 | #define PSICONV_ID_TEXTED_BODY 0x1000005c |
364 | #define PSICONV_ID_TEXTED_REPLACEMENT 0x10000063 |
619 | #define PSICONV_ID_TEXTED_REPLACEMENT 0x10000063 |
365 | #define PSICONV_ID_TEXTED_UNKNOWN 0x10000065 |
620 | #define PSICONV_ID_TEXTED_UNKNOWN 0x10000065 |
366 | #define PSICONV_ID_TEXTED_LAYOUT 0x10000066 |
621 | #define PSICONV_ID_TEXTED_LAYOUT 0x10000066 |
367 | #define PSICONV_ID_TEXTED_TEXT 0x10000064 |
622 | #define PSICONV_ID_TEXTED_TEXT 0x10000064 |
368 | #define PSICONV_ID_STYLE_REMOVABLE 0x1000004F |
623 | #define PSICONV_ID_STYLE_REMOVABLE 0x1000004F |
369 | #define PSICONV_ID_STYLE_BUILT_IN 0x1000004C |
624 | #define PSICONV_ID_STYLE_BUILT_IN 0x1000004C |
|
|
625 | #define PSICONV_ID_CLIPART_ITEM 0x10000040 |
370 | |
626 | |
371 | |
627 | |
372 | /* Return a clean layout_status. You can modify it at will */ |
628 | /* Return a clean layout_status. You can modify it at will. Returns NULL |
|
|
629 | if there is not enough memory. */ |
373 | extern psiconv_character_layout psiconv_basic_character_layout(void); |
630 | extern psiconv_character_layout psiconv_basic_character_layout(void); |
374 | |
631 | |
375 | /* Return a clean layout_status. You can modify it at will */ |
632 | /* Return a clean layout_status. You can modify it at will. Returns NULL |
|
|
633 | if there is not enough memory. */ |
376 | extern psiconv_paragraph_layout psiconv_basic_paragraph_layout(void); |
634 | extern psiconv_paragraph_layout psiconv_basic_paragraph_layout(void); |
377 | |
635 | |
378 | /* Clone a layout_status: the new copy is completely independent of the |
636 | /* Clone a layout_status: the new copy is completely independent of the |
379 | original one */ |
637 | original one. Returns NULL if there is not enough memory. */ |
380 | extern psiconv_paragraph_layout psiconv_clone_paragraph_layout |
638 | extern psiconv_paragraph_layout psiconv_clone_paragraph_layout |
381 | (psiconv_paragraph_layout ls); |
639 | (psiconv_paragraph_layout ls); |
382 | |
640 | |
383 | extern psiconv_character_layout psiconv_clone_character_layout |
641 | extern psiconv_character_layout psiconv_clone_character_layout |
384 | (psiconv_character_layout ls); |
642 | (psiconv_character_layout ls); |
385 | |
643 | |
386 | /* Get a numbered style */ |
644 | /* Get a numbered style. Returns NULL if the style is unknown. */ |
387 | extern psiconv_word_style psiconv_get_style (psiconv_word_styles_section ss, int nr); |
645 | extern psiconv_word_style psiconv_get_style (psiconv_word_styles_section ss, int nr); |
388 | |
646 | |
389 | extern void psiconv_free_color(psiconv_color color); |
647 | extern void psiconv_free_color(psiconv_color color); |
390 | extern void psiconv_free_border(psiconv_border border); |
648 | extern void psiconv_free_border(psiconv_border border); |
391 | extern void psiconv_free_bullet(psiconv_bullet bullet); |
649 | extern void psiconv_free_bullet(psiconv_bullet bullet); |
… | |
… | |
395 | extern void psiconv_free_paragraph_layout(psiconv_paragraph_layout layout); |
653 | extern void psiconv_free_paragraph_layout(psiconv_paragraph_layout layout); |
396 | extern void psiconv_free_character_layout(psiconv_character_layout layout); |
654 | extern void psiconv_free_character_layout(psiconv_character_layout layout); |
397 | extern void psiconv_free_word_style(psiconv_word_style style); |
655 | extern void psiconv_free_word_style(psiconv_word_style style); |
398 | extern void psiconv_free_word_styles_section |
656 | extern void psiconv_free_word_styles_section |
399 | (psiconv_word_styles_section styles); |
657 | (psiconv_word_styles_section styles); |
|
|
658 | extern void psiconv_free_formula(psiconv_formula formula); |
|
|
659 | extern void psiconv_free_formula_list(psiconv_formula_list list); |
|
|
660 | extern void psiconv_free_sheet_status_section |
|
|
661 | (psiconv_sheet_status_section section); |
|
|
662 | extern void psiconv_free_sheet_f(psiconv_sheet_f file); |
400 | extern void psiconv_free_header_section(psiconv_header_section header); |
663 | extern void psiconv_free_header_section(psiconv_header_section header); |
401 | extern void psiconv_free_section_table_entry(psiconv_section_table_entry entry); |
664 | extern void psiconv_free_section_table_entry(psiconv_section_table_entry entry); |
402 | extern void psiconv_free_section_table_section |
665 | extern void psiconv_free_section_table_section |
403 | (psiconv_section_table_section section); |
666 | (psiconv_section_table_section section); |
404 | extern void psiconv_free_application_id_section |
667 | extern void psiconv_free_application_id_section |
… | |
… | |
417 | (psiconv_word_status_section section); |
680 | (psiconv_word_status_section section); |
418 | extern void psiconv_free_word_f(psiconv_word_f file); |
681 | extern void psiconv_free_word_f(psiconv_word_f file); |
419 | extern void psiconv_free_texted_f(psiconv_texted_f file); |
682 | extern void psiconv_free_texted_f(psiconv_texted_f file); |
420 | extern void psiconv_free_paint_data_section(psiconv_paint_data_section section); |
683 | extern void psiconv_free_paint_data_section(psiconv_paint_data_section section); |
421 | extern void psiconv_free_pictures(psiconv_pictures section); |
684 | extern void psiconv_free_pictures(psiconv_pictures section); |
422 | extern void psiconv_free_mbm_jumptable_section |
685 | extern void psiconv_free_jumptable_section |
423 | (psiconv_mbm_jumptable_section section); |
686 | (psiconv_jumptable_section section); |
424 | extern void psiconv_free_mbm_f(psiconv_mbm_f file); |
687 | extern void psiconv_free_mbm_f(psiconv_mbm_f file); |
|
|
688 | extern void psiconv_free_sketch_section(psiconv_sketch_section sec); |
|
|
689 | extern void psiconv_free_sketch_f(psiconv_sketch_f file); |
|
|
690 | extern void psiconv_free_clipart_section(psiconv_clipart_section section); |
|
|
691 | extern void psiconv_free_cliparts(psiconv_cliparts section); |
|
|
692 | extern void psiconv_free_clipart_f(psiconv_clipart_f file); |
|
|
693 | |
425 | extern void psiconv_free_file(psiconv_file file); |
694 | extern void psiconv_free_file(psiconv_file file); |
426 | |
695 | |
|
|
696 | extern int psiconv_compare_color(const psiconv_color value1, |
|
|
697 | const psiconv_color value2); |
|
|
698 | extern int psiconv_compare_font(const psiconv_font value1, |
|
|
699 | const psiconv_font value2); |
|
|
700 | extern int psiconv_compare_border(const psiconv_border value1, |
|
|
701 | const psiconv_border value2); |
|
|
702 | extern int psiconv_compare_bullet(const psiconv_bullet value1, |
|
|
703 | const psiconv_bullet value2); |
|
|
704 | extern int psiconv_compare_tab(const psiconv_tab value1, |
|
|
705 | const psiconv_tab value2); |
|
|
706 | extern int psiconv_compare_all_tabs(const psiconv_all_tabs value1, |
|
|
707 | const psiconv_all_tabs value2); |
|
|
708 | extern int psiconv_compare_paragraph_layout |
|
|
709 | (const psiconv_paragraph_layout value1, |
|
|
710 | const psiconv_paragraph_layout value2); |
|
|
711 | |
|
|
712 | extern int psiconv_compare_character_layout |
|
|
713 | (const psiconv_character_layout value1, |
|
|
714 | const psiconv_character_layout value2); |
|
|
715 | |
|
|
716 | /* Get a newly allocated file with sensible defaults, ready to generate. */ |
|
|
717 | extern psiconv_file psiconv_empty_file(psiconv_file_type_t type); |
|
|
718 | |
|
|
719 | |
|
|
720 | #ifdef __cplusplus |
|
|
721 | } |
|
|
722 | #endif /* __cplusplus */ |
427 | |
723 | |
428 | #endif /* def PSICONV_DATA_H */ |
724 | #endif /* def PSICONV_DATA_H */ |