/[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 351 - (hide annotations)
Wed Oct 22 19:53:40 2014 UTC (9 years, 5 months ago) by frodo
File MIME type: text/plain
File size: 45141 byte(s)
(Frodo) Update copyright year in all source files

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

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