/[public]/psiconv/trunk/lib/psiconv/data.h
ViewVC logotype

Diff of /psiconv/trunk/lib/psiconv/data.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 128 Revision 196
1/* 1/*
2 data.h - Part of psiconv, a PSION 5 file formats converter 2 data.h - Part of psiconv, a PSION 5 file formats converter
3 Copyright (c) 1999, 2000 Frodo Looijaard <frodol@dds.nl> 3 Copyright (c) 1999-2004 Frodo Looijaard <frodol@dds.nl>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18*/ 18*/
19 19
20/* This file contains the declarations of all types that are used to 20/* This file contains the declarations of all types that are used to
21 represent the Word file. Variables of these types are written by the 21 represent the Psion files. Variables of these types are written by the
22 parse routines, and read by the generation routines. */ 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. */
23 26
24#ifndef PSICONV_DATA_H 27#ifndef PSICONV_DATA_H
25#define PSICONV_DATA_H 28#define PSICONV_DATA_H
26 29
27#include <psiconv/general.h> 30#include <psiconv/general.h>
28#include <psiconv/list.h> 31#include <psiconv/list.h>
29 32
30/* All types which end on _t are plain types; all other types are pointers 33/* All types which end on _t are plain types; all other types are pointers
31 to structs */ 34 to structs. */
32 35
33#ifdef __cplusplus 36#ifdef __cplusplus
34extern "C" { 37extern "C" {
35#endif /* __cplusplus */ 38#endif /* __cplusplus */
36 39
40/* Forward declaration (for psiconv_embedded_object_section) */
41typedef struct psiconv_file_s *psiconv_file;
42
43
44/* Enums and simple types */
45
46
47/* Floating point number representation */
37typedef double psiconv_float_t; 48typedef double psiconv_float_t;
38 49
50/* The supported file types. */
39typedef enum psiconv_file_type { 51typedef enum psiconv_file_type {
40 psiconv_unknown_file, 52 psiconv_unknown_file,
41 psiconv_word_file, 53 psiconv_word_file,
42 psiconv_texted_file, 54 psiconv_texted_file,
43 psiconv_mbm_file, 55 psiconv_mbm_file,
44 psiconv_sketch_file, 56 psiconv_sketch_file,
45 psiconv_clipart_file, 57 psiconv_clipart_file,
46 psiconv_sheet_file 58 psiconv_sheet_file
47} psiconv_file_type_t; 59} psiconv_file_type_t;
48 60
49/* Length indicators */ 61/* String representation. A string is an array of UCS2 characters, terminated
62 by a 0. So they are just like normal C strings, except that they are built
63 of psiconv_ucs2 elements instead of char elements.
64 The psiconv_ucs2 type holds 16 bits; see unicode.h for more information. */
50typedef psiconv_u32 psiconv_S_t; 65typedef psiconv_ucs2 *psiconv_string_t;
51typedef psiconv_u32 psiconv_X_t;
52 66
53/* A string */ 67/* Represent lengths (in centimeters) and sizes (in points).
54typedef char *psiconv_string_t;
55
56/* In the Psion file, these are identical; but we translate them to more 68 In the Psion file, these are identical; but we translate them to more
57 human-readable quantities */ 69 human-readable quantities */
58typedef float psiconv_length_t; /* For offsets in centimeters */ 70typedef float psiconv_length_t; /* For offsets in centimeters */
59typedef float psiconv_size_t; /* For sizes in points */ 71typedef float psiconv_size_t; /* For sizes in points */
60 72
61/* Some enums */ 73/* Represent booleans. As false is zero in the enum, you can still do things
74 like { if (test) ... } instead of { if (test == psiconv_bool_true) ... }.
75 Choose whatever style suits you best. */
62typedef enum psiconv_bool 76typedef enum psiconv_bool
63{ 77{
64 psiconv_bool_false, 78 psiconv_bool_false,
65 psiconv_bool_true 79 psiconv_bool_true
66} psiconv_bool_t; 80} psiconv_bool_t;
67 81
82/* Some kind of three-valued boolean, used at several places. */
68typedef enum psiconv_triple 83typedef enum psiconv_triple
69{ 84{
70 psiconv_triple_on, 85 psiconv_triple_on,
71 psiconv_triple_off, 86 psiconv_triple_off,
72 psiconv_triple_auto 87 psiconv_triple_auto
73} psiconv_triple_t; 88} psiconv_triple_t;
74 89
90/* Text can be in superscript or subscript or neither, but never both
91 superscript and subscript at once. Also, super-superscript and things
92 like that do not exist in the Psion world. */
75typedef enum psiconv_super_sub 93typedef enum psiconv_super_sub
76{ psiconv_normalscript, 94{ psiconv_normalscript,
77 psiconv_superscript, 95 psiconv_superscript,
78 psiconv_subscript 96 psiconv_subscript
79} psiconv_super_sub_t; 97} psiconv_super_sub_t;
80 98
99/* Horizontal justification. */
81typedef enum psiconv_justify_hor 100typedef enum psiconv_justify_hor
82{ psiconv_justify_left, 101{ psiconv_justify_left,
83 psiconv_justify_centre, 102 psiconv_justify_centre,
84 psiconv_justify_right, 103 psiconv_justify_right,
85 psiconv_justify_full 104 psiconv_justify_full
86} psiconv_justify_hor_t; 105} psiconv_justify_hor_t;
87 106
107/* Vertical justification. */
88typedef enum psiconv_justify_ver 108typedef enum psiconv_justify_ver
89{ psiconv_justify_top, 109{ psiconv_justify_top,
90 psiconv_justify_middle, 110 psiconv_justify_middle,
91 psiconv_justify_bottom 111 psiconv_justify_bottom
92} psiconv_justify_ver_t; 112} psiconv_justify_ver_t;
93 113
114/* Borders around text fields. */
94typedef enum psiconv_border_kind 115typedef enum psiconv_border_kind
95{ psiconv_border_none, 116{ psiconv_border_none, /* No border */
96 psiconv_border_solid, 117 psiconv_border_solid, /* Single line */
97 psiconv_border_double, 118 psiconv_border_double, /* Double line */
98 psiconv_border_dotted, 119 psiconv_border_dotted, /* Dotted line: . . . . . */
99 psiconv_border_dashed, 120 psiconv_border_dashed, /* Dashed line: _ _ _ _ _ */
100 psiconv_border_dotdashed, 121 psiconv_border_dotdashed, /* Dotted/dashed line: _ . _ . _ */
101 psiconv_border_dotdotdashed 122 psiconv_border_dotdotdashed /* Dotted/dashed line: . . _ . . _ */
102} psiconv_border_kind_t; 123} psiconv_border_kind_t;
103 124
125/* Though each printer driver has its own fonts for printing, they are
126 represented on the Psion screen by a few built-in fonts. */
104typedef enum psiconv_screenfont 127typedef enum psiconv_screenfont
105{ 128{
106 psiconv_font_misc, 129 psiconv_font_misc, /* Nonproportional symbols, like Wingbat? */
107 psiconv_font_sansserif, 130 psiconv_font_sansserif, /* Proportional sans-serif, like Arial */
108 psiconv_font_nonprop, 131 psiconv_font_nonprop, /* Nonproportional, like Courier */
109 psiconv_font_serif 132 psiconv_font_serif /* Proportional serifed, like Times */
110} psiconv_screenfont_t; 133} psiconv_screenfont_t;
111 134
112/* Colors. 135
136/* The kind of tab. Note that decimal tabs are not supported by the Psion. */
137typedef 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!) */
146typedef 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.
113 black: 0x00 0x00 0x00 159 Black: 0x00 0x00 0x00
114 white: 0xff 0xff 0xff */ 160 White: 0xff 0xff 0xff */
115typedef struct psiconv_color_s 161typedef struct psiconv_color_s
116{ 162{
117 psiconv_u8 red; 163 psiconv_u8 red;
118 psiconv_u8 green; 164 psiconv_u8 green;
119 psiconv_u8 blue; 165 psiconv_u8 blue;
120} * psiconv_color; 166} * psiconv_color;
121 167
168
169/* Complete font information: both a printer font and a corresponding screen
170 font to display it. */
122typedef struct psiconv_font_s 171typedef struct psiconv_font_s
123{ 172{
124 char *name; 173 psiconv_string_t name; /* Printer font */
125 psiconv_screenfont_t screenfont; 174 psiconv_screenfont_t screenfont; /* Screen font */
126} *psiconv_font; 175} *psiconv_font;
127 176
177/* Complete border information */
128typedef struct psiconv_border_s 178typedef struct psiconv_border_s
129{ 179{
130 psiconv_border_kind_t kind; 180 psiconv_border_kind_t kind; /* Border kind */
131 psiconv_size_t thickness; /* Set to 1/20 for non-solid lines */ 181 psiconv_size_t thickness; /* Set to 1/20 for non-solid lines */
132 psiconv_color color; 182 psiconv_color color; /* Border color */
133} *psiconv_border; 183} *psiconv_border;
134 184
185/* Complete bullet information.
186 If indent if off, the bullet is at the first line indentation level,
187 and the line text begins right after it. If it is on, the bullet is at
188 the minimum of the first line and left indentation, and the text starts
189 at the maximum of both. */
135typedef struct psiconv_bullet_s 190typedef struct psiconv_bullet_s
136{ 191{
137 psiconv_bool_t on; 192 psiconv_bool_t on; /* Whether the bullet is shown */
138 psiconv_size_t font_size; 193 psiconv_size_t font_size; /* Bullet font size */
139 psiconv_u8 character; 194 psiconv_ucs2 character; /* Bullet character */
140 psiconv_bool_t indent; 195 psiconv_bool_t indent; /* Whether to indent (see above */
141 psiconv_color color; 196 psiconv_color color; /* Bullet color */
142 psiconv_font font; 197 psiconv_font font; /* Bullet font */
143} *psiconv_bullet; 198} *psiconv_bullet;
144 199
145typedef enum psiconv_tab_kind 200/* Complete single tab information */
146{
147 psiconv_tab_left,
148 psiconv_tab_centre,
149 psiconv_tab_right
150} psiconv_tab_kind_t;
151
152typedef struct psiconv_tab_s 201typedef struct psiconv_tab_s
153{ 202{
154 psiconv_length_t location; 203 psiconv_length_t location; /* The indentation level */
155 psiconv_tab_kind_t kind; 204 psiconv_tab_kind_t kind; /* Tab kind */
156} *psiconv_tab; 205} *psiconv_tab;
157 206
158 207/* A list of tabs */
159typedef psiconv_list psiconv_tab_list; /* of struct psiconv_tab */ 208typedef psiconv_list psiconv_tab_list; /* of struct psiconv_tab_s */
160 209
210/* Information about all tabs.
211 Normal tabs start after the rightmost extra tab */
161typedef struct psiconv_all_tabs_s 212typedef struct psiconv_all_tabs_s
162{ 213{
163 psiconv_length_t normal; 214 psiconv_length_t normal; /* Normal tab distance */
164 psiconv_tab_list extras; 215 psiconv_tab_list extras; /* Additional defined tabs */
165} *psiconv_all_tabs; 216} *psiconv_all_tabs;
166 217
218/* Character layout.
219 This structure holds all layout information that can be applied on the
220 character level (as opposed to layouts that only apply to whole
221 paragraphs).
222 Note that at all times, this structure holds the complete layout
223 information; we do not use incremental layouts, unlike the Psion
224 file format itself. So if an italic text is also underlined, the
225 character_layout will have both set for that region. */
167typedef struct psiconv_character_layout_s 226typedef struct psiconv_character_layout_s
168{ 227{
169 psiconv_color color; 228 psiconv_color color; /* Character color */
170 psiconv_color back_color; 229 psiconv_color back_color; /* Background color */
171 psiconv_size_t font_size; 230 psiconv_size_t font_size; /* Font size */
172 psiconv_bool_t italic; 231 psiconv_bool_t italic; /* Use italics? */
173 psiconv_bool_t bold; 232 psiconv_bool_t bold; /* Use bold? */
174 psiconv_super_sub_t super_sub; 233 psiconv_super_sub_t super_sub; /* Use super/subscript? */
175 psiconv_bool_t underline; 234 psiconv_bool_t underline; /* Underline? */
176 psiconv_bool_t strikethrough; 235 psiconv_bool_t strikethrough; /* Strike through? */
177 psiconv_font font; 236 psiconv_font font; /* Character font */
178} *psiconv_character_layout; 237} *psiconv_character_layout;
179 238
239/* Paragraph layout.
240 This structure holds all layout information that can be applied on the
241 paragraph level (as opposed to layouts that also apply to single
242 characters).
243 Note that at all times, this structure holds the complete layout
244 information; we do not use incremental layouts, unlike the Psion
245 file format itself.
246 Linespacing is the amount of vertical space between lines. If
247 linespacing_exact is set, this amount is used even if that would make
248 text overlap; if it is not set, a greater distance is used if text would
249 otherwise overlap.
250 Several booleans determine where page breaks may be set. keep_together
251 forbids page breaks in the middle of the paragraph; keep_with_next
252 forbids page breaks between this and the next paragraph. on_next_page
253 forces a pagebreak before the paragraph. no_widow_protection allows
254 one single line of the paragraph on a page, and the rest on another page.
255 Sheet cell text normally does not wrap; wrap_to_fit_cell allows this. */
180typedef struct psiconv_paragraph_layout_s 256typedef struct psiconv_paragraph_layout_s
181{ 257{
182 psiconv_color back_color; 258 psiconv_color back_color; /* Background color */
183 psiconv_length_t indent_left; 259 psiconv_length_t indent_left; /* Left indentation (except first line) */
184 psiconv_length_t indent_right; 260 psiconv_length_t indent_right; /* Right indentation */
185 psiconv_length_t indent_first; 261 psiconv_length_t indent_first; /* First line left indentation */
186 psiconv_justify_hor_t justify_hor; 262 psiconv_justify_hor_t justify_hor; /* Horizontal justification */
187 psiconv_justify_ver_t justify_ver; 263 psiconv_justify_ver_t justify_ver; /* Vertical justification */
188 psiconv_size_t linespacing; 264 psiconv_size_t linespacing; /* The linespacing */
189 psiconv_bool_t linespacing_exact; 265 psiconv_bool_t linespacing_exact; /* Is linespacing exact or the minimum? */
190 psiconv_size_t space_above; 266 psiconv_size_t space_above; /* Vertical space before the paragraph */
191 psiconv_size_t space_below; 267 psiconv_size_t space_below; /* Vertical space after the paragraph */
192 psiconv_bool_t keep_together; 268 psiconv_bool_t keep_together; /* Keep lines on one page? */
193 psiconv_bool_t keep_with_next; 269 psiconv_bool_t keep_with_next; /* Disallow pagebreak after paragraph? */
194 psiconv_bool_t on_next_page; 270 psiconv_bool_t on_next_page; /* Force page break before paragraph? */
195 psiconv_bool_t no_widow_protection; 271 psiconv_bool_t no_widow_protection; /* Undo widow protection? */
196 psiconv_bool_t wrap_to_fit_cell; 272 psiconv_bool_t wrap_to_fit_cell; /* Wrap sheet cell text? */
197 psiconv_length_t border_distance; 273 psiconv_length_t border_distance; /* Distance to borders */
198 psiconv_bullet bullet; 274 psiconv_bullet bullet; /* Bullet information */
199 psiconv_border left_border; 275 psiconv_border left_border; /* Left border information */
200 psiconv_border right_border; 276 psiconv_border right_border; /* Right border information */
201 psiconv_border top_border; 277 psiconv_border top_border; /* Top border information */
202 psiconv_border bottom_border; 278 psiconv_border bottom_border; /* Bottom border information */
203 psiconv_all_tabs tabs; 279 psiconv_all_tabs tabs; /* All tab information */
204} *psiconv_paragraph_layout; 280} *psiconv_paragraph_layout;
205 281
282/* A Header Section.
283 It contains the three UIDs and the checksum, and the type of file.
284 As the type of file uniquely defines the UIDs, and as the UIDs determine
285 the checksum, this is never included in a regular psiconv_file structure.
286 It can be used to read the header section separately, though. */
206typedef struct psiconv_header_section_s 287typedef struct psiconv_header_section_s
207{ 288{
208 psiconv_u32 uid1; 289 psiconv_u32 uid1;
209 psiconv_u32 uid2; 290 psiconv_u32 uid2;
210 psiconv_u32 uid3; 291 psiconv_u32 uid3;
211 psiconv_u32 checksum; 292 psiconv_u32 checksum;
212 psiconv_file_type_t file; 293 psiconv_file_type_t file;
213} *psiconv_header_section; 294} *psiconv_header_section;
214 295
296/* A Section Table Section entry.
297 Each entry has a UID and an offset.
298 This is never included in a regular psiconv_file structure, as the
299 information is too low-level. It is used internally, though. */
215typedef struct psiconv_section_table_entry_s 300typedef struct psiconv_section_table_entry_s
216{ 301{
217 psiconv_u32 id; 302 psiconv_u32 id; /* Section UID */
218 psiconv_u32 offset; 303 psiconv_u32 offset; /* Section offset within the file */
219} *psiconv_section_table_entry; 304} *psiconv_section_table_entry;
220 305
306/* A Section Table Section.
307 A list of sections and their offsets.
308 It is simply a list of Section Table Section Entries.
309 This is never included in a regular psiconv_file structure, as the
310 information is too low-level. It is used internally, though. */
221typedef psiconv_list psiconv_section_table_section; 311typedef psiconv_list psiconv_section_table_section;
222/* Of struct sectiontable_entry */ 312 /* Of struct psiconv_sectiontable_entry_s */
223 313
314/* An Application ID Section.
315 The type of file.
316 Never included in a regular psiconv_file structure, because it is too
317 low-level. You can always recover it if you know the file type. Used
318 internally.
319 The name should probably be case-insensitive. */
224typedef struct psiconv_application_id_section_s 320typedef struct psiconv_application_id_section_s
225{ 321{
226 psiconv_u32 id; 322 psiconv_u32 id; /* File type UID */
227 psiconv_string_t name; 323 psiconv_string_t name; /* File type name */
228} *psiconv_application_id_section; 324} *psiconv_application_id_section;
229 325
326/* An Object Icon Section.
327 The icon used for an embedded object. */
328typedef struct psiconv_object_icon_section_s
329{
330 psiconv_length_t icon_width; /* Icon width */
331 psiconv_length_t icon_height; /* Icon height */
332 psiconv_string_t icon_name; /* Icon name */
333} *psiconv_object_icon_section;
334
335/* An Object Display Section.
336 How an embedded icon should be displayed.
337 The sizes are computed after cropping or resizing; if the object is shown
338 as an icon, the icon sizes are used here. */
339typedef struct psiconv_object_display_section_s
340{
341 psiconv_bool_t show_icon; /* Show an icon or the whole file? */
342 psiconv_length_t width; /* Object display width */
343 psiconv_length_t height; /* Object display height */
344} *psiconv_object_display_section;
345
346/* An Embedded Object Section.
347 All data about an embedded object.
348 An object is another psiconv_file, which is embedded in the current
349 file. Objects can also be embedded in each other, of course. */
350typedef struct psiconv_embedded_object_section_s
351{
352 psiconv_object_icon_section icon; /* Icon information */
353 psiconv_object_display_section display; /* Display information */
354 psiconv_file object; /* The object itself */
355} *psiconv_embedded_object_section;
356
357/* Inline character-level layout information.
358 Information how some characters should be laid out.
359 Note that, though you can choose specific layouts for an object, this
360 will probably not affect the object's rendering.
361 Usually, object will be NULL, and the object_width and object_height
362 will be ignored.
363 The object sizes are the same as in the Object Display Section, so
364 this information seems to be redundant. */
230typedef struct psiconv_in_line_layout_s 365typedef struct psiconv_in_line_layout_s
231{ 366{
232 psiconv_character_layout layout; 367 psiconv_character_layout layout; /* Layout information */
233 int length; 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 */
234} *psiconv_in_line_layout; 372} *psiconv_in_line_layout;
235 373
374/* Inline character information for a whole line.
375 A list of inline character information */
236typedef psiconv_list psiconv_in_line_layouts; /* of struct in_line_layout */ 376typedef psiconv_list psiconv_in_line_layouts;
377 /* of struct psiconv_in_line_layout_s */
237 378
238typedef enum psiconv_replacement_type 379/* What to replace where in text. Not yet implemented!
239{ 380 (not yet implemented!) */
240 psiconv_replace_time,
241 psiconv_replace_date,
242 psiconv_replace_pagenr,
243 psiconv_replace_nr_of_pages,
244 psiconv_replace_filename
245} psiconv_replacement_type_t;
246
247typedef struct psiconv_replacement_s 381typedef struct psiconv_replacement_s
248{ 382{
249 int offset; 383 int offset; /* Offset in text */
250 int cur_len; 384 int cur_len; /* Length of text to replace */
251 psiconv_replacement_type_t type; 385 psiconv_replacement_type_t type; /* Kind of replacement */
252} *psiconv_replacement; 386} *psiconv_replacement;
253 387
388/* A list of replacements */
254typedef psiconv_list psiconv_replacements; /* of struct replacement */ 389typedef psiconv_list psiconv_replacements; /* of struct psiconv_replacement_s */
255 390
391/* A paragraph of text.
392 Layout and actual paragraph text are combined here, even though
393 they are seperated in the Psion file format.
394 The base style is referred to, but the base_character and
395 base_paragraph have all style settings already incorporated.
396 The base style can be found using the psiconv_get_style function.
397 The in_lines are either an empty list, or they should apply to exactly
398 the number of characters in this paragraph */
256typedef struct psiconv_paragraph_s 399typedef struct psiconv_paragraph_s
257{ 400{
258 char *text; 401 psiconv_string_t text; /* Paragraph text */
259 psiconv_character_layout base_character; 402 psiconv_character_layout base_character; /* Base character layout */
260 psiconv_paragraph_layout base_paragraph; 403 psiconv_paragraph_layout base_paragraph; /* Base paragraph layout */
261 psiconv_s16 base_style; 404 psiconv_s16 base_style; /* Paragraph style */
262 psiconv_in_line_layouts in_lines; 405 psiconv_in_line_layouts in_lines; /* In-paragraph layout */
263 psiconv_replacements replacements; 406 psiconv_replacements replacements; /* Replacements like the date */
264} *psiconv_paragraph; 407} *psiconv_paragraph;
265 408
409/* A collection of text paragraphs */
266typedef psiconv_list psiconv_text_and_layout; /* Of struct paragraphs */ 410typedef psiconv_list psiconv_text_and_layout;
411 /* Of struct psiconv_paragraph_s */
267 412
413/* A TextEd Section.
414 Text and simple layout, without styles. */
268typedef struct psiconv_texted_section_s 415typedef struct psiconv_texted_section_s
269{ 416{
270 psiconv_text_and_layout paragraphs; 417 psiconv_text_and_layout paragraphs;
271} *psiconv_texted_section; 418} *psiconv_texted_section;
272 419
420/* A Page Header.
421 All information about a page header or footer.
422 An explicit base paragraph and character layout is found; this is used
423 as a sort of base style, on which all further formatting is based */
273typedef struct psiconv_page_header_s 424typedef struct psiconv_page_header_s
274{ 425{
275 psiconv_bool_t on_first_page; 426 psiconv_bool_t on_first_page; /* Display on first page? */
276 psiconv_paragraph_layout base_paragraph_layout; 427 psiconv_paragraph_layout base_paragraph_layout; /* Base paragraph layout */
277 psiconv_character_layout base_character_layout; 428 psiconv_character_layout base_character_layout; /* Base character layout */
278 psiconv_texted_section text; 429 psiconv_texted_section text; /* The actual text */
279} *psiconv_page_header; 430} *psiconv_page_header;
280 431
432/* A Page Layout Section
433 All information about the layout of a page.
434 Margins, page size, the header, the footer and page numbers */
281typedef struct psiconv_page_layout_section_s 435typedef struct psiconv_page_layout_section_s
282{ 436{
283 psiconv_u32 first_page_nr; 437 psiconv_u32 first_page_nr; /* Page numbers start counting here */
284 psiconv_length_t header_dist; 438 psiconv_length_t header_dist; /* Distance of header to text */
285 psiconv_length_t footer_dist; 439 psiconv_length_t footer_dist; /* Distance of footer to text */
286 psiconv_length_t left_margin; 440 psiconv_length_t left_margin; /* Left margin */
287 psiconv_length_t right_margin; 441 psiconv_length_t right_margin; /* Right margin */
288 psiconv_length_t top_margin; 442 psiconv_length_t top_margin; /* Top margin */
289 psiconv_length_t bottom_margin; 443 psiconv_length_t bottom_margin; /* Bottom margin */
290 psiconv_length_t page_width; 444 psiconv_length_t page_width; /* Page width */
291 psiconv_length_t page_height; 445 psiconv_length_t page_height; /* Page height */
292 psiconv_page_header header; 446 psiconv_page_header header; /* Header information */
293 psiconv_page_header footer; 447 psiconv_page_header footer; /* Footer information */
294 psiconv_bool_t landscape; 448 psiconv_bool_t landscape; /* Landscape orientation? */
295} * psiconv_page_layout_section; 449} * psiconv_page_layout_section;
296 450
451/* A Word Status Section
452 Settings of the Word program.
453 Several whitespace and related characters can be explicitely shown.
454 Embedded pictures and graphs can be iconized or displayed full.
455 Toolbars can be shown or hidden.
456 Long lines can be wrapped, or you have to use scrolling.
457 The cursor position is the character number of the text.
458 Zoom level: 1000 is "normal" */
297typedef struct psiconv_word_status_section_s 459typedef struct psiconv_word_status_section_s
298{ 460{
299 psiconv_bool_t show_tabs; 461 psiconv_bool_t show_tabs; /* Show tabs? */
300 psiconv_bool_t show_spaces; 462 psiconv_bool_t show_spaces; /* Show spaces? */
301 psiconv_bool_t show_paragraph_ends; 463 psiconv_bool_t show_paragraph_ends; /* Show paragraph ends? */
302 psiconv_bool_t show_line_breaks; 464 psiconv_bool_t show_line_breaks; /* Show line breaks */
303 psiconv_bool_t show_hard_minus; 465 psiconv_bool_t show_hard_minus; /* Show hard dashes? */
304 psiconv_bool_t show_hard_space; 466 psiconv_bool_t show_hard_space; /* Show hard spaces? */
305 psiconv_bool_t show_full_pictures; 467 psiconv_bool_t show_full_pictures; /* Show embedded pictures (or iconize)? */
306 psiconv_bool_t show_full_graphs; 468 psiconv_bool_t show_full_graphs; /* Show embedded graphs (or iconize)? */
307 psiconv_bool_t show_top_toolbar; 469 psiconv_bool_t show_top_toolbar; /* Show top toolbar? */
308 psiconv_bool_t show_side_toolbar; 470 psiconv_bool_t show_side_toolbar; /* Show side toolbar? */
309 psiconv_bool_t fit_lines_to_screen; 471 psiconv_bool_t fit_lines_to_screen; /* Wrap lines? */
310 psiconv_u32 cursor_position; 472 psiconv_u32 cursor_position; /* Cursor position (character number) */
311 psiconv_u32 display_size; 473 psiconv_u32 display_size; /* Zooming level */
312} *psiconv_word_status_section; 474} *psiconv_word_status_section;
313 475
476/* A Word Style.
477 All information about a single Style.
478 A builtin style may not be changed in the Word program.
479 Outline level is zero if unused.
480 The name may be NULL for the normal style! */
314typedef struct psiconv_word_style_s 481typedef struct psiconv_word_style_s
315{ 482{
316 psiconv_character_layout character; 483 psiconv_character_layout character; /* character-level layout */
317 psiconv_paragraph_layout paragraph; 484 psiconv_paragraph_layout paragraph; /* paragraph-level layout */
318 psiconv_u8 hotkey; 485 psiconv_ucs2 hotkey; /* The hotkey */
319 psiconv_string_t name; 486 psiconv_string_t name; /* Style name */
320 psiconv_bool_t built_in; 487 psiconv_bool_t built_in; /* Builtin style? */
321 psiconv_u32 outline_level; 488 psiconv_u32 outline_level; /* Outline level */
322} *psiconv_word_style; 489} *psiconv_word_style;
323 490
491/* A list of Word Styles */
324typedef psiconv_list psiconv_word_style_list; /* Of style */ 492typedef psiconv_list psiconv_word_style_list;
493 /* Of struct psiconv_word_style_s */
325 494
495/* A Word Styles Section
496 All information about styles.
497 Note that the name of the normal style is NULL! */
326typedef struct psiconv_word_styles_section_s 498typedef struct psiconv_word_styles_section_s
327{ 499{
328 psiconv_word_style normal; 500 psiconv_word_style normal; /* The normal (unspecified) style */
329 psiconv_word_style_list styles; 501 psiconv_word_style_list styles; /* All other defined styles */
330} *psiconv_word_styles_section; 502} *psiconv_word_styles_section;
331 503
504/* A Word File
505 All information about a Word File.
506 Note that a section can be NULL if it is not present. */
332typedef struct psiconv_word_f_s 507typedef struct psiconv_word_f_s
333{ 508{
334 psiconv_page_layout_section page_sec; 509 psiconv_page_layout_section page_sec; /* Page layout */
335 psiconv_text_and_layout paragraphs; 510 psiconv_text_and_layout paragraphs; /* Text and text layout */
336 psiconv_word_status_section status_sec; 511 psiconv_word_status_section status_sec; /* Internal Word program settings */
337 psiconv_word_styles_section styles_sec; 512 psiconv_word_styles_section styles_sec; /* Styles */
338} *psiconv_word_f; 513} *psiconv_word_f;
339 514
515/* A TextEd File
516 All information about a TextEd File.
517 Note that a section can be NULL if it is not present. */
340typedef struct psiconv_texted_f_s 518typedef struct psiconv_texted_f_s
341{ 519{
342 psiconv_page_layout_section page_sec; 520 psiconv_page_layout_section page_sec; /* Page layout */
343 psiconv_texted_section texted_sec; 521 psiconv_texted_section texted_sec; /* Text and text layout */
344} *psiconv_texted_f; 522} *psiconv_texted_f;
345 523
524/* A Jumptable Section.
525 A simple list of offsets.
526 This is never included in a regular psiconv_file structure, as the
527 information is too low-level. It is used internally, though. */
346typedef psiconv_list psiconv_jumptable_section; /* of psiconv_u32 */ 528typedef psiconv_list psiconv_jumptable_section; /* of psiconv_u32 */
347 529
530/* A Paint Data Section
531 A collection of pixels.
348/* Normalized values [0..1] for each component 532 Normalized values [0..1] for each color component.
349 Origin is (x,y)=(0,0), to get pixel at (X,Y) use index [Y*xsize+X] */ 533 Origin is (x,y)=(0,0), to get pixel at (X,Y) use index [Y*xsize+X] */
350typedef struct psiconv_paint_data_section_s 534typedef struct psiconv_paint_data_section_s
351{ 535{
352 psiconv_u32 xsize; 536 psiconv_u32 xsize; /* Number of pixels in a row */
353 psiconv_u32 ysize; 537 psiconv_u32 ysize; /* Number of pixels in a column */
354 psiconv_length_t pic_xsize; /* 0 if not specified */ 538 psiconv_length_t pic_xsize; /* 0 if not specified */
355 psiconv_length_t pic_ysize; /* 0 if not specified */ 539 psiconv_length_t pic_ysize; /* 0 if not specified */
356 float *red; 540 float *red;
357 float *green; 541 float *green;
358 float *blue; 542 float *blue;
359} *psiconv_paint_data_section; 543} *psiconv_paint_data_section;
360 544
545/* A collection of Paint Data Sections */
361typedef psiconv_list psiconv_pictures; 546typedef psiconv_list psiconv_pictures;
362 /* of struct psiconv_paint_data_section */ 547 /* of struct psiconv_paint_data_section_s */
363 548
549/* A MBM file
550 All information about a MBM file
551 MBM files contain one or more pictures. */
364typedef struct psiconv_mbm_f_s 552typedef struct psiconv_mbm_f_s
365{ 553{
366 psiconv_pictures sections; 554 psiconv_pictures sections;
367} *psiconv_mbm_f; 555} *psiconv_mbm_f;
368 556
369/* This is a little intricated. A picture may be embedded in a larger form. 557/* Read the Psiconv file format documentation for a complete discription.
370 A form is empty, except for the picture. The form has size form_{x,y}size, 558 Basic idea: a picture has a certain display size. Within it, the pixel
371 and the picture is at offset picture_{x,y}_offset within the form. The 559 data begins at a certain offset. Around it, there is an empty form.
372 picture itself has size picture_{x,y}size. 560 The first eight values are before magnification and cuts.
373 Cuts are always <= 1.0; a cut of 0.0 cuts nothing away, a cut of 1.0 561 Cuts are always <= 1.0; a cut of 0.0 cuts nothing away, a cut of 1.0
374 cuts everything away. */ 562 cuts everything away. */
375typedef struct psiconv_sketch_section_s 563typedef struct psiconv_sketch_section_s
376{ 564{
565 psiconv_u16 displayed_xsize;
566 psiconv_u16 displayed_ysize;
567 psiconv_u16 picture_data_x_offset;
568 psiconv_u16 picture_data_y_offset;
377 psiconv_u16 form_xsize; 569 psiconv_u16 form_xsize;
378 psiconv_u16 form_ysize; 570 psiconv_u16 form_ysize;
379 psiconv_u16 picture_x_offset; 571 psiconv_u16 displayed_size_x_offset;
380 psiconv_u16 picture_y_offset; 572 psiconv_u16 displayed_size_y_offset;
381 psiconv_u16 picture_xsize;
382 psiconv_u16 picture_ysize;
383 float magnification_x; /* computed relative to first six values */ 573 float magnification_x; /* computed relative to first eight values */
384 float magnification_y; /* computed relative to first six values */ 574 float magnification_y; /* computed relative to first eight values */
385 float cut_left; /* computed relative to first six values */ 575 float cut_left; /* computed relative to first eight values */
386 float cut_right; /* computed relative to first six values */ 576 float cut_right; /* computed relative to first eight values */
387 float cut_top; /* computed relative to first six values */ 577 float cut_top; /* computed relative to first eight values */
388 float cut_bottom; /* computed relative to first six values */ 578 float cut_bottom; /* computed relative to first eight values */
389 psiconv_paint_data_section picture; 579 psiconv_paint_data_section picture;
390} *psiconv_sketch_section; 580} *psiconv_sketch_section;
391 581
392typedef struct psiconv_sketch_f_s 582typedef struct psiconv_sketch_f_s
393{ 583{
398{ 588{
399 /* Perhaps later on some currently unknown stuff. */ 589 /* Perhaps later on some currently unknown stuff. */
400 psiconv_paint_data_section picture; 590 psiconv_paint_data_section picture;
401} * psiconv_clipart_section; 591} * psiconv_clipart_section;
402 592
403typedef psiconv_list psiconv_cliparts; /* of struct psiconv_clipart_section */ 593typedef psiconv_list psiconv_cliparts; /* of struct psiconv_clipart_section_s */
404 594
405typedef struct psiconv_clipart_f_s 595typedef struct psiconv_clipart_f_s
406{ 596{
407 psiconv_cliparts sections; 597 psiconv_cliparts sections;
408} *psiconv_clipart_f; 598} *psiconv_clipart_f;
501 psiconv_u16 row; 691 psiconv_u16 row;
502 psiconv_cell_type_t type; 692 psiconv_cell_type_t type;
503 union { 693 union {
504 psiconv_u32 dat_int; 694 psiconv_u32 dat_int;
505 double dat_float; 695 double dat_float;
506 char *dat_string; 696 psiconv_string_t dat_string;
507 psiconv_bool_t dat_bool; 697 psiconv_bool_t dat_bool;
508 psiconv_sheet_errorcode_t dat_error; 698 psiconv_sheet_errorcode_t dat_error;
509 } data; 699 } data;
510 psiconv_sheet_cell_layout layout; 700 psiconv_sheet_cell_layout layout;
511 psiconv_bool_t calculated; 701 psiconv_bool_t calculated;
512 psiconv_u32 ref_formula; 702 psiconv_u32 ref_formula;
513} *psiconv_sheet_cell; 703} *psiconv_sheet_cell;
514 704
515typedef psiconv_list psiconv_sheet_cell_list; 705typedef psiconv_list psiconv_sheet_cell_list;
706 /* Of struct psiconv_sheet_cell_s */
516 707
517typedef struct psiconv_sheet_status_section_s 708typedef struct psiconv_sheet_status_section_s
518{ 709{
519 psiconv_bool_t show_graph; 710 psiconv_bool_t show_graph;
520 psiconv_u32 cursor_row; 711 psiconv_u32 cursor_row;
673{ 864{
674 psiconv_formula_type_t type; 865 psiconv_formula_type_t type;
675 union { 866 union {
676 psiconv_u32 dat_int; 867 psiconv_u32 dat_int;
677 double dat_float; 868 double dat_float;
678 char *dat_string; 869 psiconv_string_t dat_string;
679 psiconv_sheet_cell_reference_t dat_cellref; 870 psiconv_sheet_cell_reference_t dat_cellref;
680 psiconv_sheet_cell_block_t dat_cellblock; 871 psiconv_sheet_cell_block_t dat_cellblock;
681 psiconv_formula_list fun_operands; 872 psiconv_formula_list fun_operands;
873 psiconv_u32 dat_variable;
682 } data; 874 } data;
683} *psiconv_formula; 875} *psiconv_formula;
684 876
685typedef struct psiconv_sheet_line_s 877typedef struct psiconv_sheet_line_s
686{ 878{
688 psiconv_sheet_cell_layout layout; 880 psiconv_sheet_cell_layout layout;
689} *psiconv_sheet_line; 881} *psiconv_sheet_line;
690 882
691typedef psiconv_list psiconv_sheet_line_list; 883typedef psiconv_list psiconv_sheet_line_list;
692 /* Of struct psiconv_sheet_line_s */ 884 /* Of struct psiconv_sheet_line_s */
885
886typedef struct psiconv_sheet_grid_size_s
887{
888 psiconv_u32 line_number;
889 psiconv_length_t size;
890} *psiconv_sheet_grid_size;
891
892typedef psiconv_list psiconv_sheet_grid_size_list;
893 /* Of struct psiconv_sheet_grid_size_s */
894
895typedef psiconv_list psiconv_sheet_grid_break_list; /* of psiconv_u32 */
896
897typedef struct psiconv_sheet_grid_section_s
898{
899 psiconv_bool_t show_column_titles;
900 psiconv_bool_t show_row_titles;
901 psiconv_bool_t show_vertical_grid;
902 psiconv_bool_t show_horizontal_grid;
903 psiconv_bool_t freeze_rows;
904 psiconv_bool_t freeze_columns;
905 psiconv_u32 frozen_rows;
906 psiconv_u32 frozen_columns;
907 psiconv_u32 first_unfrozen_row_displayed;
908 psiconv_u32 first_unfrozen_column_displayed;
909 psiconv_bool_t show_page_breaks;
910 psiconv_u32 first_row;
911 psiconv_u32 first_column;
912 psiconv_u32 last_row;
913 psiconv_u32 last_column;
914 psiconv_length_t default_row_height;
915 psiconv_length_t default_column_width;
916 psiconv_sheet_grid_size_list row_heights;
917 psiconv_sheet_grid_size_list column_heights;
918 psiconv_sheet_grid_break_list row_page_breaks;
919 psiconv_sheet_grid_break_list column_page_breaks;
920} *psiconv_sheet_grid_section;
693 921
694typedef struct psiconv_sheet_worksheet_s 922typedef struct psiconv_sheet_worksheet_s
695{ 923{
696 psiconv_sheet_cell_layout default_layout; 924 psiconv_sheet_cell_layout default_layout;
697 psiconv_sheet_cell_list cells; 925 psiconv_sheet_cell_list cells;
698 psiconv_bool_t show_zeros; 926 psiconv_bool_t show_zeros;
699 psiconv_sheet_line_list row_default_layouts; 927 psiconv_sheet_line_list row_default_layouts;
700 psiconv_sheet_line_list col_default_layouts; 928 psiconv_sheet_line_list col_default_layouts;
929 psiconv_sheet_grid_section grid;
701} *psiconv_sheet_worksheet; 930} *psiconv_sheet_worksheet;
702 931
703typedef psiconv_list psiconv_sheet_worksheet_list; 932typedef psiconv_list psiconv_sheet_worksheet_list;
704 /* of struct psiconv_sheet_worksheet */ 933 /* of struct psiconv_sheet_worksheet_s */
934
935typedef enum psiconv_variable_type
936{
937 psiconv_var_int,
938 psiconv_var_float,
939 psiconv_var_string,
940 psiconv_var_cellref,
941 psiconv_var_cellblock
942} psiconv_variable_type_t;
943
944typedef struct psiconv_sheet_variable_s
945{
946 psiconv_u32 number;
947 psiconv_string_t name;
948 psiconv_variable_type_t type;
949 union {
950 psiconv_s32 dat_int;
951 double dat_float;
952 psiconv_string_t dat_string;
953 psiconv_sheet_cell_reference_t dat_cellref;
954 psiconv_sheet_cell_block_t dat_cellblock;
955 } data;
956} *psiconv_sheet_variable;
957
958typedef psiconv_list psiconv_sheet_variable_list;
959 /* of struct psiconv_sheet_variable_s */
960
961typedef struct psiconv_sheet_name_section_s
962{
963 psiconv_string_t name;
964} *psiconv_sheet_name_section;
965
966typedef struct psiconv_sheet_info_section_s
967{
968 psiconv_bool_t auto_recalc;
969} *psiconv_sheet_info_section;
705 970
706typedef struct psiconv_sheet_workbook_section_s 971typedef struct psiconv_sheet_workbook_section_s
707{ 972{
708 psiconv_formula_list formulas; 973 psiconv_formula_list formulas;
709 psiconv_sheet_worksheet_list worksheets; 974 psiconv_sheet_worksheet_list worksheets;
975 psiconv_sheet_variable_list variables;
976 psiconv_sheet_info_section info;
977 psiconv_sheet_name_section name;
710} *psiconv_sheet_workbook_section; 978} *psiconv_sheet_workbook_section;
711 979
712typedef struct psiconv_sheet_f_s 980typedef struct psiconv_sheet_f_s
713{ 981{
714 psiconv_page_layout_section page_sec; 982 psiconv_page_layout_section page_sec;
715 psiconv_sheet_status_section status_sec; 983 psiconv_sheet_status_section status_sec;
716 psiconv_sheet_workbook_section workbook_sec; 984 psiconv_sheet_workbook_section workbook_sec;
717} *psiconv_sheet_f; 985} *psiconv_sheet_f;
718 986
987/* NB: psiconv_file is already defined above */
719typedef struct psiconv_file_s 988struct psiconv_file_s
720{ 989{
721 psiconv_file_type_t type; 990 psiconv_file_type_t type;
722 void *file; 991 void *file;
723} *psiconv_file; 992};
724 993
725 994
726/* UID1 */ 995/* UID1 */
727#define PSICONV_ID_PSION5 0x10000037 996#define PSICONV_ID_PSION5 0x10000037
728#define PSICONV_ID_CLIPART 0x10000041 997#define PSICONV_ID_CLIPART 0x10000041
757#define PSICONV_ID_TEXTED_LAYOUT 0x10000066 1026#define PSICONV_ID_TEXTED_LAYOUT 0x10000066
758#define PSICONV_ID_TEXTED_TEXT 0x10000064 1027#define PSICONV_ID_TEXTED_TEXT 0x10000064
759#define PSICONV_ID_STYLE_REMOVABLE 0x1000004F 1028#define PSICONV_ID_STYLE_REMOVABLE 0x1000004F
760#define PSICONV_ID_STYLE_BUILT_IN 0x1000004C 1029#define PSICONV_ID_STYLE_BUILT_IN 0x1000004C
761#define PSICONV_ID_CLIPART_ITEM 0x10000040 1030#define PSICONV_ID_CLIPART_ITEM 0x10000040
1031#define PSICONV_ID_OBJECT 0x10000051
1032#define PSICONV_ID_OBJECT_DISPLAY_SECTION 0x10000146
1033#define PSICONV_ID_OBJECT_ICON_SECTION 0x1000012A
1034#define PSICONV_ID_OBJECT_SECTION_TABLE_SECTION 0x10000144
762 1035
763 1036
764/* Return a clean layout_status. You can modify it at will. Returns NULL 1037/* Return a clean layout_status. You can modify it at will. Returns NULL
765 if there is not enough memory. */ 1038 if there is not enough memory. */
766extern psiconv_character_layout psiconv_basic_character_layout(void); 1039extern psiconv_character_layout psiconv_basic_character_layout(void);
803extern void psiconv_free_formula(psiconv_formula formula); 1076extern void psiconv_free_formula(psiconv_formula formula);
804extern void psiconv_free_formula_list(psiconv_formula_list list); 1077extern void psiconv_free_formula_list(psiconv_formula_list list);
805extern void psiconv_free_sheet_status_section 1078extern void psiconv_free_sheet_status_section
806 (psiconv_sheet_status_section section); 1079 (psiconv_sheet_status_section section);
807extern void psiconv_free_sheet_cell_layout(psiconv_sheet_cell_layout layout); 1080extern void psiconv_free_sheet_cell_layout(psiconv_sheet_cell_layout layout);
1081extern void psiconv_free_sheet_grid_break_list
1082 (psiconv_sheet_grid_break_list list);
1083extern void psiconv_free_sheet_grid_size(psiconv_sheet_grid_size s);
1084extern void psiconv_free_sheet_grid_size_list
1085 (psiconv_sheet_grid_size_list list);
1086extern void psiconv_free_sheet_grid_section(psiconv_sheet_grid_section sec);
808extern void psiconv_free_sheet_worksheet(psiconv_sheet_worksheet sheet); 1087extern void psiconv_free_sheet_worksheet(psiconv_sheet_worksheet sheet);
809extern void psiconv_free_sheet_worksheet_list 1088extern void psiconv_free_sheet_worksheet_list
810 (psiconv_sheet_worksheet_list list); 1089 (psiconv_sheet_worksheet_list list);
811 1090
812extern void psiconv_free_sheet_f(psiconv_sheet_f file); 1091extern void psiconv_free_sheet_f(psiconv_sheet_f file);
814extern void psiconv_free_sheet_cell_list(psiconv_sheet_cell_list list); 1093extern void psiconv_free_sheet_cell_list(psiconv_sheet_cell_list list);
815extern void psiconv_free_sheet_numberformat 1094extern void psiconv_free_sheet_numberformat
816 (psiconv_sheet_numberformat numberformat); 1095 (psiconv_sheet_numberformat numberformat);
817extern void psiconv_free_sheet_line_list(psiconv_sheet_line_list list); 1096extern void psiconv_free_sheet_line_list(psiconv_sheet_line_list list);
818extern void psiconv_free_sheet_line(psiconv_sheet_line line); 1097extern void psiconv_free_sheet_line(psiconv_sheet_line line);
1098extern void psiconv_free_sheet_name_section(psiconv_sheet_name_section section);
1099extern void psiconv_free_sheet_variable(psiconv_sheet_variable list);
1100extern void psiconv_free_sheet_variable_list(psiconv_sheet_variable_list list);
1101extern void psiconv_free_sheet_info_section(psiconv_sheet_info_section section);
1102extern void psiconv_free_sheet_workbook_section
1103 (psiconv_sheet_workbook_section section);
819extern void psiconv_free_header_section(psiconv_header_section header); 1104extern void psiconv_free_header_section(psiconv_header_section header);
820extern void psiconv_free_section_table_entry(psiconv_section_table_entry entry); 1105extern void psiconv_free_section_table_entry(psiconv_section_table_entry entry);
821extern void psiconv_free_section_table_section 1106extern void psiconv_free_section_table_section
822 (psiconv_section_table_section section); 1107 (psiconv_section_table_section section);
823extern void psiconv_free_application_id_section 1108extern void psiconv_free_application_id_section
824 (psiconv_application_id_section section); 1109 (psiconv_application_id_section section);
1110extern void psiconv_free_object_display_section
1111 (psiconv_object_display_section section);
1112extern void psiconv_free_object_icon_section
1113 (psiconv_object_icon_section section);
1114extern void psiconv_free_embedded_object_section
1115 (psiconv_embedded_object_section object);
825extern void psiconv_free_in_line_layout(psiconv_in_line_layout layout); 1116extern void psiconv_free_in_line_layout(psiconv_in_line_layout layout);
826extern void psiconv_free_in_line_layouts(psiconv_in_line_layouts layouts); 1117extern void psiconv_free_in_line_layouts(psiconv_in_line_layouts layouts);
827extern void psiconv_free_replacement(psiconv_replacement replacement); 1118extern void psiconv_free_replacement(psiconv_replacement replacement);
828extern void psiconv_free_replacements(psiconv_replacements replacements); 1119extern void psiconv_free_replacements(psiconv_replacements replacements);
829extern void psiconv_free_paragraph(psiconv_paragraph paragraph); 1120extern void psiconv_free_paragraph(psiconv_paragraph paragraph);

Legend:
Removed from v.128  
changed lines
  Added in v.196

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