/[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 192 - (hide annotations)
Mon Feb 2 20:43:04 2004 UTC (20 years, 2 months ago) by frodo
File MIME type: text/plain
File size: 44348 byte(s)
(Frodo) Psiconv program update
  * Created html4 target
  * Update of xhtml target (print entities if ASCII, and others)
  * Made everything static that should not be exported
  * Renamed stuff to xhtml were appropriate
  * The fileformat data does now contain the supported Psion files to convert
  * This is also printed in the help text
  * ENCODING_ASCII_HTML introduced (only used internally)
  * Replaced debug, silent, verbose options with noise option
  * Default targets are XHTML and TIFF

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 frodo 188 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 frodo 2
27     #ifndef PSICONV_DATA_H
28     #define PSICONV_DATA_H
29    
30 frodo 58 #include <psiconv/general.h>
31     #include <psiconv/list.h>
32 frodo 2
33     /* All types which end on _t are plain types; all other types are pointers
34 frodo 188 to structs. */
35 frodo 2
36 frodo 55 #ifdef __cplusplus
37     extern "C" {
38     #endif /* __cplusplus */
39    
40 frodo 167 /* Forward declaration (for psiconv_embedded_object_section) */
41 frodo 159 typedef struct psiconv_file_s *psiconv_file;
42    
43 frodo 188
44     /* Enums and simple types */
45    
46    
47     /* Floating point number representation */
48 frodo 101 typedef double psiconv_float_t;
49 frodo 55
50 frodo 188 /* The supported file types. */
51 frodo 2 typedef enum psiconv_file_type {
52     psiconv_unknown_file,
53     psiconv_word_file,
54     psiconv_texted_file,
55 frodo 12 psiconv_mbm_file,
56 frodo 41 psiconv_sketch_file,
57 frodo 94 psiconv_clipart_file,
58     psiconv_sheet_file
59 frodo 2 } psiconv_file_type_t;
60    
61 frodo 188 /* 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 frodo 184 typedef psiconv_ucs2 *psiconv_string_t;
66 frodo 2
67 frodo 188 /* Represent lengths (in centimeters) and sizes (in points).
68     In the Psion file, these are identical; but we translate them to more
69 frodo 2 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 frodo 188 /* 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 frodo 2 typedef enum psiconv_bool
77     {
78     psiconv_bool_false,
79     psiconv_bool_true
80     } psiconv_bool_t;
81    
82 frodo 188 /* Some kind of three-valued boolean, used at several places. */
83 frodo 94 typedef enum psiconv_triple
84     {
85     psiconv_triple_on,
86     psiconv_triple_off,
87     psiconv_triple_auto
88     } psiconv_triple_t;
89    
90 frodo 188 /* 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 frodo 2 typedef enum psiconv_super_sub
94     { psiconv_normalscript,
95     psiconv_superscript,
96     psiconv_subscript
97     } psiconv_super_sub_t;
98    
99 frodo 188 /* Horizontal justification. */
100 frodo 2 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 frodo 188 /* Vertical justification. */
108 frodo 2 typedef enum psiconv_justify_ver
109     { psiconv_justify_top,
110     psiconv_justify_middle,
111     psiconv_justify_bottom
112     } psiconv_justify_ver_t;
113    
114 frodo 188 /* Borders around text fields. */
115 frodo 2 typedef enum psiconv_border_kind
116 frodo 188 { 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 frodo 2 } psiconv_border_kind_t;
124    
125 frodo 188 /* 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 frodo 90 typedef enum psiconv_screenfont
128     {
129 frodo 188 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 frodo 90 } psiconv_screenfont_t;
134    
135 frodo 188
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 frodo 56 typedef struct psiconv_color_s
162 frodo 2 {
163     psiconv_u8 red;
164     psiconv_u8 green;
165     psiconv_u8 blue;
166     } * psiconv_color;
167    
168 frodo 188
169     /* Complete font information: both a printer font and a corresponding screen
170     font to display it. */
171 frodo 56 typedef struct psiconv_font_s
172 frodo 2 {
173 frodo 188 psiconv_string_t name; /* Printer font */
174     psiconv_screenfont_t screenfont; /* Screen font */
175 frodo 2 } *psiconv_font;
176    
177 frodo 188 /* Complete border information */
178 frodo 56 typedef struct psiconv_border_s
179 frodo 2 {
180 frodo 188 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 frodo 2 } *psiconv_border;
184    
185 frodo 188 /* 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 frodo 56 typedef struct psiconv_bullet_s
191 frodo 2 {
192 frodo 188 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 frodo 2 } *psiconv_bullet;
199    
200 frodo 188 /* Complete single tab information */
201 frodo 56 typedef struct psiconv_tab_s
202 frodo 2 {
203 frodo 188 psiconv_length_t location; /* The indentation level */
204     psiconv_tab_kind_t kind; /* Tab kind */
205 frodo 2 } *psiconv_tab;
206    
207 frodo 188 /* A list of tabs */
208     typedef psiconv_list psiconv_tab_list; /* of struct psiconv_tab_s */
209 frodo 2
210 frodo 188 /* Information about all tabs.
211     Normal tabs start after the rightmost extra tab */
212 frodo 56 typedef struct psiconv_all_tabs_s
213 frodo 2 {
214 frodo 188 psiconv_length_t normal; /* Normal tab distance */
215     psiconv_tab_list extras; /* Additional defined tabs */
216 frodo 2 } *psiconv_all_tabs;
217    
218 frodo 188 /* 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 frodo 56 typedef struct psiconv_character_layout_s
227 frodo 2 {
228 frodo 188 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 frodo 2 } *psiconv_character_layout;
238    
239 frodo 188 /* 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 frodo 56 typedef struct psiconv_paragraph_layout_s
257 frodo 2 {
258 frodo 188 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 frodo 2 } *psiconv_paragraph_layout;
281    
282 frodo 188 /* 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 frodo 56 typedef struct psiconv_header_section_s
288 frodo 2 {
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 frodo 188 /* 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 frodo 56 typedef struct psiconv_section_table_entry_s
301 frodo 2 {
302 frodo 188 psiconv_u32 id; /* Section UID */
303     psiconv_u32 offset; /* Section offset within the file */
304 frodo 2 } *psiconv_section_table_entry;
305    
306 frodo 188 /* 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 frodo 2 typedef psiconv_list psiconv_section_table_section;
312 frodo 188 /* Of struct psiconv_sectiontable_entry_s */
313 frodo 2
314 frodo 188 /* 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 frodo 56 typedef struct psiconv_application_id_section_s
321 frodo 2 {
322 frodo 188 psiconv_u32 id; /* File type UID */
323     psiconv_string_t name; /* File type name */
324 frodo 2 } *psiconv_application_id_section;
325    
326 frodo 188 /* An Object Icon Section.
327     The icon used for an embedded object. */
328 frodo 159 typedef struct psiconv_object_icon_section_s
329     {
330 frodo 188 psiconv_length_t icon_width; /* Icon width */
331     psiconv_length_t icon_height; /* Icon height */
332     psiconv_string_t icon_name; /* Icon name */
333 frodo 159 } *psiconv_object_icon_section;
334    
335 frodo 188 /* 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 frodo 159 typedef struct psiconv_object_display_section_s
340     {
341 frodo 188 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 frodo 159 } *psiconv_object_display_section;
345    
346 frodo 188 /* 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 frodo 167 typedef struct psiconv_embedded_object_section_s
351 frodo 159 {
352 frodo 188 psiconv_object_icon_section icon; /* Icon information */
353     psiconv_object_display_section display; /* Display information */
354     psiconv_file object; /* The object itself */
355 frodo 167 } *psiconv_embedded_object_section;
356 frodo 159
357 frodo 188 /* 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 frodo 56 typedef struct psiconv_in_line_layout_s
366 frodo 2 {
367 frodo 188 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 frodo 2 } *psiconv_in_line_layout;
373    
374 frodo 188 /* 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 frodo 2
379 frodo 188 /* What to replace where in text. Not yet implemented!
380     (not yet implemented!) */
381 frodo 56 typedef struct psiconv_replacement_s
382 frodo 2 {
383 frodo 188 int offset; /* Offset in text */
384     int cur_len; /* Length of text to replace */
385     psiconv_replacement_type_t type; /* Kind of replacement */
386 frodo 2 } *psiconv_replacement;
387    
388 frodo 188 /* A list of replacements */
389     typedef psiconv_list psiconv_replacements; /* of struct psiconv_replacement_s */
390 frodo 2
391 frodo 188 /* 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 frodo 56 typedef struct psiconv_paragraph_s
400 frodo 2 {
401 frodo 188 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 frodo 2 } *psiconv_paragraph;
408    
409 frodo 188 /* A collection of text paragraphs */
410     typedef psiconv_list psiconv_text_and_layout;
411     /* Of struct psiconv_paragraph_s */
412 frodo 2
413 frodo 188 /* A TextEd Section.
414     Text and simple layout, without styles. */
415 frodo 56 typedef struct psiconv_texted_section_s
416 frodo 2 {
417     psiconv_text_and_layout paragraphs;
418     } *psiconv_texted_section;
419    
420 frodo 188 /* 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 frodo 56 typedef struct psiconv_page_header_s
425 frodo 2 {
426 frodo 188 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 frodo 2 } *psiconv_page_header;
431    
432 frodo 188 /* 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 frodo 56 typedef struct psiconv_page_layout_section_s
436 frodo 2 {
437 frodo 188 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 frodo 2 } * psiconv_page_layout_section;
450    
451 frodo 188 /* 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 frodo 56 typedef struct psiconv_word_status_section_s
460 frodo 2 {
461 frodo 188 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 frodo 2 } *psiconv_word_status_section;
475    
476 frodo 188 /* A Word Style.
477     All information about a single Style.
478     A builtin style may not be changed in the Word program.
479 frodo 192 Outline level is zero if unused.
480     The name may be NULL for the normal style! */
481 frodo 56 typedef struct psiconv_word_style_s
482 frodo 2 {
483 frodo 188 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 frodo 2 } *psiconv_word_style;
490    
491 frodo 188 /* A list of Word Styles */
492     typedef psiconv_list psiconv_word_style_list;
493     /* Of struct psiconv_word_style_s */
494 frodo 2
495 frodo 188 /* A Word Styles Section
496 frodo 192 All information about styles.
497     Note that the name of the normal style is NULL! */
498 frodo 56 typedef struct psiconv_word_styles_section_s
499 frodo 2 {
500 frodo 188 psiconv_word_style normal; /* The normal (unspecified) style */
501     psiconv_word_style_list styles; /* All other defined styles */
502 frodo 2 } *psiconv_word_styles_section;
503    
504 frodo 188 /* A Word File
505     All information about a Word File.
506     Note that a section can be NULL if it is not present. */
507 frodo 56 typedef struct psiconv_word_f_s
508     {
509 frodo 188 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 frodo 2 } *psiconv_word_f;
514    
515 frodo 188 /* A TextEd File
516     All information about a TextEd File.
517     Note that a section can be NULL if it is not present. */
518 frodo 56 typedef struct psiconv_texted_f_s
519     {
520 frodo 188 psiconv_page_layout_section page_sec; /* Page layout */
521     psiconv_texted_section texted_sec; /* Text and text layout */
522 frodo 2 } *psiconv_texted_f;
523    
524 frodo 188 /* 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 frodo 42 typedef psiconv_list psiconv_jumptable_section; /* of psiconv_u32 */
529 frodo 12
530 frodo 188 /* A Paint Data Section
531     A collection of pixels.
532     Normalized values [0..1] for each color component.
533 frodo 11 Origin is (x,y)=(0,0), to get pixel at (X,Y) use index [Y*xsize+X] */
534 frodo 56 typedef struct psiconv_paint_data_section_s
535     {
536 frodo 188 psiconv_u32 xsize; /* Number of pixels in a row */
537     psiconv_u32 ysize; /* Number of pixels in a column */
538 frodo 25 psiconv_length_t pic_xsize; /* 0 if not specified */
539     psiconv_length_t pic_ysize; /* 0 if not specified */
540 frodo 188 float *red;
541 frodo 11 float *green;
542     float *blue;
543     } *psiconv_paint_data_section;
544    
545 frodo 188 /* A collection of Paint Data Sections */
546 frodo 12 typedef psiconv_list psiconv_pictures;
547 frodo 188 /* of struct psiconv_paint_data_section_s */
548 frodo 12
549 frodo 188 /* A MBM file
550     All information about a MBM file
551     MBM files contain one or more pictures. */
552 frodo 56 typedef struct psiconv_mbm_f_s
553     {
554 frodo 12 psiconv_pictures sections;
555     } *psiconv_mbm_f;
556    
557 frodo 163 /* 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 frodo 24 Cuts are always <= 1.0; a cut of 0.0 cuts nothing away, a cut of 1.0
562     cuts everything away. */
563 frodo 56 typedef struct psiconv_sketch_section_s
564     {
565 frodo 163 psiconv_u16 displayed_xsize;
566     psiconv_u16 displayed_ysize;
567     psiconv_u16 picture_data_x_offset;
568     psiconv_u16 picture_data_y_offset;
569 frodo 24 psiconv_u16 form_xsize;
570     psiconv_u16 form_ysize;
571 frodo 163 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 frodo 24 psiconv_paint_data_section picture;
580     } *psiconv_sketch_section;
581    
582 frodo 56 typedef struct psiconv_sketch_f_s
583     {
584 frodo 24 psiconv_sketch_section sketch_sec;
585     } *psiconv_sketch_f;
586    
587 frodo 56 typedef struct psiconv_clipart_section_s
588     {
589 frodo 41 /* Perhaps later on some currently unknown stuff. */
590     psiconv_paint_data_section picture;
591     } * psiconv_clipart_section;
592    
593 frodo 188 typedef psiconv_list psiconv_cliparts; /* of struct psiconv_clipart_section_s */
594 frodo 41
595 frodo 56 typedef struct psiconv_clipart_f_s
596     {
597 frodo 41 psiconv_cliparts sections;
598     } *psiconv_clipart_f;
599    
600 frodo 102 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 frodo 110 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 frodo 111 typedef enum psiconv_sheet_numberformat_code
641 frodo 110 {
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 frodo 122 psiconv_numberformat_date_dmm,
651     psiconv_numberformat_date_mmd,
652 frodo 110 psiconv_numberformat_date_ddmmyy,
653     psiconv_numberformat_date_mmddyy,
654     psiconv_numberformat_date_yymmdd,
655 frodo 122 psiconv_numberformat_date_dmmm,
656     psiconv_numberformat_date_dmmmyy,
657 frodo 110 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 frodo 122 psiconv_numberformat_date_monthnamedyyyy,
663 frodo 110 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 frodo 111 } psiconv_sheet_numberformat_code_t;
674 frodo 110
675 frodo 111 typedef struct psiconv_sheet_numberformat_s
676 frodo 110 {
677 frodo 111 psiconv_sheet_numberformat_code_t code;
678 frodo 110 psiconv_u8 decimal;
679 frodo 111 } *psiconv_sheet_numberformat;
680 frodo 110
681 frodo 111 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 frodo 110 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 frodo 183 psiconv_string_t dat_string;
697 frodo 129 psiconv_bool_t dat_bool;
698     psiconv_sheet_errorcode_t dat_error;
699 frodo 110 } data;
700 frodo 111 psiconv_sheet_cell_layout layout;
701 frodo 110 psiconv_bool_t calculated;
702     psiconv_u32 ref_formula;
703     } *psiconv_sheet_cell;
704    
705 frodo 188 typedef psiconv_list psiconv_sheet_cell_list;
706     /* Of struct psiconv_sheet_cell_s */
707 frodo 110
708 frodo 94 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 frodo 98 typedef enum psiconv_formula_type
724 frodo 97 {
725 frodo 99 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 frodo 107 psiconv_formula_op_not,
740     psiconv_formula_op_and,
741     psiconv_formula_op_or,
742 frodo 99 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 frodo 98 } psiconv_formula_type_t;
860 frodo 97
861 frodo 98 typedef psiconv_list psiconv_formula_list; /* Of struct psiconv_formula_s */
862 frodo 97
863 frodo 98 typedef struct psiconv_formula_s
864     {
865     psiconv_formula_type_t type;
866     union {
867 frodo 99 psiconv_u32 dat_int;
868     double dat_float;
869 frodo 183 psiconv_string_t dat_string;
870 frodo 102 psiconv_sheet_cell_reference_t dat_cellref;
871     psiconv_sheet_cell_block_t dat_cellblock;
872 frodo 99 psiconv_formula_list fun_operands;
873 frodo 129 psiconv_u32 dat_variable;
874 frodo 98 } data;
875     } *psiconv_formula;
876    
877 frodo 128 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 frodo 134 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 frodo 111 typedef struct psiconv_sheet_worksheet_s
923 frodo 110 {
924 frodo 111 psiconv_sheet_cell_layout default_layout;
925 frodo 110 psiconv_sheet_cell_list cells;
926 frodo 111 psiconv_bool_t show_zeros;
927 frodo 128 psiconv_sheet_line_list row_default_layouts;
928     psiconv_sheet_line_list col_default_layouts;
929 frodo 134 psiconv_sheet_grid_section grid;
930 frodo 111 } *psiconv_sheet_worksheet;
931 frodo 110
932 frodo 111 typedef psiconv_list psiconv_sheet_worksheet_list;
933 frodo 129 /* of struct psiconv_sheet_worksheet_s */
934 frodo 111
935 frodo 129 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 frodo 183 psiconv_string_t name;
948 frodo 129 psiconv_variable_type_t type;
949     union {
950     psiconv_s32 dat_int;
951     double dat_float;
952 frodo 183 psiconv_string_t dat_string;
953 frodo 129 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 frodo 183 psiconv_string_t name;
964 frodo 129 } *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 frodo 95 typedef struct psiconv_sheet_workbook_section_s
972     {
973 frodo 98 psiconv_formula_list formulas;
974 frodo 111 psiconv_sheet_worksheet_list worksheets;
975 frodo 129 psiconv_sheet_variable_list variables;
976     psiconv_sheet_info_section info;
977     psiconv_sheet_name_section name;
978 frodo 95 } *psiconv_sheet_workbook_section;
979    
980 frodo 94 typedef struct psiconv_sheet_f_s
981     {
982     psiconv_page_layout_section page_sec;
983     psiconv_sheet_status_section status_sec;
984 frodo 95 psiconv_sheet_workbook_section workbook_sec;
985 frodo 94 } *psiconv_sheet_f;
986    
987 frodo 159 /* NB: psiconv_file is already defined above */
988     struct psiconv_file_s
989 frodo 56 {
990 frodo 2 psiconv_file_type_t type;
991     void *file;
992 frodo 159 };
993 frodo 2
994    
995     /* UID1 */
996     #define PSICONV_ID_PSION5 0x10000037
997 frodo 41 #define PSICONV_ID_CLIPART 0x10000041
998 frodo 2 /* UID2 */
999     #define PSICONV_ID_DATA_FILE 0x1000006D
1000 frodo 12 #define PSICONV_ID_MBM_FILE 0x10000042
1001 frodo 2 /* UID3 */
1002     #define PSICONV_ID_WORD 0x1000007F
1003     #define PSICONV_ID_TEXTED 0x10000085
1004 frodo 24 #define PSICONV_ID_SKETCH 0x1000007D
1005 frodo 94 #define PSICONV_ID_SHEET 0x10000088
1006 frodo 2
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 frodo 24 #define PSICONV_ID_SKETCH_SECTION 0x1000007D
1016 frodo 94 #define PSICONV_ID_SHEET_STATUS_SECTION 0x1000011F
1017 frodo 95 #define PSICONV_ID_SHEET_WORKBOOK_SECTION 0x1000011D
1018 frodo 110 #define PSICONV_ID_SHEET_GRAPH_SECTION 0x10000121
1019 frodo 2
1020     /* Other ids */
1021 frodo 76 #define PSICONV_ID_PAGE_DIMENSIONS1 0x100000fd
1022     #define PSICONV_ID_PAGE_DIMENSIONS2 0x1000010e
1023 frodo 2 #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 frodo 43 #define PSICONV_ID_CLIPART_ITEM 0x10000040
1031 frodo 160 #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 frodo 2
1036    
1037 frodo 62 /* Return a clean layout_status. You can modify it at will. Returns NULL
1038     if there is not enough memory. */
1039 frodo 2 extern psiconv_character_layout psiconv_basic_character_layout(void);
1040    
1041 frodo 62 /* Return a clean layout_status. You can modify it at will. Returns NULL
1042     if there is not enough memory. */
1043 frodo 2 extern psiconv_paragraph_layout psiconv_basic_paragraph_layout(void);
1044    
1045     /* Clone a layout_status: the new copy is completely independent of the
1046 frodo 62 original one. Returns NULL if there is not enough memory. */
1047 frodo 2 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 frodo 62 /* Get a numbered style. Returns NULL if the style is unknown. */
1054 frodo 2 extern psiconv_word_style psiconv_get_style (psiconv_word_styles_section ss, int nr);
1055 frodo 128 /* Get a numbered formula. Returns NULL if the style is unknown. */
1056 frodo 125 extern psiconv_formula psiconv_get_formula (psiconv_formula_list ss, int nr);
1057 frodo 2
1058 frodo 128 /* 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 frodo 2 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 frodo 98 extern void psiconv_free_formula(psiconv_formula formula);
1077     extern void psiconv_free_formula_list(psiconv_formula_list list);
1078 frodo 94 extern void psiconv_free_sheet_status_section
1079     (psiconv_sheet_status_section section);
1080 frodo 111 extern void psiconv_free_sheet_cell_layout(psiconv_sheet_cell_layout layout);
1081 frodo 134 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 frodo 111 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 frodo 94 extern void psiconv_free_sheet_f(psiconv_sheet_f file);
1092 frodo 110 extern void psiconv_free_sheet_cell(psiconv_sheet_cell cell);
1093     extern void psiconv_free_sheet_cell_list(psiconv_sheet_cell_list list);
1094 frodo 111 extern void psiconv_free_sheet_numberformat
1095     (psiconv_sheet_numberformat numberformat);
1096 frodo 128 extern void psiconv_free_sheet_line_list(psiconv_sheet_line_list list);
1097     extern void psiconv_free_sheet_line(psiconv_sheet_line line);
1098 frodo 129 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 frodo 171 extern void psiconv_free_sheet_workbook_section
1103     (psiconv_sheet_workbook_section section);
1104 frodo 2 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 frodo 159 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 frodo 167 extern void psiconv_free_embedded_object_section
1115     (psiconv_embedded_object_section object);
1116 frodo 2 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 frodo 12 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 frodo 42 extern void psiconv_free_jumptable_section
1133     (psiconv_jumptable_section section);
1134 frodo 12 extern void psiconv_free_mbm_f(psiconv_mbm_f file);
1135 frodo 24 extern void psiconv_free_sketch_section(psiconv_sketch_section sec);
1136     extern void psiconv_free_sketch_f(psiconv_sketch_f file);
1137 frodo 41 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 frodo 24
1141 frodo 2 extern void psiconv_free_file(psiconv_file file);
1142    
1143 frodo 78 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 frodo 87 /* Get a newly allocated file with sensible defaults, ready to generate. */
1164     extern psiconv_file psiconv_empty_file(psiconv_file_type_t type);
1165 frodo 78
1166 frodo 87
1167 frodo 55 #ifdef __cplusplus
1168     }
1169     #endif /* __cplusplus */
1170 frodo 2
1171     #endif /* def PSICONV_DATA_H */

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