/[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 188 - (hide annotations)
Mon Jan 26 12:59:54 2004 UTC (20 years, 3 months ago) by frodo
File MIME type: text/plain
File size: 44249 byte(s)
(Frodo) Oops, forgot about image.c

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     Outline level is zero if unused. */
480 frodo 56 typedef struct psiconv_word_style_s
481 frodo 2 {
482 frodo 188 psiconv_character_layout character; /* character-level layout */
483     psiconv_paragraph_layout paragraph; /* paragraph-level layout */
484     psiconv_ucs2 hotkey; /* The hotkey */
485     psiconv_string_t name; /* Style name */
486     psiconv_bool_t built_in; /* Builtin style? */
487     psiconv_u32 outline_level; /* Outline level */
488 frodo 2 } *psiconv_word_style;
489    
490 frodo 188 /* A list of Word Styles */
491     typedef psiconv_list psiconv_word_style_list;
492     /* Of struct psiconv_word_style_s */
493 frodo 2
494 frodo 188 /* A Word Styles Section
495     All information about styles. */
496 frodo 56 typedef struct psiconv_word_styles_section_s
497 frodo 2 {
498 frodo 188 psiconv_word_style normal; /* The normal (unspecified) style */
499     psiconv_word_style_list styles; /* All other defined styles */
500 frodo 2 } *psiconv_word_styles_section;
501    
502 frodo 188 /* A Word File
503     All information about a Word File.
504     Note that a section can be NULL if it is not present. */
505 frodo 56 typedef struct psiconv_word_f_s
506     {
507 frodo 188 psiconv_page_layout_section page_sec; /* Page layout */
508     psiconv_text_and_layout paragraphs; /* Text and text layout */
509     psiconv_word_status_section status_sec; /* Internal Word program settings */
510     psiconv_word_styles_section styles_sec; /* Styles */
511 frodo 2 } *psiconv_word_f;
512    
513 frodo 188 /* A TextEd File
514     All information about a TextEd File.
515     Note that a section can be NULL if it is not present. */
516 frodo 56 typedef struct psiconv_texted_f_s
517     {
518 frodo 188 psiconv_page_layout_section page_sec; /* Page layout */
519     psiconv_texted_section texted_sec; /* Text and text layout */
520 frodo 2 } *psiconv_texted_f;
521    
522 frodo 188 /* A Jumptable Section.
523     A simple list of offsets.
524     This is never included in a regular psiconv_file structure, as the
525     information is too low-level. It is used internally, though. */
526 frodo 42 typedef psiconv_list psiconv_jumptable_section; /* of psiconv_u32 */
527 frodo 12
528 frodo 188 /* A Paint Data Section
529     A collection of pixels.
530     Normalized values [0..1] for each color component.
531 frodo 11 Origin is (x,y)=(0,0), to get pixel at (X,Y) use index [Y*xsize+X] */
532 frodo 56 typedef struct psiconv_paint_data_section_s
533     {
534 frodo 188 psiconv_u32 xsize; /* Number of pixels in a row */
535     psiconv_u32 ysize; /* Number of pixels in a column */
536 frodo 25 psiconv_length_t pic_xsize; /* 0 if not specified */
537     psiconv_length_t pic_ysize; /* 0 if not specified */
538 frodo 188 float *red;
539 frodo 11 float *green;
540     float *blue;
541     } *psiconv_paint_data_section;
542    
543 frodo 188 /* A collection of Paint Data Sections */
544 frodo 12 typedef psiconv_list psiconv_pictures;
545 frodo 188 /* of struct psiconv_paint_data_section_s */
546 frodo 12
547 frodo 188 /* A MBM file
548     All information about a MBM file
549     MBM files contain one or more pictures. */
550 frodo 56 typedef struct psiconv_mbm_f_s
551     {
552 frodo 12 psiconv_pictures sections;
553     } *psiconv_mbm_f;
554    
555 frodo 163 /* Read the Psiconv file format documentation for a complete discription.
556     Basic idea: a picture has a certain display size. Within it, the pixel
557     data begins at a certain offset. Around it, there is an empty form.
558     The first eight values are before magnification and cuts.
559 frodo 24 Cuts are always <= 1.0; a cut of 0.0 cuts nothing away, a cut of 1.0
560     cuts everything away. */
561 frodo 56 typedef struct psiconv_sketch_section_s
562     {
563 frodo 163 psiconv_u16 displayed_xsize;
564     psiconv_u16 displayed_ysize;
565     psiconv_u16 picture_data_x_offset;
566     psiconv_u16 picture_data_y_offset;
567 frodo 24 psiconv_u16 form_xsize;
568     psiconv_u16 form_ysize;
569 frodo 163 psiconv_u16 displayed_size_x_offset;
570     psiconv_u16 displayed_size_y_offset;
571     float magnification_x; /* computed relative to first eight values */
572     float magnification_y; /* computed relative to first eight values */
573     float cut_left; /* computed relative to first eight values */
574     float cut_right; /* computed relative to first eight values */
575     float cut_top; /* computed relative to first eight values */
576     float cut_bottom; /* computed relative to first eight values */
577 frodo 24 psiconv_paint_data_section picture;
578     } *psiconv_sketch_section;
579    
580 frodo 56 typedef struct psiconv_sketch_f_s
581     {
582 frodo 24 psiconv_sketch_section sketch_sec;
583     } *psiconv_sketch_f;
584    
585 frodo 56 typedef struct psiconv_clipart_section_s
586     {
587 frodo 41 /* Perhaps later on some currently unknown stuff. */
588     psiconv_paint_data_section picture;
589     } * psiconv_clipart_section;
590    
591 frodo 188 typedef psiconv_list psiconv_cliparts; /* of struct psiconv_clipart_section_s */
592 frodo 41
593 frodo 56 typedef struct psiconv_clipart_f_s
594     {
595 frodo 41 psiconv_cliparts sections;
596     } *psiconv_clipart_f;
597    
598 frodo 102 typedef struct psiconv_sheet_ref_s
599     {
600     psiconv_s16 offset;
601     psiconv_bool_t absolute;
602     } psiconv_sheet_ref_t;
603    
604     typedef struct psiconv_sheet_cell_reference_s
605     {
606     psiconv_sheet_ref_t row;
607     psiconv_sheet_ref_t column;
608     } psiconv_sheet_cell_reference_t;
609    
610     typedef struct psiconv_sheet_cell_block_s
611     {
612     psiconv_sheet_cell_reference_t first;
613     psiconv_sheet_cell_reference_t last;
614     } psiconv_sheet_cell_block_t;
615    
616 frodo 110 typedef enum psiconv_cell_type
617     {
618     psiconv_cell_blank,
619     psiconv_cell_int,
620     psiconv_cell_bool,
621     psiconv_cell_error,
622     psiconv_cell_float,
623     psiconv_cell_string
624     } psiconv_cell_type_t;
625    
626     typedef enum psiconv_sheet_errorcode
627     {
628     psiconv_sheet_error_none,
629     psiconv_sheet_error_null,
630     psiconv_sheet_error_divzero,
631     psiconv_sheet_error_value,
632     psiconv_sheet_error_reference,
633     psiconv_sheet_error_name,
634     psiconv_sheet_error_number,
635     psiconv_sheet_error_notavail
636     } psiconv_sheet_errorcode_t;
637    
638 frodo 111 typedef enum psiconv_sheet_numberformat_code
639 frodo 110 {
640     psiconv_numberformat_general,
641     psiconv_numberformat_fixeddecimal,
642     psiconv_numberformat_scientific,
643     psiconv_numberformat_currency,
644     psiconv_numberformat_percent,
645     psiconv_numberformat_triads,
646     psiconv_numberformat_boolean,
647     psiconv_numberformat_text,
648 frodo 122 psiconv_numberformat_date_dmm,
649     psiconv_numberformat_date_mmd,
650 frodo 110 psiconv_numberformat_date_ddmmyy,
651     psiconv_numberformat_date_mmddyy,
652     psiconv_numberformat_date_yymmdd,
653 frodo 122 psiconv_numberformat_date_dmmm,
654     psiconv_numberformat_date_dmmmyy,
655 frodo 110 psiconv_numberformat_date_ddmmmyy,
656     psiconv_numberformat_date_mmm,
657     psiconv_numberformat_date_monthname,
658     psiconv_numberformat_date_mmmyy,
659     psiconv_numberformat_date_monthnameyy,
660 frodo 122 psiconv_numberformat_date_monthnamedyyyy,
661 frodo 110 psiconv_numberformat_datetime_ddmmyyyyhhii,
662     psiconv_numberformat_datetime_ddmmyyyyHHii,
663     psiconv_numberformat_datetime_mmddyyyyhhii,
664     psiconv_numberformat_datetime_mmddyyyyHHii,
665     psiconv_numberformat_datetime_yyyymmddhhii,
666     psiconv_numberformat_datetime_yyyymmddHHii,
667     psiconv_numberformat_time_hhii,
668     psiconv_numberformat_time_hhiiss,
669     psiconv_numberformat_time_HHii,
670     psiconv_numberformat_time_HHiiss
671 frodo 111 } psiconv_sheet_numberformat_code_t;
672 frodo 110
673 frodo 111 typedef struct psiconv_sheet_numberformat_s
674 frodo 110 {
675 frodo 111 psiconv_sheet_numberformat_code_t code;
676 frodo 110 psiconv_u8 decimal;
677 frodo 111 } *psiconv_sheet_numberformat;
678 frodo 110
679 frodo 111 typedef struct psiconv_sheet_cell_layout_s
680     {
681     psiconv_character_layout character;
682     psiconv_paragraph_layout paragraph;
683     psiconv_sheet_numberformat numberformat;
684     } * psiconv_sheet_cell_layout;
685    
686 frodo 110 typedef struct psiconv_sheet_cell_s
687     {
688     psiconv_u16 column;
689     psiconv_u16 row;
690     psiconv_cell_type_t type;
691     union {
692     psiconv_u32 dat_int;
693     double dat_float;
694 frodo 183 psiconv_string_t dat_string;
695 frodo 129 psiconv_bool_t dat_bool;
696     psiconv_sheet_errorcode_t dat_error;
697 frodo 110 } data;
698 frodo 111 psiconv_sheet_cell_layout layout;
699 frodo 110 psiconv_bool_t calculated;
700     psiconv_u32 ref_formula;
701     } *psiconv_sheet_cell;
702    
703 frodo 188 typedef psiconv_list psiconv_sheet_cell_list;
704     /* Of struct psiconv_sheet_cell_s */
705 frodo 110
706 frodo 94 typedef struct psiconv_sheet_status_section_s
707     {
708     psiconv_bool_t show_graph;
709     psiconv_u32 cursor_row;
710     psiconv_u32 cursor_column;
711     psiconv_bool_t show_top_sheet_toolbar;
712     psiconv_bool_t show_side_sheet_toolbar;
713     psiconv_bool_t show_top_graph_toolbar;
714     psiconv_bool_t show_side_graph_toolbar;
715     psiconv_u32 sheet_display_size;
716     psiconv_u32 graph_display_size;
717     psiconv_triple_t show_horizontal_scrollbar;
718     psiconv_triple_t show_vertical_scrollbar;
719     } *psiconv_sheet_status_section;
720    
721 frodo 98 typedef enum psiconv_formula_type
722 frodo 97 {
723 frodo 99 psiconv_formula_unknown,
724     psiconv_formula_op_lt,
725     psiconv_formula_op_le,
726     psiconv_formula_op_gt,
727     psiconv_formula_op_ge,
728     psiconv_formula_op_ne,
729     psiconv_formula_op_eq,
730     psiconv_formula_op_add,
731     psiconv_formula_op_sub,
732     psiconv_formula_op_mul,
733     psiconv_formula_op_div,
734     psiconv_formula_op_pow,
735     psiconv_formula_op_pos,
736     psiconv_formula_op_neg,
737 frodo 107 psiconv_formula_op_not,
738     psiconv_formula_op_and,
739     psiconv_formula_op_or,
740 frodo 99 psiconv_formula_op_con,
741     psiconv_formula_op_bra,
742     psiconv_formula_mark_eof,
743     psiconv_formula_dat_float,
744     psiconv_formula_dat_int,
745     psiconv_formula_dat_var,
746     psiconv_formula_dat_string,
747     psiconv_formula_dat_cellref,
748     psiconv_formula_dat_cellblock,
749     psiconv_formula_dat_vcellblock,
750     psiconv_formula_mark_opsep,
751     psiconv_formula_mark_opend,
752     psiconv_formula_fun_false,
753     psiconv_formula_fun_if,
754     psiconv_formula_fun_true,
755     psiconv_formula_fun_cell,
756     psiconv_formula_fun_errortype,
757     psiconv_formula_fun_isblank,
758     psiconv_formula_fun_iserr,
759     psiconv_formula_fun_iserror,
760     psiconv_formula_fun_islogical,
761     psiconv_formula_fun_isna,
762     psiconv_formula_fun_isnontext,
763     psiconv_formula_fun_isnumber,
764     psiconv_formula_fun_istext,
765     psiconv_formula_fun_n,
766     psiconv_formula_fun_type,
767     psiconv_formula_fun_address,
768     psiconv_formula_fun_column,
769     psiconv_formula_fun_columns,
770     psiconv_formula_fun_hlookup,
771     psiconv_formula_fun_index,
772     psiconv_formula_fun_indirect,
773     psiconv_formula_fun_lookup,
774     psiconv_formula_fun_offset,
775     psiconv_formula_fun_row,
776     psiconv_formula_fun_rows,
777     psiconv_formula_fun_vlookup,
778     psiconv_formula_fun_char,
779     psiconv_formula_fun_code,
780     psiconv_formula_fun_exact,
781     psiconv_formula_fun_find,
782     psiconv_formula_fun_left,
783     psiconv_formula_fun_len,
784     psiconv_formula_fun_lower,
785     psiconv_formula_fun_mid,
786     psiconv_formula_fun_proper,
787     psiconv_formula_fun_replace,
788     psiconv_formula_fun_rept,
789     psiconv_formula_fun_right,
790     psiconv_formula_fun_string,
791     psiconv_formula_fun_t,
792     psiconv_formula_fun_trim,
793     psiconv_formula_fun_upper,
794     psiconv_formula_fun_value,
795     psiconv_formula_fun_date,
796     psiconv_formula_fun_datevalue,
797     psiconv_formula_fun_day,
798     psiconv_formula_fun_hour,
799     psiconv_formula_fun_minute,
800     psiconv_formula_fun_month,
801     psiconv_formula_fun_now,
802     psiconv_formula_fun_second,
803     psiconv_formula_fun_today,
804     psiconv_formula_fun_time,
805     psiconv_formula_fun_timevalue,
806     psiconv_formula_fun_year,
807     psiconv_formula_fun_abs,
808     psiconv_formula_fun_acos,
809     psiconv_formula_fun_asin,
810     psiconv_formula_fun_atan,
811     psiconv_formula_fun_atan2,
812     psiconv_formula_fun_cos,
813     psiconv_formula_fun_degrees,
814     psiconv_formula_fun_exp,
815     psiconv_formula_fun_fact,
816     psiconv_formula_fun_int,
817     psiconv_formula_fun_ln,
818     psiconv_formula_fun_log10,
819     psiconv_formula_fun_mod,
820     psiconv_formula_fun_pi,
821     psiconv_formula_fun_radians,
822     psiconv_formula_fun_rand,
823     psiconv_formula_fun_round,
824     psiconv_formula_fun_sign,
825     psiconv_formula_fun_sin,
826     psiconv_formula_fun_sqrt,
827     psiconv_formula_fun_sumproduct,
828     psiconv_formula_fun_tan,
829     psiconv_formula_fun_trunc,
830     psiconv_formula_fun_cterm,
831     psiconv_formula_fun_ddb,
832     psiconv_formula_fun_fv,
833     psiconv_formula_fun_irr,
834     psiconv_formula_fun_npv,
835     psiconv_formula_fun_pmt,
836     psiconv_formula_fun_pv,
837     psiconv_formula_fun_rate,
838     psiconv_formula_fun_sln,
839     psiconv_formula_fun_syd,
840     psiconv_formula_fun_term,
841     psiconv_formula_fun_combin,
842     psiconv_formula_fun_permut,
843     psiconv_formula_vfn_average,
844     psiconv_formula_vfn_choose,
845     psiconv_formula_vfn_count,
846     psiconv_formula_vfn_counta,
847     psiconv_formula_vfn_countblank,
848     psiconv_formula_vfn_max,
849     psiconv_formula_vfn_min,
850     psiconv_formula_vfn_product,
851     psiconv_formula_vfn_stdevp,
852     psiconv_formula_vfn_stdev,
853     psiconv_formula_vfn_sum,
854     psiconv_formula_vfn_sumsq,
855     psiconv_formula_vfn_varp,
856     psiconv_formula_vfn_var
857 frodo 98 } psiconv_formula_type_t;
858 frodo 97
859 frodo 98 typedef psiconv_list psiconv_formula_list; /* Of struct psiconv_formula_s */
860 frodo 97
861 frodo 98 typedef struct psiconv_formula_s
862     {
863     psiconv_formula_type_t type;
864     union {
865 frodo 99 psiconv_u32 dat_int;
866     double dat_float;
867 frodo 183 psiconv_string_t dat_string;
868 frodo 102 psiconv_sheet_cell_reference_t dat_cellref;
869     psiconv_sheet_cell_block_t dat_cellblock;
870 frodo 99 psiconv_formula_list fun_operands;
871 frodo 129 psiconv_u32 dat_variable;
872 frodo 98 } data;
873     } *psiconv_formula;
874    
875 frodo 128 typedef struct psiconv_sheet_line_s
876     {
877     psiconv_u32 position;
878     psiconv_sheet_cell_layout layout;
879     } *psiconv_sheet_line;
880    
881     typedef psiconv_list psiconv_sheet_line_list;
882     /* Of struct psiconv_sheet_line_s */
883    
884 frodo 134 typedef struct psiconv_sheet_grid_size_s
885     {
886     psiconv_u32 line_number;
887     psiconv_length_t size;
888     } *psiconv_sheet_grid_size;
889    
890     typedef psiconv_list psiconv_sheet_grid_size_list;
891     /* Of struct psiconv_sheet_grid_size_s */
892    
893     typedef psiconv_list psiconv_sheet_grid_break_list; /* of psiconv_u32 */
894    
895     typedef struct psiconv_sheet_grid_section_s
896     {
897     psiconv_bool_t show_column_titles;
898     psiconv_bool_t show_row_titles;
899     psiconv_bool_t show_vertical_grid;
900     psiconv_bool_t show_horizontal_grid;
901     psiconv_bool_t freeze_rows;
902     psiconv_bool_t freeze_columns;
903     psiconv_u32 frozen_rows;
904     psiconv_u32 frozen_columns;
905     psiconv_u32 first_unfrozen_row_displayed;
906     psiconv_u32 first_unfrozen_column_displayed;
907     psiconv_bool_t show_page_breaks;
908     psiconv_u32 first_row;
909     psiconv_u32 first_column;
910     psiconv_u32 last_row;
911     psiconv_u32 last_column;
912     psiconv_length_t default_row_height;
913     psiconv_length_t default_column_width;
914     psiconv_sheet_grid_size_list row_heights;
915     psiconv_sheet_grid_size_list column_heights;
916     psiconv_sheet_grid_break_list row_page_breaks;
917     psiconv_sheet_grid_break_list column_page_breaks;
918     } *psiconv_sheet_grid_section;
919    
920 frodo 111 typedef struct psiconv_sheet_worksheet_s
921 frodo 110 {
922 frodo 111 psiconv_sheet_cell_layout default_layout;
923 frodo 110 psiconv_sheet_cell_list cells;
924 frodo 111 psiconv_bool_t show_zeros;
925 frodo 128 psiconv_sheet_line_list row_default_layouts;
926     psiconv_sheet_line_list col_default_layouts;
927 frodo 134 psiconv_sheet_grid_section grid;
928 frodo 111 } *psiconv_sheet_worksheet;
929 frodo 110
930 frodo 111 typedef psiconv_list psiconv_sheet_worksheet_list;
931 frodo 129 /* of struct psiconv_sheet_worksheet_s */
932 frodo 111
933 frodo 129 typedef enum psiconv_variable_type
934     {
935     psiconv_var_int,
936     psiconv_var_float,
937     psiconv_var_string,
938     psiconv_var_cellref,
939     psiconv_var_cellblock
940     } psiconv_variable_type_t;
941    
942     typedef struct psiconv_sheet_variable_s
943     {
944     psiconv_u32 number;
945 frodo 183 psiconv_string_t name;
946 frodo 129 psiconv_variable_type_t type;
947     union {
948     psiconv_s32 dat_int;
949     double dat_float;
950 frodo 183 psiconv_string_t dat_string;
951 frodo 129 psiconv_sheet_cell_reference_t dat_cellref;
952     psiconv_sheet_cell_block_t dat_cellblock;
953     } data;
954     } *psiconv_sheet_variable;
955    
956     typedef psiconv_list psiconv_sheet_variable_list;
957     /* of struct psiconv_sheet_variable_s */
958    
959     typedef struct psiconv_sheet_name_section_s
960     {
961 frodo 183 psiconv_string_t name;
962 frodo 129 } *psiconv_sheet_name_section;
963    
964     typedef struct psiconv_sheet_info_section_s
965     {
966     psiconv_bool_t auto_recalc;
967     } *psiconv_sheet_info_section;
968    
969 frodo 95 typedef struct psiconv_sheet_workbook_section_s
970     {
971 frodo 98 psiconv_formula_list formulas;
972 frodo 111 psiconv_sheet_worksheet_list worksheets;
973 frodo 129 psiconv_sheet_variable_list variables;
974     psiconv_sheet_info_section info;
975     psiconv_sheet_name_section name;
976 frodo 95 } *psiconv_sheet_workbook_section;
977    
978 frodo 94 typedef struct psiconv_sheet_f_s
979     {
980     psiconv_page_layout_section page_sec;
981     psiconv_sheet_status_section status_sec;
982 frodo 95 psiconv_sheet_workbook_section workbook_sec;
983 frodo 94 } *psiconv_sheet_f;
984    
985 frodo 159 /* NB: psiconv_file is already defined above */
986     struct psiconv_file_s
987 frodo 56 {
988 frodo 2 psiconv_file_type_t type;
989     void *file;
990 frodo 159 };
991 frodo 2
992    
993     /* UID1 */
994     #define PSICONV_ID_PSION5 0x10000037
995 frodo 41 #define PSICONV_ID_CLIPART 0x10000041
996 frodo 2 /* UID2 */
997     #define PSICONV_ID_DATA_FILE 0x1000006D
998 frodo 12 #define PSICONV_ID_MBM_FILE 0x10000042
999 frodo 2 /* UID3 */
1000     #define PSICONV_ID_WORD 0x1000007F
1001     #define PSICONV_ID_TEXTED 0x10000085
1002 frodo 24 #define PSICONV_ID_SKETCH 0x1000007D
1003 frodo 94 #define PSICONV_ID_SHEET 0x10000088
1004 frodo 2
1005     /* Section table ids */
1006     #define PSICONV_ID_WORD_STATUS_SECTION 0x10000243
1007     #define PSICONV_ID_APPL_ID_SECTION 0x10000089
1008     #define PSICONV_ID_TEXT_SECTION 0x10000106
1009     #define PSICONV_ID_LAYOUT_SECTION 0x10000143
1010     #define PSICONV_ID_WORD_STYLES_SECTION 0x10000104
1011     #define PSICONV_ID_PAGE_LAYOUT_SECTION 0x10000105
1012     #define PSICONV_ID_PASSWORD_SECTION 0x100000CD
1013 frodo 24 #define PSICONV_ID_SKETCH_SECTION 0x1000007D
1014 frodo 94 #define PSICONV_ID_SHEET_STATUS_SECTION 0x1000011F
1015 frodo 95 #define PSICONV_ID_SHEET_WORKBOOK_SECTION 0x1000011D
1016 frodo 110 #define PSICONV_ID_SHEET_GRAPH_SECTION 0x10000121
1017 frodo 2
1018     /* Other ids */
1019 frodo 76 #define PSICONV_ID_PAGE_DIMENSIONS1 0x100000fd
1020     #define PSICONV_ID_PAGE_DIMENSIONS2 0x1000010e
1021 frodo 2 #define PSICONV_ID_TEXTED_BODY 0x1000005c
1022     #define PSICONV_ID_TEXTED_REPLACEMENT 0x10000063
1023     #define PSICONV_ID_TEXTED_UNKNOWN 0x10000065
1024     #define PSICONV_ID_TEXTED_LAYOUT 0x10000066
1025     #define PSICONV_ID_TEXTED_TEXT 0x10000064
1026     #define PSICONV_ID_STYLE_REMOVABLE 0x1000004F
1027     #define PSICONV_ID_STYLE_BUILT_IN 0x1000004C
1028 frodo 43 #define PSICONV_ID_CLIPART_ITEM 0x10000040
1029 frodo 160 #define PSICONV_ID_OBJECT 0x10000051
1030     #define PSICONV_ID_OBJECT_DISPLAY_SECTION 0x10000146
1031     #define PSICONV_ID_OBJECT_ICON_SECTION 0x1000012A
1032     #define PSICONV_ID_OBJECT_SECTION_TABLE_SECTION 0x10000144
1033 frodo 2
1034    
1035 frodo 62 /* Return a clean layout_status. You can modify it at will. Returns NULL
1036     if there is not enough memory. */
1037 frodo 2 extern psiconv_character_layout psiconv_basic_character_layout(void);
1038    
1039 frodo 62 /* Return a clean layout_status. You can modify it at will. Returns NULL
1040     if there is not enough memory. */
1041 frodo 2 extern psiconv_paragraph_layout psiconv_basic_paragraph_layout(void);
1042    
1043     /* Clone a layout_status: the new copy is completely independent of the
1044 frodo 62 original one. Returns NULL if there is not enough memory. */
1045 frodo 2 extern psiconv_paragraph_layout psiconv_clone_paragraph_layout
1046     (psiconv_paragraph_layout ls);
1047    
1048     extern psiconv_character_layout psiconv_clone_character_layout
1049     (psiconv_character_layout ls);
1050    
1051 frodo 62 /* Get a numbered style. Returns NULL if the style is unknown. */
1052 frodo 2 extern psiconv_word_style psiconv_get_style (psiconv_word_styles_section ss, int nr);
1053 frodo 128 /* Get a numbered formula. Returns NULL if the style is unknown. */
1054 frodo 125 extern psiconv_formula psiconv_get_formula (psiconv_formula_list ss, int nr);
1055 frodo 2
1056 frodo 128 /* Return the default layout */
1057     extern psiconv_sheet_cell_layout psiconv_get_default_layout
1058     (psiconv_sheet_line_list row_defaults,
1059     psiconv_sheet_line_list col_defaults,
1060     psiconv_sheet_cell_layout cell_default,
1061     int row,int col);
1062    
1063 frodo 2 extern void psiconv_free_color(psiconv_color color);
1064     extern void psiconv_free_border(psiconv_border border);
1065     extern void psiconv_free_bullet(psiconv_bullet bullet);
1066     extern void psiconv_free_font(psiconv_font font);
1067     extern void psiconv_free_tab(psiconv_tab tab);
1068     extern void psiconv_free_tabs(psiconv_all_tabs tabs);
1069     extern void psiconv_free_paragraph_layout(psiconv_paragraph_layout layout);
1070     extern void psiconv_free_character_layout(psiconv_character_layout layout);
1071     extern void psiconv_free_word_style(psiconv_word_style style);
1072     extern void psiconv_free_word_styles_section
1073     (psiconv_word_styles_section styles);
1074 frodo 98 extern void psiconv_free_formula(psiconv_formula formula);
1075     extern void psiconv_free_formula_list(psiconv_formula_list list);
1076 frodo 94 extern void psiconv_free_sheet_status_section
1077     (psiconv_sheet_status_section section);
1078 frodo 111 extern void psiconv_free_sheet_cell_layout(psiconv_sheet_cell_layout layout);
1079 frodo 134 extern void psiconv_free_sheet_grid_break_list
1080     (psiconv_sheet_grid_break_list list);
1081     extern void psiconv_free_sheet_grid_size(psiconv_sheet_grid_size s);
1082     extern void psiconv_free_sheet_grid_size_list
1083     (psiconv_sheet_grid_size_list list);
1084     extern void psiconv_free_sheet_grid_section(psiconv_sheet_grid_section sec);
1085 frodo 111 extern void psiconv_free_sheet_worksheet(psiconv_sheet_worksheet sheet);
1086     extern void psiconv_free_sheet_worksheet_list
1087     (psiconv_sheet_worksheet_list list);
1088    
1089 frodo 94 extern void psiconv_free_sheet_f(psiconv_sheet_f file);
1090 frodo 110 extern void psiconv_free_sheet_cell(psiconv_sheet_cell cell);
1091     extern void psiconv_free_sheet_cell_list(psiconv_sheet_cell_list list);
1092 frodo 111 extern void psiconv_free_sheet_numberformat
1093     (psiconv_sheet_numberformat numberformat);
1094 frodo 128 extern void psiconv_free_sheet_line_list(psiconv_sheet_line_list list);
1095     extern void psiconv_free_sheet_line(psiconv_sheet_line line);
1096 frodo 129 extern void psiconv_free_sheet_name_section(psiconv_sheet_name_section section);
1097     extern void psiconv_free_sheet_variable(psiconv_sheet_variable list);
1098     extern void psiconv_free_sheet_variable_list(psiconv_sheet_variable_list list);
1099     extern void psiconv_free_sheet_info_section(psiconv_sheet_info_section section);
1100 frodo 171 extern void psiconv_free_sheet_workbook_section
1101     (psiconv_sheet_workbook_section section);
1102 frodo 2 extern void psiconv_free_header_section(psiconv_header_section header);
1103     extern void psiconv_free_section_table_entry(psiconv_section_table_entry entry);
1104     extern void psiconv_free_section_table_section
1105     (psiconv_section_table_section section);
1106     extern void psiconv_free_application_id_section
1107     (psiconv_application_id_section section);
1108 frodo 159 extern void psiconv_free_object_display_section
1109     (psiconv_object_display_section section);
1110     extern void psiconv_free_object_icon_section
1111     (psiconv_object_icon_section section);
1112 frodo 167 extern void psiconv_free_embedded_object_section
1113     (psiconv_embedded_object_section object);
1114 frodo 2 extern void psiconv_free_in_line_layout(psiconv_in_line_layout layout);
1115     extern void psiconv_free_in_line_layouts(psiconv_in_line_layouts layouts);
1116     extern void psiconv_free_replacement(psiconv_replacement replacement);
1117     extern void psiconv_free_replacements(psiconv_replacements replacements);
1118     extern void psiconv_free_paragraph(psiconv_paragraph paragraph);
1119     extern void psiconv_free_text_and_layout(psiconv_text_and_layout text);
1120     extern void psiconv_free_texted_section(psiconv_texted_section section);
1121     extern void psiconv_free_page_header(psiconv_page_header header);
1122     extern void psiconv_free_page_layout_section
1123     (psiconv_page_layout_section section);
1124     extern void psiconv_free_word_status_section
1125     (psiconv_word_status_section section);
1126     extern void psiconv_free_word_f(psiconv_word_f file);
1127 frodo 12 extern void psiconv_free_texted_f(psiconv_texted_f file);
1128     extern void psiconv_free_paint_data_section(psiconv_paint_data_section section);
1129     extern void psiconv_free_pictures(psiconv_pictures section);
1130 frodo 42 extern void psiconv_free_jumptable_section
1131     (psiconv_jumptable_section section);
1132 frodo 12 extern void psiconv_free_mbm_f(psiconv_mbm_f file);
1133 frodo 24 extern void psiconv_free_sketch_section(psiconv_sketch_section sec);
1134     extern void psiconv_free_sketch_f(psiconv_sketch_f file);
1135 frodo 41 extern void psiconv_free_clipart_section(psiconv_clipart_section section);
1136     extern void psiconv_free_cliparts(psiconv_cliparts section);
1137     extern void psiconv_free_clipart_f(psiconv_clipart_f file);
1138 frodo 24
1139 frodo 2 extern void psiconv_free_file(psiconv_file file);
1140    
1141 frodo 78 extern int psiconv_compare_color(const psiconv_color value1,
1142     const psiconv_color value2);
1143     extern int psiconv_compare_font(const psiconv_font value1,
1144     const psiconv_font value2);
1145     extern int psiconv_compare_border(const psiconv_border value1,
1146     const psiconv_border value2);
1147     extern int psiconv_compare_bullet(const psiconv_bullet value1,
1148     const psiconv_bullet value2);
1149     extern int psiconv_compare_tab(const psiconv_tab value1,
1150     const psiconv_tab value2);
1151     extern int psiconv_compare_all_tabs(const psiconv_all_tabs value1,
1152     const psiconv_all_tabs value2);
1153     extern int psiconv_compare_paragraph_layout
1154     (const psiconv_paragraph_layout value1,
1155     const psiconv_paragraph_layout value2);
1156    
1157     extern int psiconv_compare_character_layout
1158     (const psiconv_character_layout value1,
1159     const psiconv_character_layout value2);
1160    
1161 frodo 87 /* Get a newly allocated file with sensible defaults, ready to generate. */
1162     extern psiconv_file psiconv_empty_file(psiconv_file_type_t type);
1163 frodo 78
1164 frodo 87
1165 frodo 55 #ifdef __cplusplus
1166     }
1167     #endif /* __cplusplus */
1168 frodo 2
1169     #endif /* def PSICONV_DATA_H */

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