1 |
/* |
2 |
data.h - Part of psiconv, a PSION 5 file formats converter |
3 |
Copyright (c) 1999-2004 Frodo Looijaard <frodol@dds.nl> |
4 |
|
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 Psion files. Variables of these types are written by the |
22 |
parse routines, and read by the generation routines. |
23 |
|
24 |
Mostly, the data structures reflect the file format documentation, |
25 |
as included in the formats directory. When in doubt, refer there. */ |
26 |
|
27 |
#ifndef PSICONV_DATA_H |
28 |
#define PSICONV_DATA_H |
29 |
|
30 |
#include <psiconv/general.h> |
31 |
#include <psiconv/list.h> |
32 |
|
33 |
/* All types which end on _t are plain types; all other types are pointers |
34 |
to structs. */ |
35 |
|
36 |
#ifdef __cplusplus |
37 |
extern "C" { |
38 |
#endif /* __cplusplus */ |
39 |
|
40 |
/* Forward declaration (for psiconv_embedded_object_section) */ |
41 |
typedef struct psiconv_file_s *psiconv_file; |
42 |
|
43 |
|
44 |
/* Enums and simple types */ |
45 |
|
46 |
|
47 |
/* Floating point number representation */ |
48 |
typedef double psiconv_float_t; |
49 |
|
50 |
/* The supported file types. */ |
51 |
typedef enum psiconv_file_type { |
52 |
psiconv_unknown_file, |
53 |
psiconv_word_file, |
54 |
psiconv_texted_file, |
55 |
psiconv_mbm_file, |
56 |
psiconv_sketch_file, |
57 |
psiconv_clipart_file, |
58 |
psiconv_sheet_file |
59 |
} psiconv_file_type_t; |
60 |
|
61 |
/* String representation. A string is an array of UCS2 characters, terminated |
62 |
by a 0. So they are just like normal C strings, except that they are built |
63 |
of psiconv_ucs2 elements instead of char elements. |
64 |
The psiconv_ucs2 type holds 16 bits; see unicode.h for more information. */ |
65 |
typedef psiconv_ucs2 *psiconv_string_t; |
66 |
|
67 |
/* Represent lengths (in centimeters) and sizes (in points). |
68 |
In the Psion file, these are identical; but we translate them to more |
69 |
human-readable quantities */ |
70 |
typedef float psiconv_length_t; /* For offsets in centimeters */ |
71 |
typedef float psiconv_size_t; /* For sizes in points */ |
72 |
|
73 |
/* Represent booleans. As false is zero in the enum, you can still do things |
74 |
like { if (test) ... } instead of { if (test == psiconv_bool_true) ... }. |
75 |
Choose whatever style suits you best. */ |
76 |
typedef enum psiconv_bool |
77 |
{ |
78 |
psiconv_bool_false, |
79 |
psiconv_bool_true |
80 |
} psiconv_bool_t; |
81 |
|
82 |
/* Some kind of three-valued boolean, used at several places. */ |
83 |
typedef enum psiconv_triple |
84 |
{ |
85 |
psiconv_triple_on, |
86 |
psiconv_triple_off, |
87 |
psiconv_triple_auto |
88 |
} psiconv_triple_t; |
89 |
|
90 |
/* Text can be in superscript or subscript or neither, but never both |
91 |
superscript and subscript at once. Also, super-superscript and things |
92 |
like that do not exist in the Psion world. */ |
93 |
typedef enum psiconv_super_sub |
94 |
{ psiconv_normalscript, |
95 |
psiconv_superscript, |
96 |
psiconv_subscript |
97 |
} psiconv_super_sub_t; |
98 |
|
99 |
/* Horizontal justification. */ |
100 |
typedef enum psiconv_justify_hor |
101 |
{ psiconv_justify_left, |
102 |
psiconv_justify_centre, |
103 |
psiconv_justify_right, |
104 |
psiconv_justify_full |
105 |
} psiconv_justify_hor_t; |
106 |
|
107 |
/* Vertical justification. */ |
108 |
typedef enum psiconv_justify_ver |
109 |
{ psiconv_justify_top, |
110 |
psiconv_justify_middle, |
111 |
psiconv_justify_bottom |
112 |
} psiconv_justify_ver_t; |
113 |
|
114 |
/* Borders around text fields. */ |
115 |
typedef enum psiconv_border_kind |
116 |
{ psiconv_border_none, /* No border */ |
117 |
psiconv_border_solid, /* Single line */ |
118 |
psiconv_border_double, /* Double line */ |
119 |
psiconv_border_dotted, /* Dotted line: . . . . . */ |
120 |
psiconv_border_dashed, /* Dashed line: _ _ _ _ _ */ |
121 |
psiconv_border_dotdashed, /* Dotted/dashed line: _ . _ . _ */ |
122 |
psiconv_border_dotdotdashed /* Dotted/dashed line: . . _ . . _ */ |
123 |
} psiconv_border_kind_t; |
124 |
|
125 |
/* Though each printer driver has its own fonts for printing, they are |
126 |
represented on the Psion screen by a few built-in fonts. */ |
127 |
typedef enum psiconv_screenfont |
128 |
{ |
129 |
psiconv_font_misc, /* Nonproportional symbols, like Wingbat? */ |
130 |
psiconv_font_sansserif, /* Proportional sans-serif, like Arial */ |
131 |
psiconv_font_nonprop, /* Nonproportional, like Courier */ |
132 |
psiconv_font_serif /* Proportional serifed, like Times */ |
133 |
} psiconv_screenfont_t; |
134 |
|
135 |
|
136 |
/* The kind of tab. Note that decimal tabs are not supported by the Psion. */ |
137 |
typedef enum psiconv_tab_kind |
138 |
{ |
139 |
psiconv_tab_left, /* Left tab */ |
140 |
psiconv_tab_centre, /* Centre tab */ |
141 |
psiconv_tab_right /* Right tab */ |
142 |
} psiconv_tab_kind_t; |
143 |
|
144 |
/* When text has to be replaced, the kind of replacement to do |
145 |
(not yet implemented!) */ |
146 |
typedef enum psiconv_replacement_type |
147 |
{ |
148 |
psiconv_replace_time, |
149 |
psiconv_replace_date, |
150 |
psiconv_replace_pagenr, |
151 |
psiconv_replace_nr_of_pages, |
152 |
psiconv_replace_filename |
153 |
} psiconv_replacement_type_t; |
154 |
|
155 |
|
156 |
/* Here starts the struct definitions */ |
157 |
|
158 |
/* The color of a single pixel, in RGB format. |
159 |
Black: 0x00 0x00 0x00 |
160 |
White: 0xff 0xff 0xff */ |
161 |
typedef struct psiconv_color_s |
162 |
{ |
163 |
psiconv_u8 red; |
164 |
psiconv_u8 green; |
165 |
psiconv_u8 blue; |
166 |
} * psiconv_color; |
167 |
|
168 |
|
169 |
/* Complete font information: both a printer font and a corresponding screen |
170 |
font to display it. */ |
171 |
typedef struct psiconv_font_s |
172 |
{ |
173 |
psiconv_string_t name; /* Printer font */ |
174 |
psiconv_screenfont_t screenfont; /* Screen font */ |
175 |
} *psiconv_font; |
176 |
|
177 |
/* Complete border information */ |
178 |
typedef struct psiconv_border_s |
179 |
{ |
180 |
psiconv_border_kind_t kind; /* Border kind */ |
181 |
psiconv_size_t thickness; /* Set to 1/20 for non-solid lines */ |
182 |
psiconv_color color; /* Border color */ |
183 |
} *psiconv_border; |
184 |
|
185 |
/* Complete bullet information. |
186 |
If indent if off, the bullet is at the first line indentation level, |
187 |
and the line text begins right after it. If it is on, the bullet is at |
188 |
the minimum of the first line and left indentation, and the text starts |
189 |
at the maximum of both. */ |
190 |
typedef struct psiconv_bullet_s |
191 |
{ |
192 |
psiconv_bool_t on; /* Whether the bullet is shown */ |
193 |
psiconv_size_t font_size; /* Bullet font size */ |
194 |
psiconv_ucs2 character; /* Bullet character */ |
195 |
psiconv_bool_t indent; /* Whether to indent (see above */ |
196 |
psiconv_color color; /* Bullet color */ |
197 |
psiconv_font font; /* Bullet font */ |
198 |
} *psiconv_bullet; |
199 |
|
200 |
/* Complete single tab information */ |
201 |
typedef struct psiconv_tab_s |
202 |
{ |
203 |
psiconv_length_t location; /* The indentation level */ |
204 |
psiconv_tab_kind_t kind; /* Tab kind */ |
205 |
} *psiconv_tab; |
206 |
|
207 |
/* A list of tabs */ |
208 |
typedef psiconv_list psiconv_tab_list; /* of struct psiconv_tab_s */ |
209 |
|
210 |
/* Information about all tabs. |
211 |
Normal tabs start after the rightmost extra tab */ |
212 |
typedef struct psiconv_all_tabs_s |
213 |
{ |
214 |
psiconv_length_t normal; /* Normal tab distance */ |
215 |
psiconv_tab_list extras; /* Additional defined tabs */ |
216 |
} *psiconv_all_tabs; |
217 |
|
218 |
/* Character layout. |
219 |
This structure holds all layout information that can be applied on the |
220 |
character level (as opposed to layouts that only apply to whole |
221 |
paragraphs). |
222 |
Note that at all times, this structure holds the complete layout |
223 |
information; we do not use incremental layouts, unlike the Psion |
224 |
file format itself. So if an italic text is also underlined, the |
225 |
character_layout will have both set for that region. */ |
226 |
typedef struct psiconv_character_layout_s |
227 |
{ |
228 |
psiconv_color color; /* Character color */ |
229 |
psiconv_color back_color; /* Background color */ |
230 |
psiconv_size_t font_size; /* Font size */ |
231 |
psiconv_bool_t italic; /* Use italics? */ |
232 |
psiconv_bool_t bold; /* Use bold? */ |
233 |
psiconv_super_sub_t super_sub; /* Use super/subscript? */ |
234 |
psiconv_bool_t underline; /* Underline? */ |
235 |
psiconv_bool_t strikethrough; /* Strike through? */ |
236 |
psiconv_font font; /* Character font */ |
237 |
} *psiconv_character_layout; |
238 |
|
239 |
/* Paragraph layout. |
240 |
This structure holds all layout information that can be applied on the |
241 |
paragraph level (as opposed to layouts that also apply to single |
242 |
characters). |
243 |
Note that at all times, this structure holds the complete layout |
244 |
information; we do not use incremental layouts, unlike the Psion |
245 |
file format itself. |
246 |
Linespacing is the amount of vertical space between lines. If |
247 |
linespacing_exact is set, this amount is used even if that would make |
248 |
text overlap; if it is not set, a greater distance is used if text would |
249 |
otherwise overlap. |
250 |
Several booleans determine where page breaks may be set. keep_together |
251 |
forbids page breaks in the middle of the paragraph; keep_with_next |
252 |
forbids page breaks between this and the next paragraph. on_next_page |
253 |
forces a pagebreak before the paragraph. no_widow_protection allows |
254 |
one single line of the paragraph on a page, and the rest on another page. |
255 |
Sheet cell text normally does not wrap; wrap_to_fit_cell allows this. */ |
256 |
typedef struct psiconv_paragraph_layout_s |
257 |
{ |
258 |
psiconv_color back_color; /* Background color */ |
259 |
psiconv_length_t indent_left; /* Left indentation (except first line) */ |
260 |
psiconv_length_t indent_right; /* Right indentation */ |
261 |
psiconv_length_t indent_first; /* First line left indentation */ |
262 |
psiconv_justify_hor_t justify_hor; /* Horizontal justification */ |
263 |
psiconv_justify_ver_t justify_ver; /* Vertical justification */ |
264 |
psiconv_size_t linespacing; /* The linespacing */ |
265 |
psiconv_bool_t linespacing_exact; /* Is linespacing exact or the minimum? */ |
266 |
psiconv_size_t space_above; /* Vertical space before the paragraph */ |
267 |
psiconv_size_t space_below; /* Vertical space after the paragraph */ |
268 |
psiconv_bool_t keep_together; /* Keep lines on one page? */ |
269 |
psiconv_bool_t keep_with_next; /* Disallow pagebreak after paragraph? */ |
270 |
psiconv_bool_t on_next_page; /* Force page break before paragraph? */ |
271 |
psiconv_bool_t no_widow_protection; /* Undo widow protection? */ |
272 |
psiconv_bool_t wrap_to_fit_cell; /* Wrap sheet cell text? */ |
273 |
psiconv_length_t border_distance; /* Distance to borders */ |
274 |
psiconv_bullet bullet; /* Bullet information */ |
275 |
psiconv_border left_border; /* Left border information */ |
276 |
psiconv_border right_border; /* Right border information */ |
277 |
psiconv_border top_border; /* Top border information */ |
278 |
psiconv_border bottom_border; /* Bottom border information */ |
279 |
psiconv_all_tabs tabs; /* All tab information */ |
280 |
} *psiconv_paragraph_layout; |
281 |
|
282 |
/* A Header Section. |
283 |
It contains the three UIDs and the checksum, and the type of file. |
284 |
As the type of file uniquely defines the UIDs, and as the UIDs determine |
285 |
the checksum, this is never included in a regular psiconv_file structure. |
286 |
It can be used to read the header section separately, though. */ |
287 |
typedef struct psiconv_header_section_s |
288 |
{ |
289 |
psiconv_u32 uid1; |
290 |
psiconv_u32 uid2; |
291 |
psiconv_u32 uid3; |
292 |
psiconv_u32 checksum; |
293 |
psiconv_file_type_t file; |
294 |
} *psiconv_header_section; |
295 |
|
296 |
/* A Section Table Section entry. |
297 |
Each entry has a UID and an offset. |
298 |
This is never included in a regular psiconv_file structure, as the |
299 |
information is too low-level. It is used internally, though. */ |
300 |
typedef struct psiconv_section_table_entry_s |
301 |
{ |
302 |
psiconv_u32 id; /* Section UID */ |
303 |
psiconv_u32 offset; /* Section offset within the file */ |
304 |
} *psiconv_section_table_entry; |
305 |
|
306 |
/* A Section Table Section. |
307 |
A list of sections and their offsets. |
308 |
It is simply a list of Section Table Section Entries. |
309 |
This is never included in a regular psiconv_file structure, as the |
310 |
information is too low-level. It is used internally, though. */ |
311 |
typedef psiconv_list psiconv_section_table_section; |
312 |
/* Of struct psiconv_sectiontable_entry_s */ |
313 |
|
314 |
/* An Application ID Section. |
315 |
The type of file. |
316 |
Never included in a regular psiconv_file structure, because it is too |
317 |
low-level. You can always recover it if you know the file type. Used |
318 |
internally. |
319 |
The name should probably be case-insensitive. */ |
320 |
typedef struct psiconv_application_id_section_s |
321 |
{ |
322 |
psiconv_u32 id; /* File type UID */ |
323 |
psiconv_string_t name; /* File type name */ |
324 |
} *psiconv_application_id_section; |
325 |
|
326 |
/* An Object Icon Section. |
327 |
The icon used for an embedded object. */ |
328 |
typedef struct psiconv_object_icon_section_s |
329 |
{ |
330 |
psiconv_length_t icon_width; /* Icon width */ |
331 |
psiconv_length_t icon_height; /* Icon height */ |
332 |
psiconv_string_t icon_name; /* Icon name */ |
333 |
} *psiconv_object_icon_section; |
334 |
|
335 |
/* An Object Display Section. |
336 |
How an embedded icon should be displayed. |
337 |
The sizes are computed after cropping or resizing; if the object is shown |
338 |
as an icon, the icon sizes are used here. */ |
339 |
typedef struct psiconv_object_display_section_s |
340 |
{ |
341 |
psiconv_bool_t show_icon; /* Show an icon or the whole file? */ |
342 |
psiconv_length_t width; /* Object display width */ |
343 |
psiconv_length_t height; /* Object display height */ |
344 |
} *psiconv_object_display_section; |
345 |
|
346 |
/* An Embedded Object Section. |
347 |
All data about an embedded object. |
348 |
An object is another psiconv_file, which is embedded in the current |
349 |
file. Objects can also be embedded in each other, of course. */ |
350 |
typedef struct psiconv_embedded_object_section_s |
351 |
{ |
352 |
psiconv_object_icon_section icon; /* Icon information */ |
353 |
psiconv_object_display_section display; /* Display information */ |
354 |
psiconv_file object; /* The object itself */ |
355 |
} *psiconv_embedded_object_section; |
356 |
|
357 |
/* Inline character-level layout information. |
358 |
Information how some characters should be laid out. |
359 |
Note that, though you can choose specific layouts for an object, this |
360 |
will probably not affect the object's rendering. |
361 |
Usually, object will be NULL, and the object_width and object_height |
362 |
will be ignored. |
363 |
The object sizes are the same as in the Object Display Section, so |
364 |
this information seems to be redundant. */ |
365 |
typedef struct psiconv_in_line_layout_s |
366 |
{ |
367 |
psiconv_character_layout layout; /* Layout information */ |
368 |
int length; /* Number of characters */ |
369 |
psiconv_embedded_object_section object; /* Embedded object or NULL */ |
370 |
psiconv_length_t object_width; /* Object display width */ |
371 |
psiconv_length_t object_height; /* Object display height */ |
372 |
} *psiconv_in_line_layout; |
373 |
|
374 |
/* Inline character information for a whole line. |
375 |
A list of inline character information */ |
376 |
typedef psiconv_list psiconv_in_line_layouts; |
377 |
/* of struct psiconv_in_line_layout_s */ |
378 |
|
379 |
/* What to replace where in text. Not yet implemented! |
380 |
(not yet implemented!) */ |
381 |
typedef struct psiconv_replacement_s |
382 |
{ |
383 |
int offset; /* Offset in text */ |
384 |
int cur_len; /* Length of text to replace */ |
385 |
psiconv_replacement_type_t type; /* Kind of replacement */ |
386 |
} *psiconv_replacement; |
387 |
|
388 |
/* A list of replacements */ |
389 |
typedef psiconv_list psiconv_replacements; /* of struct psiconv_replacement_s */ |
390 |
|
391 |
/* A paragraph of text. |
392 |
Layout and actual paragraph text are combined here, even though |
393 |
they are seperated in the Psion file format. |
394 |
The base style is referred to, but the base_character and |
395 |
base_paragraph have all style settings already incorporated. |
396 |
The base style can be found using the psiconv_get_style function. |
397 |
The in_lines are either an empty list, or they should apply to exactly |
398 |
the number of characters in this paragraph */ |
399 |
typedef struct psiconv_paragraph_s |
400 |
{ |
401 |
psiconv_string_t text; /* Paragraph text */ |
402 |
psiconv_character_layout base_character; /* Base character layout */ |
403 |
psiconv_paragraph_layout base_paragraph; /* Base paragraph layout */ |
404 |
psiconv_s16 base_style; /* Paragraph style */ |
405 |
psiconv_in_line_layouts in_lines; /* In-paragraph layout */ |
406 |
psiconv_replacements replacements; /* Replacements like the date */ |
407 |
} *psiconv_paragraph; |
408 |
|
409 |
/* A collection of text paragraphs */ |
410 |
typedef psiconv_list psiconv_text_and_layout; |
411 |
/* Of struct psiconv_paragraph_s */ |
412 |
|
413 |
/* A TextEd Section. |
414 |
Text and simple layout, without styles. */ |
415 |
typedef struct psiconv_texted_section_s |
416 |
{ |
417 |
psiconv_text_and_layout paragraphs; |
418 |
} *psiconv_texted_section; |
419 |
|
420 |
/* A Page Header. |
421 |
All information about a page header or footer. |
422 |
An explicit base paragraph and character layout is found; this is used |
423 |
as a sort of base style, on which all further formatting is based */ |
424 |
typedef struct psiconv_page_header_s |
425 |
{ |
426 |
psiconv_bool_t on_first_page; /* Display on first page? */ |
427 |
psiconv_paragraph_layout base_paragraph_layout; /* Base paragraph layout */ |
428 |
psiconv_character_layout base_character_layout; /* Base character layout */ |
429 |
psiconv_texted_section text; /* The actual text */ |
430 |
} *psiconv_page_header; |
431 |
|
432 |
/* A Page Layout Section |
433 |
All information about the layout of a page. |
434 |
Margins, page size, the header, the footer and page numbers */ |
435 |
typedef struct psiconv_page_layout_section_s |
436 |
{ |
437 |
psiconv_u32 first_page_nr; /* Page numbers start counting here */ |
438 |
psiconv_length_t header_dist; /* Distance of header to text */ |
439 |
psiconv_length_t footer_dist; /* Distance of footer to text */ |
440 |
psiconv_length_t left_margin; /* Left margin */ |
441 |
psiconv_length_t right_margin; /* Right margin */ |
442 |
psiconv_length_t top_margin; /* Top margin */ |
443 |
psiconv_length_t bottom_margin; /* Bottom margin */ |
444 |
psiconv_length_t page_width; /* Page width */ |
445 |
psiconv_length_t page_height; /* Page height */ |
446 |
psiconv_page_header header; /* Header information */ |
447 |
psiconv_page_header footer; /* Footer information */ |
448 |
psiconv_bool_t landscape; /* Landscape orientation? */ |
449 |
} * psiconv_page_layout_section; |
450 |
|
451 |
/* A Word Status Section |
452 |
Settings of the Word program. |
453 |
Several whitespace and related characters can be explicitely shown. |
454 |
Embedded pictures and graphs can be iconized or displayed full. |
455 |
Toolbars can be shown or hidden. |
456 |
Long lines can be wrapped, or you have to use scrolling. |
457 |
The cursor position is the character number of the text. |
458 |
Zoom level: 1000 is "normal" */ |
459 |
typedef struct psiconv_word_status_section_s |
460 |
{ |
461 |
psiconv_bool_t show_tabs; /* Show tabs? */ |
462 |
psiconv_bool_t show_spaces; /* Show spaces? */ |
463 |
psiconv_bool_t show_paragraph_ends; /* Show paragraph ends? */ |
464 |
psiconv_bool_t show_line_breaks; /* Show line breaks */ |
465 |
psiconv_bool_t show_hard_minus; /* Show hard dashes? */ |
466 |
psiconv_bool_t show_hard_space; /* Show hard spaces? */ |
467 |
psiconv_bool_t show_full_pictures; /* Show embedded pictures (or iconize)? */ |
468 |
psiconv_bool_t show_full_graphs; /* Show embedded graphs (or iconize)? */ |
469 |
psiconv_bool_t show_top_toolbar; /* Show top toolbar? */ |
470 |
psiconv_bool_t show_side_toolbar; /* Show side toolbar? */ |
471 |
psiconv_bool_t fit_lines_to_screen; /* Wrap lines? */ |
472 |
psiconv_u32 cursor_position; /* Cursor position (character number) */ |
473 |
psiconv_u32 display_size; /* Zooming level */ |
474 |
} *psiconv_word_status_section; |
475 |
|
476 |
/* A Word Style. |
477 |
All information about a single Style. |
478 |
A builtin style may not be changed in the Word program. |
479 |
Outline level is zero if unused. |
480 |
The name may be NULL for the normal style! */ |
481 |
typedef struct psiconv_word_style_s |
482 |
{ |
483 |
psiconv_character_layout character; /* character-level layout */ |
484 |
psiconv_paragraph_layout paragraph; /* paragraph-level layout */ |
485 |
psiconv_ucs2 hotkey; /* The hotkey */ |
486 |
psiconv_string_t name; /* Style name */ |
487 |
psiconv_bool_t built_in; /* Builtin style? */ |
488 |
psiconv_u32 outline_level; /* Outline level */ |
489 |
} *psiconv_word_style; |
490 |
|
491 |
/* A list of Word Styles */ |
492 |
typedef psiconv_list psiconv_word_style_list; |
493 |
/* Of struct psiconv_word_style_s */ |
494 |
|
495 |
/* A Word Styles Section |
496 |
All information about styles. |
497 |
Note that the name of the normal style is NULL! */ |
498 |
typedef struct psiconv_word_styles_section_s |
499 |
{ |
500 |
psiconv_word_style normal; /* The normal (unspecified) style */ |
501 |
psiconv_word_style_list styles; /* All other defined styles */ |
502 |
} *psiconv_word_styles_section; |
503 |
|
504 |
/* A Word File |
505 |
All information about a Word File. |
506 |
Note that a section can be NULL if it is not present. */ |
507 |
typedef struct psiconv_word_f_s |
508 |
{ |
509 |
psiconv_page_layout_section page_sec; /* Page layout */ |
510 |
psiconv_text_and_layout paragraphs; /* Text and text layout */ |
511 |
psiconv_word_status_section status_sec; /* Internal Word program settings */ |
512 |
psiconv_word_styles_section styles_sec; /* Styles */ |
513 |
} *psiconv_word_f; |
514 |
|
515 |
/* A TextEd File |
516 |
All information about a TextEd File. |
517 |
Note that a section can be NULL if it is not present. */ |
518 |
typedef struct psiconv_texted_f_s |
519 |
{ |
520 |
psiconv_page_layout_section page_sec; /* Page layout */ |
521 |
psiconv_texted_section texted_sec; /* Text and text layout */ |
522 |
} *psiconv_texted_f; |
523 |
|
524 |
/* A Jumptable Section. |
525 |
A simple list of offsets. |
526 |
This is never included in a regular psiconv_file structure, as the |
527 |
information is too low-level. It is used internally, though. */ |
528 |
typedef psiconv_list psiconv_jumptable_section; /* of psiconv_u32 */ |
529 |
|
530 |
/* A Paint Data Section |
531 |
A collection of pixels. |
532 |
Normalized values [0..1] for each color component. |
533 |
Origin is (x,y)=(0,0), to get pixel at (X,Y) use index [Y*xsize+X] */ |
534 |
typedef struct psiconv_paint_data_section_s |
535 |
{ |
536 |
psiconv_u32 xsize; /* Number of pixels in a row */ |
537 |
psiconv_u32 ysize; /* Number of pixels in a column */ |
538 |
psiconv_length_t pic_xsize; /* 0 if not specified */ |
539 |
psiconv_length_t pic_ysize; /* 0 if not specified */ |
540 |
float *red; |
541 |
float *green; |
542 |
float *blue; |
543 |
} *psiconv_paint_data_section; |
544 |
|
545 |
/* A collection of Paint Data Sections */ |
546 |
typedef psiconv_list psiconv_pictures; |
547 |
/* of struct psiconv_paint_data_section_s */ |
548 |
|
549 |
/* A MBM file |
550 |
All information about a MBM file |
551 |
MBM files contain one or more pictures. */ |
552 |
typedef struct psiconv_mbm_f_s |
553 |
{ |
554 |
psiconv_pictures sections; |
555 |
} *psiconv_mbm_f; |
556 |
|
557 |
/* Read the Psiconv file format documentation for a complete discription. |
558 |
Basic idea: a picture has a certain display size. Within it, the pixel |
559 |
data begins at a certain offset. Around it, there is an empty form. |
560 |
The first eight values are before magnification and cuts. |
561 |
Cuts are always <= 1.0; a cut of 0.0 cuts nothing away, a cut of 1.0 |
562 |
cuts everything away. */ |
563 |
typedef struct psiconv_sketch_section_s |
564 |
{ |
565 |
psiconv_u16 displayed_xsize; |
566 |
psiconv_u16 displayed_ysize; |
567 |
psiconv_u16 picture_data_x_offset; |
568 |
psiconv_u16 picture_data_y_offset; |
569 |
psiconv_u16 form_xsize; |
570 |
psiconv_u16 form_ysize; |
571 |
psiconv_u16 displayed_size_x_offset; |
572 |
psiconv_u16 displayed_size_y_offset; |
573 |
float magnification_x; /* computed relative to first eight values */ |
574 |
float magnification_y; /* computed relative to first eight values */ |
575 |
float cut_left; /* computed relative to first eight values */ |
576 |
float cut_right; /* computed relative to first eight values */ |
577 |
float cut_top; /* computed relative to first eight values */ |
578 |
float cut_bottom; /* computed relative to first eight values */ |
579 |
psiconv_paint_data_section picture; |
580 |
} *psiconv_sketch_section; |
581 |
|
582 |
typedef struct psiconv_sketch_f_s |
583 |
{ |
584 |
psiconv_sketch_section sketch_sec; |
585 |
} *psiconv_sketch_f; |
586 |
|
587 |
typedef struct psiconv_clipart_section_s |
588 |
{ |
589 |
/* Perhaps later on some currently unknown stuff. */ |
590 |
psiconv_paint_data_section picture; |
591 |
} * psiconv_clipart_section; |
592 |
|
593 |
typedef psiconv_list psiconv_cliparts; /* of struct psiconv_clipart_section_s */ |
594 |
|
595 |
typedef struct psiconv_clipart_f_s |
596 |
{ |
597 |
psiconv_cliparts sections; |
598 |
} *psiconv_clipart_f; |
599 |
|
600 |
typedef struct psiconv_sheet_ref_s |
601 |
{ |
602 |
psiconv_s16 offset; |
603 |
psiconv_bool_t absolute; |
604 |
} psiconv_sheet_ref_t; |
605 |
|
606 |
typedef struct psiconv_sheet_cell_reference_s |
607 |
{ |
608 |
psiconv_sheet_ref_t row; |
609 |
psiconv_sheet_ref_t column; |
610 |
} psiconv_sheet_cell_reference_t; |
611 |
|
612 |
typedef struct psiconv_sheet_cell_block_s |
613 |
{ |
614 |
psiconv_sheet_cell_reference_t first; |
615 |
psiconv_sheet_cell_reference_t last; |
616 |
} psiconv_sheet_cell_block_t; |
617 |
|
618 |
typedef enum psiconv_cell_type |
619 |
{ |
620 |
psiconv_cell_blank, |
621 |
psiconv_cell_int, |
622 |
psiconv_cell_bool, |
623 |
psiconv_cell_error, |
624 |
psiconv_cell_float, |
625 |
psiconv_cell_string |
626 |
} psiconv_cell_type_t; |
627 |
|
628 |
typedef enum psiconv_sheet_errorcode |
629 |
{ |
630 |
psiconv_sheet_error_none, |
631 |
psiconv_sheet_error_null, |
632 |
psiconv_sheet_error_divzero, |
633 |
psiconv_sheet_error_value, |
634 |
psiconv_sheet_error_reference, |
635 |
psiconv_sheet_error_name, |
636 |
psiconv_sheet_error_number, |
637 |
psiconv_sheet_error_notavail |
638 |
} psiconv_sheet_errorcode_t; |
639 |
|
640 |
typedef enum psiconv_sheet_numberformat_code |
641 |
{ |
642 |
psiconv_numberformat_general, |
643 |
psiconv_numberformat_fixeddecimal, |
644 |
psiconv_numberformat_scientific, |
645 |
psiconv_numberformat_currency, |
646 |
psiconv_numberformat_percent, |
647 |
psiconv_numberformat_triads, |
648 |
psiconv_numberformat_boolean, |
649 |
psiconv_numberformat_text, |
650 |
psiconv_numberformat_date_dmm, |
651 |
psiconv_numberformat_date_mmd, |
652 |
psiconv_numberformat_date_ddmmyy, |
653 |
psiconv_numberformat_date_mmddyy, |
654 |
psiconv_numberformat_date_yymmdd, |
655 |
psiconv_numberformat_date_dmmm, |
656 |
psiconv_numberformat_date_dmmmyy, |
657 |
psiconv_numberformat_date_ddmmmyy, |
658 |
psiconv_numberformat_date_mmm, |
659 |
psiconv_numberformat_date_monthname, |
660 |
psiconv_numberformat_date_mmmyy, |
661 |
psiconv_numberformat_date_monthnameyy, |
662 |
psiconv_numberformat_date_monthnamedyyyy, |
663 |
psiconv_numberformat_datetime_ddmmyyyyhhii, |
664 |
psiconv_numberformat_datetime_ddmmyyyyHHii, |
665 |
psiconv_numberformat_datetime_mmddyyyyhhii, |
666 |
psiconv_numberformat_datetime_mmddyyyyHHii, |
667 |
psiconv_numberformat_datetime_yyyymmddhhii, |
668 |
psiconv_numberformat_datetime_yyyymmddHHii, |
669 |
psiconv_numberformat_time_hhii, |
670 |
psiconv_numberformat_time_hhiiss, |
671 |
psiconv_numberformat_time_HHii, |
672 |
psiconv_numberformat_time_HHiiss |
673 |
} psiconv_sheet_numberformat_code_t; |
674 |
|
675 |
typedef struct psiconv_sheet_numberformat_s |
676 |
{ |
677 |
psiconv_sheet_numberformat_code_t code; |
678 |
psiconv_u8 decimal; |
679 |
} *psiconv_sheet_numberformat; |
680 |
|
681 |
typedef struct psiconv_sheet_cell_layout_s |
682 |
{ |
683 |
psiconv_character_layout character; |
684 |
psiconv_paragraph_layout paragraph; |
685 |
psiconv_sheet_numberformat numberformat; |
686 |
} * psiconv_sheet_cell_layout; |
687 |
|
688 |
typedef struct psiconv_sheet_cell_s |
689 |
{ |
690 |
psiconv_u16 column; |
691 |
psiconv_u16 row; |
692 |
psiconv_cell_type_t type; |
693 |
union { |
694 |
psiconv_u32 dat_int; |
695 |
double dat_float; |
696 |
psiconv_string_t dat_string; |
697 |
psiconv_bool_t dat_bool; |
698 |
psiconv_sheet_errorcode_t dat_error; |
699 |
} data; |
700 |
psiconv_sheet_cell_layout layout; |
701 |
psiconv_bool_t calculated; |
702 |
psiconv_u32 ref_formula; |
703 |
} *psiconv_sheet_cell; |
704 |
|
705 |
typedef psiconv_list psiconv_sheet_cell_list; |
706 |
/* Of struct psiconv_sheet_cell_s */ |
707 |
|
708 |
typedef struct psiconv_sheet_status_section_s |
709 |
{ |
710 |
psiconv_bool_t show_graph; |
711 |
psiconv_u32 cursor_row; |
712 |
psiconv_u32 cursor_column; |
713 |
psiconv_bool_t show_top_sheet_toolbar; |
714 |
psiconv_bool_t show_side_sheet_toolbar; |
715 |
psiconv_bool_t show_top_graph_toolbar; |
716 |
psiconv_bool_t show_side_graph_toolbar; |
717 |
psiconv_u32 sheet_display_size; |
718 |
psiconv_u32 graph_display_size; |
719 |
psiconv_triple_t show_horizontal_scrollbar; |
720 |
psiconv_triple_t show_vertical_scrollbar; |
721 |
} *psiconv_sheet_status_section; |
722 |
|
723 |
typedef enum psiconv_formula_type |
724 |
{ |
725 |
psiconv_formula_unknown, |
726 |
psiconv_formula_op_lt, |
727 |
psiconv_formula_op_le, |
728 |
psiconv_formula_op_gt, |
729 |
psiconv_formula_op_ge, |
730 |
psiconv_formula_op_ne, |
731 |
psiconv_formula_op_eq, |
732 |
psiconv_formula_op_add, |
733 |
psiconv_formula_op_sub, |
734 |
psiconv_formula_op_mul, |
735 |
psiconv_formula_op_div, |
736 |
psiconv_formula_op_pow, |
737 |
psiconv_formula_op_pos, |
738 |
psiconv_formula_op_neg, |
739 |
psiconv_formula_op_not, |
740 |
psiconv_formula_op_and, |
741 |
psiconv_formula_op_or, |
742 |
psiconv_formula_op_con, |
743 |
psiconv_formula_op_bra, |
744 |
psiconv_formula_mark_eof, |
745 |
psiconv_formula_dat_float, |
746 |
psiconv_formula_dat_int, |
747 |
psiconv_formula_dat_var, |
748 |
psiconv_formula_dat_string, |
749 |
psiconv_formula_dat_cellref, |
750 |
psiconv_formula_dat_cellblock, |
751 |
psiconv_formula_dat_vcellblock, |
752 |
psiconv_formula_mark_opsep, |
753 |
psiconv_formula_mark_opend, |
754 |
psiconv_formula_fun_false, |
755 |
psiconv_formula_fun_if, |
756 |
psiconv_formula_fun_true, |
757 |
psiconv_formula_fun_cell, |
758 |
psiconv_formula_fun_errortype, |
759 |
psiconv_formula_fun_isblank, |
760 |
psiconv_formula_fun_iserr, |
761 |
psiconv_formula_fun_iserror, |
762 |
psiconv_formula_fun_islogical, |
763 |
psiconv_formula_fun_isna, |
764 |
psiconv_formula_fun_isnontext, |
765 |
psiconv_formula_fun_isnumber, |
766 |
psiconv_formula_fun_istext, |
767 |
psiconv_formula_fun_n, |
768 |
psiconv_formula_fun_type, |
769 |
psiconv_formula_fun_address, |
770 |
psiconv_formula_fun_column, |
771 |
psiconv_formula_fun_columns, |
772 |
psiconv_formula_fun_hlookup, |
773 |
psiconv_formula_fun_index, |
774 |
psiconv_formula_fun_indirect, |
775 |
psiconv_formula_fun_lookup, |
776 |
psiconv_formula_fun_offset, |
777 |
psiconv_formula_fun_row, |
778 |
psiconv_formula_fun_rows, |
779 |
psiconv_formula_fun_vlookup, |
780 |
psiconv_formula_fun_char, |
781 |
psiconv_formula_fun_code, |
782 |
psiconv_formula_fun_exact, |
783 |
psiconv_formula_fun_find, |
784 |
psiconv_formula_fun_left, |
785 |
psiconv_formula_fun_len, |
786 |
psiconv_formula_fun_lower, |
787 |
psiconv_formula_fun_mid, |
788 |
psiconv_formula_fun_proper, |
789 |
psiconv_formula_fun_replace, |
790 |
psiconv_formula_fun_rept, |
791 |
psiconv_formula_fun_right, |
792 |
psiconv_formula_fun_string, |
793 |
psiconv_formula_fun_t, |
794 |
psiconv_formula_fun_trim, |
795 |
psiconv_formula_fun_upper, |
796 |
psiconv_formula_fun_value, |
797 |
psiconv_formula_fun_date, |
798 |
psiconv_formula_fun_datevalue, |
799 |
psiconv_formula_fun_day, |
800 |
psiconv_formula_fun_hour, |
801 |
psiconv_formula_fun_minute, |
802 |
psiconv_formula_fun_month, |
803 |
psiconv_formula_fun_now, |
804 |
psiconv_formula_fun_second, |
805 |
psiconv_formula_fun_today, |
806 |
psiconv_formula_fun_time, |
807 |
psiconv_formula_fun_timevalue, |
808 |
psiconv_formula_fun_year, |
809 |
psiconv_formula_fun_abs, |
810 |
psiconv_formula_fun_acos, |
811 |
psiconv_formula_fun_asin, |
812 |
psiconv_formula_fun_atan, |
813 |
psiconv_formula_fun_atan2, |
814 |
psiconv_formula_fun_cos, |
815 |
psiconv_formula_fun_degrees, |
816 |
psiconv_formula_fun_exp, |
817 |
psiconv_formula_fun_fact, |
818 |
psiconv_formula_fun_int, |
819 |
psiconv_formula_fun_ln, |
820 |
psiconv_formula_fun_log10, |
821 |
psiconv_formula_fun_mod, |
822 |
psiconv_formula_fun_pi, |
823 |
psiconv_formula_fun_radians, |
824 |
psiconv_formula_fun_rand, |
825 |
psiconv_formula_fun_round, |
826 |
psiconv_formula_fun_sign, |
827 |
psiconv_formula_fun_sin, |
828 |
psiconv_formula_fun_sqrt, |
829 |
psiconv_formula_fun_sumproduct, |
830 |
psiconv_formula_fun_tan, |
831 |
psiconv_formula_fun_trunc, |
832 |
psiconv_formula_fun_cterm, |
833 |
psiconv_formula_fun_ddb, |
834 |
psiconv_formula_fun_fv, |
835 |
psiconv_formula_fun_irr, |
836 |
psiconv_formula_fun_npv, |
837 |
psiconv_formula_fun_pmt, |
838 |
psiconv_formula_fun_pv, |
839 |
psiconv_formula_fun_rate, |
840 |
psiconv_formula_fun_sln, |
841 |
psiconv_formula_fun_syd, |
842 |
psiconv_formula_fun_term, |
843 |
psiconv_formula_fun_combin, |
844 |
psiconv_formula_fun_permut, |
845 |
psiconv_formula_vfn_average, |
846 |
psiconv_formula_vfn_choose, |
847 |
psiconv_formula_vfn_count, |
848 |
psiconv_formula_vfn_counta, |
849 |
psiconv_formula_vfn_countblank, |
850 |
psiconv_formula_vfn_max, |
851 |
psiconv_formula_vfn_min, |
852 |
psiconv_formula_vfn_product, |
853 |
psiconv_formula_vfn_stdevp, |
854 |
psiconv_formula_vfn_stdev, |
855 |
psiconv_formula_vfn_sum, |
856 |
psiconv_formula_vfn_sumsq, |
857 |
psiconv_formula_vfn_varp, |
858 |
psiconv_formula_vfn_var |
859 |
} psiconv_formula_type_t; |
860 |
|
861 |
typedef psiconv_list psiconv_formula_list; /* Of struct psiconv_formula_s */ |
862 |
|
863 |
typedef struct psiconv_formula_s |
864 |
{ |
865 |
psiconv_formula_type_t type; |
866 |
union { |
867 |
psiconv_u32 dat_int; |
868 |
double dat_float; |
869 |
psiconv_string_t dat_string; |
870 |
psiconv_sheet_cell_reference_t dat_cellref; |
871 |
psiconv_sheet_cell_block_t dat_cellblock; |
872 |
psiconv_formula_list fun_operands; |
873 |
psiconv_u32 dat_variable; |
874 |
} data; |
875 |
} *psiconv_formula; |
876 |
|
877 |
typedef struct psiconv_sheet_line_s |
878 |
{ |
879 |
psiconv_u32 position; |
880 |
psiconv_sheet_cell_layout layout; |
881 |
} *psiconv_sheet_line; |
882 |
|
883 |
typedef psiconv_list psiconv_sheet_line_list; |
884 |
/* Of struct psiconv_sheet_line_s */ |
885 |
|
886 |
typedef struct psiconv_sheet_grid_size_s |
887 |
{ |
888 |
psiconv_u32 line_number; |
889 |
psiconv_length_t size; |
890 |
} *psiconv_sheet_grid_size; |
891 |
|
892 |
typedef psiconv_list psiconv_sheet_grid_size_list; |
893 |
/* Of struct psiconv_sheet_grid_size_s */ |
894 |
|
895 |
typedef psiconv_list psiconv_sheet_grid_break_list; /* of psiconv_u32 */ |
896 |
|
897 |
typedef struct psiconv_sheet_grid_section_s |
898 |
{ |
899 |
psiconv_bool_t show_column_titles; |
900 |
psiconv_bool_t show_row_titles; |
901 |
psiconv_bool_t show_vertical_grid; |
902 |
psiconv_bool_t show_horizontal_grid; |
903 |
psiconv_bool_t freeze_rows; |
904 |
psiconv_bool_t freeze_columns; |
905 |
psiconv_u32 frozen_rows; |
906 |
psiconv_u32 frozen_columns; |
907 |
psiconv_u32 first_unfrozen_row_displayed; |
908 |
psiconv_u32 first_unfrozen_column_displayed; |
909 |
psiconv_bool_t show_page_breaks; |
910 |
psiconv_u32 first_row; |
911 |
psiconv_u32 first_column; |
912 |
psiconv_u32 last_row; |
913 |
psiconv_u32 last_column; |
914 |
psiconv_length_t default_row_height; |
915 |
psiconv_length_t default_column_width; |
916 |
psiconv_sheet_grid_size_list row_heights; |
917 |
psiconv_sheet_grid_size_list column_heights; |
918 |
psiconv_sheet_grid_break_list row_page_breaks; |
919 |
psiconv_sheet_grid_break_list column_page_breaks; |
920 |
} *psiconv_sheet_grid_section; |
921 |
|
922 |
typedef struct psiconv_sheet_worksheet_s |
923 |
{ |
924 |
psiconv_sheet_cell_layout default_layout; |
925 |
psiconv_sheet_cell_list cells; |
926 |
psiconv_bool_t show_zeros; |
927 |
psiconv_sheet_line_list row_default_layouts; |
928 |
psiconv_sheet_line_list col_default_layouts; |
929 |
psiconv_sheet_grid_section grid; |
930 |
} *psiconv_sheet_worksheet; |
931 |
|
932 |
typedef psiconv_list psiconv_sheet_worksheet_list; |
933 |
/* of struct psiconv_sheet_worksheet_s */ |
934 |
|
935 |
typedef enum psiconv_variable_type |
936 |
{ |
937 |
psiconv_var_int, |
938 |
psiconv_var_float, |
939 |
psiconv_var_string, |
940 |
psiconv_var_cellref, |
941 |
psiconv_var_cellblock |
942 |
} psiconv_variable_type_t; |
943 |
|
944 |
typedef struct psiconv_sheet_variable_s |
945 |
{ |
946 |
psiconv_u32 number; |
947 |
psiconv_string_t name; |
948 |
psiconv_variable_type_t type; |
949 |
union { |
950 |
psiconv_s32 dat_int; |
951 |
double dat_float; |
952 |
psiconv_string_t dat_string; |
953 |
psiconv_sheet_cell_reference_t dat_cellref; |
954 |
psiconv_sheet_cell_block_t dat_cellblock; |
955 |
} data; |
956 |
} *psiconv_sheet_variable; |
957 |
|
958 |
typedef psiconv_list psiconv_sheet_variable_list; |
959 |
/* of struct psiconv_sheet_variable_s */ |
960 |
|
961 |
typedef struct psiconv_sheet_name_section_s |
962 |
{ |
963 |
psiconv_string_t name; |
964 |
} *psiconv_sheet_name_section; |
965 |
|
966 |
typedef struct psiconv_sheet_info_section_s |
967 |
{ |
968 |
psiconv_bool_t auto_recalc; |
969 |
} *psiconv_sheet_info_section; |
970 |
|
971 |
typedef struct psiconv_sheet_workbook_section_s |
972 |
{ |
973 |
psiconv_formula_list formulas; |
974 |
psiconv_sheet_worksheet_list worksheets; |
975 |
psiconv_sheet_variable_list variables; |
976 |
psiconv_sheet_info_section info; |
977 |
psiconv_sheet_name_section name; |
978 |
} *psiconv_sheet_workbook_section; |
979 |
|
980 |
typedef struct psiconv_sheet_f_s |
981 |
{ |
982 |
psiconv_page_layout_section page_sec; |
983 |
psiconv_sheet_status_section status_sec; |
984 |
psiconv_sheet_workbook_section workbook_sec; |
985 |
} *psiconv_sheet_f; |
986 |
|
987 |
/* NB: psiconv_file is already defined above */ |
988 |
struct psiconv_file_s |
989 |
{ |
990 |
psiconv_file_type_t type; |
991 |
void *file; |
992 |
}; |
993 |
|
994 |
|
995 |
/* UID1 */ |
996 |
#define PSICONV_ID_PSION5 0x10000037 |
997 |
#define PSICONV_ID_CLIPART 0x10000041 |
998 |
/* UID2 */ |
999 |
#define PSICONV_ID_DATA_FILE 0x1000006D |
1000 |
#define PSICONV_ID_MBM_FILE 0x10000042 |
1001 |
/* UID3 */ |
1002 |
#define PSICONV_ID_WORD 0x1000007F |
1003 |
#define PSICONV_ID_TEXTED 0x10000085 |
1004 |
#define PSICONV_ID_SKETCH 0x1000007D |
1005 |
#define PSICONV_ID_SHEET 0x10000088 |
1006 |
|
1007 |
/* Section table ids */ |
1008 |
#define PSICONV_ID_WORD_STATUS_SECTION 0x10000243 |
1009 |
#define PSICONV_ID_APPL_ID_SECTION 0x10000089 |
1010 |
#define PSICONV_ID_TEXT_SECTION 0x10000106 |
1011 |
#define PSICONV_ID_LAYOUT_SECTION 0x10000143 |
1012 |
#define PSICONV_ID_WORD_STYLES_SECTION 0x10000104 |
1013 |
#define PSICONV_ID_PAGE_LAYOUT_SECTION 0x10000105 |
1014 |
#define PSICONV_ID_PASSWORD_SECTION 0x100000CD |
1015 |
#define PSICONV_ID_SKETCH_SECTION 0x1000007D |
1016 |
#define PSICONV_ID_SHEET_STATUS_SECTION 0x1000011F |
1017 |
#define PSICONV_ID_SHEET_WORKBOOK_SECTION 0x1000011D |
1018 |
#define PSICONV_ID_SHEET_GRAPH_SECTION 0x10000121 |
1019 |
|
1020 |
/* Other ids */ |
1021 |
#define PSICONV_ID_PAGE_DIMENSIONS1 0x100000fd |
1022 |
#define PSICONV_ID_PAGE_DIMENSIONS2 0x1000010e |
1023 |
#define PSICONV_ID_TEXTED_BODY 0x1000005c |
1024 |
#define PSICONV_ID_TEXTED_REPLACEMENT 0x10000063 |
1025 |
#define PSICONV_ID_TEXTED_UNKNOWN 0x10000065 |
1026 |
#define PSICONV_ID_TEXTED_LAYOUT 0x10000066 |
1027 |
#define PSICONV_ID_TEXTED_TEXT 0x10000064 |
1028 |
#define PSICONV_ID_STYLE_REMOVABLE 0x1000004F |
1029 |
#define PSICONV_ID_STYLE_BUILT_IN 0x1000004C |
1030 |
#define PSICONV_ID_CLIPART_ITEM 0x10000040 |
1031 |
#define PSICONV_ID_OBJECT 0x10000051 |
1032 |
#define PSICONV_ID_OBJECT_DISPLAY_SECTION 0x10000146 |
1033 |
#define PSICONV_ID_OBJECT_ICON_SECTION 0x1000012A |
1034 |
#define PSICONV_ID_OBJECT_SECTION_TABLE_SECTION 0x10000144 |
1035 |
|
1036 |
|
1037 |
/* Return a clean layout_status. You can modify it at will. Returns NULL |
1038 |
if there is not enough memory. */ |
1039 |
extern psiconv_character_layout psiconv_basic_character_layout(void); |
1040 |
|
1041 |
/* Return a clean layout_status. You can modify it at will. Returns NULL |
1042 |
if there is not enough memory. */ |
1043 |
extern psiconv_paragraph_layout psiconv_basic_paragraph_layout(void); |
1044 |
|
1045 |
/* Clone a layout_status: the new copy is completely independent of the |
1046 |
original one. Returns NULL if there is not enough memory. */ |
1047 |
extern psiconv_paragraph_layout psiconv_clone_paragraph_layout |
1048 |
(psiconv_paragraph_layout ls); |
1049 |
|
1050 |
extern psiconv_character_layout psiconv_clone_character_layout |
1051 |
(psiconv_character_layout ls); |
1052 |
|
1053 |
/* Get a numbered style. Returns NULL if the style is unknown. */ |
1054 |
extern psiconv_word_style psiconv_get_style (psiconv_word_styles_section ss, int nr); |
1055 |
/* Get a numbered formula. Returns NULL if the style is unknown. */ |
1056 |
extern psiconv_formula psiconv_get_formula (psiconv_formula_list ss, int nr); |
1057 |
|
1058 |
/* Return the default layout */ |
1059 |
extern psiconv_sheet_cell_layout psiconv_get_default_layout |
1060 |
(psiconv_sheet_line_list row_defaults, |
1061 |
psiconv_sheet_line_list col_defaults, |
1062 |
psiconv_sheet_cell_layout cell_default, |
1063 |
int row,int col); |
1064 |
|
1065 |
extern void psiconv_free_color(psiconv_color color); |
1066 |
extern void psiconv_free_border(psiconv_border border); |
1067 |
extern void psiconv_free_bullet(psiconv_bullet bullet); |
1068 |
extern void psiconv_free_font(psiconv_font font); |
1069 |
extern void psiconv_free_tab(psiconv_tab tab); |
1070 |
extern void psiconv_free_tabs(psiconv_all_tabs tabs); |
1071 |
extern void psiconv_free_paragraph_layout(psiconv_paragraph_layout layout); |
1072 |
extern void psiconv_free_character_layout(psiconv_character_layout layout); |
1073 |
extern void psiconv_free_word_style(psiconv_word_style style); |
1074 |
extern void psiconv_free_word_styles_section |
1075 |
(psiconv_word_styles_section styles); |
1076 |
extern void psiconv_free_formula(psiconv_formula formula); |
1077 |
extern void psiconv_free_formula_list(psiconv_formula_list list); |
1078 |
extern void psiconv_free_sheet_status_section |
1079 |
(psiconv_sheet_status_section section); |
1080 |
extern void psiconv_free_sheet_cell_layout(psiconv_sheet_cell_layout layout); |
1081 |
extern void psiconv_free_sheet_grid_break_list |
1082 |
(psiconv_sheet_grid_break_list list); |
1083 |
extern void psiconv_free_sheet_grid_size(psiconv_sheet_grid_size s); |
1084 |
extern void psiconv_free_sheet_grid_size_list |
1085 |
(psiconv_sheet_grid_size_list list); |
1086 |
extern void psiconv_free_sheet_grid_section(psiconv_sheet_grid_section sec); |
1087 |
extern void psiconv_free_sheet_worksheet(psiconv_sheet_worksheet sheet); |
1088 |
extern void psiconv_free_sheet_worksheet_list |
1089 |
(psiconv_sheet_worksheet_list list); |
1090 |
|
1091 |
extern void psiconv_free_sheet_f(psiconv_sheet_f file); |
1092 |
extern void psiconv_free_sheet_cell(psiconv_sheet_cell cell); |
1093 |
extern void psiconv_free_sheet_cell_list(psiconv_sheet_cell_list list); |
1094 |
extern void psiconv_free_sheet_numberformat |
1095 |
(psiconv_sheet_numberformat numberformat); |
1096 |
extern void psiconv_free_sheet_line_list(psiconv_sheet_line_list list); |
1097 |
extern void psiconv_free_sheet_line(psiconv_sheet_line line); |
1098 |
extern void psiconv_free_sheet_name_section(psiconv_sheet_name_section section); |
1099 |
extern void psiconv_free_sheet_variable(psiconv_sheet_variable list); |
1100 |
extern void psiconv_free_sheet_variable_list(psiconv_sheet_variable_list list); |
1101 |
extern void psiconv_free_sheet_info_section(psiconv_sheet_info_section section); |
1102 |
extern void psiconv_free_sheet_workbook_section |
1103 |
(psiconv_sheet_workbook_section section); |
1104 |
extern void psiconv_free_header_section(psiconv_header_section header); |
1105 |
extern void psiconv_free_section_table_entry(psiconv_section_table_entry entry); |
1106 |
extern void psiconv_free_section_table_section |
1107 |
(psiconv_section_table_section section); |
1108 |
extern void psiconv_free_application_id_section |
1109 |
(psiconv_application_id_section section); |
1110 |
extern void psiconv_free_object_display_section |
1111 |
(psiconv_object_display_section section); |
1112 |
extern void psiconv_free_object_icon_section |
1113 |
(psiconv_object_icon_section section); |
1114 |
extern void psiconv_free_embedded_object_section |
1115 |
(psiconv_embedded_object_section object); |
1116 |
extern void psiconv_free_in_line_layout(psiconv_in_line_layout layout); |
1117 |
extern void psiconv_free_in_line_layouts(psiconv_in_line_layouts layouts); |
1118 |
extern void psiconv_free_replacement(psiconv_replacement replacement); |
1119 |
extern void psiconv_free_replacements(psiconv_replacements replacements); |
1120 |
extern void psiconv_free_paragraph(psiconv_paragraph paragraph); |
1121 |
extern void psiconv_free_text_and_layout(psiconv_text_and_layout text); |
1122 |
extern void psiconv_free_texted_section(psiconv_texted_section section); |
1123 |
extern void psiconv_free_page_header(psiconv_page_header header); |
1124 |
extern void psiconv_free_page_layout_section |
1125 |
(psiconv_page_layout_section section); |
1126 |
extern void psiconv_free_word_status_section |
1127 |
(psiconv_word_status_section section); |
1128 |
extern void psiconv_free_word_f(psiconv_word_f file); |
1129 |
extern void psiconv_free_texted_f(psiconv_texted_f file); |
1130 |
extern void psiconv_free_paint_data_section(psiconv_paint_data_section section); |
1131 |
extern void psiconv_free_pictures(psiconv_pictures section); |
1132 |
extern void psiconv_free_jumptable_section |
1133 |
(psiconv_jumptable_section section); |
1134 |
extern void psiconv_free_mbm_f(psiconv_mbm_f file); |
1135 |
extern void psiconv_free_sketch_section(psiconv_sketch_section sec); |
1136 |
extern void psiconv_free_sketch_f(psiconv_sketch_f file); |
1137 |
extern void psiconv_free_clipart_section(psiconv_clipart_section section); |
1138 |
extern void psiconv_free_cliparts(psiconv_cliparts section); |
1139 |
extern void psiconv_free_clipart_f(psiconv_clipart_f file); |
1140 |
|
1141 |
extern void psiconv_free_file(psiconv_file file); |
1142 |
|
1143 |
extern int psiconv_compare_color(const psiconv_color value1, |
1144 |
const psiconv_color value2); |
1145 |
extern int psiconv_compare_font(const psiconv_font value1, |
1146 |
const psiconv_font value2); |
1147 |
extern int psiconv_compare_border(const psiconv_border value1, |
1148 |
const psiconv_border value2); |
1149 |
extern int psiconv_compare_bullet(const psiconv_bullet value1, |
1150 |
const psiconv_bullet value2); |
1151 |
extern int psiconv_compare_tab(const psiconv_tab value1, |
1152 |
const psiconv_tab value2); |
1153 |
extern int psiconv_compare_all_tabs(const psiconv_all_tabs value1, |
1154 |
const psiconv_all_tabs value2); |
1155 |
extern int psiconv_compare_paragraph_layout |
1156 |
(const psiconv_paragraph_layout value1, |
1157 |
const psiconv_paragraph_layout value2); |
1158 |
|
1159 |
extern int psiconv_compare_character_layout |
1160 |
(const psiconv_character_layout value1, |
1161 |
const psiconv_character_layout value2); |
1162 |
|
1163 |
/* Get a newly allocated file with sensible defaults, ready to generate. */ |
1164 |
extern psiconv_file psiconv_empty_file(psiconv_file_type_t type); |
1165 |
|
1166 |
|
1167 |
#ifdef __cplusplus |
1168 |
} |
1169 |
#endif /* __cplusplus */ |
1170 |
|
1171 |
#endif /* def PSICONV_DATA_H */ |