Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/*
2
 * wordtypes.h
3
 * Copyright (C) 1998-2004 A.J. van Os; Released under GPL
4
 *
5
 * Description:
6
 * Typedefs for the interpretation of MS Word files
7
 */
8
 
9
#if !defined(__wordtypes_h)
10
#define __wordtypes_h 1
11
 
12
#include <time.h>
13
#if defined(__riscos)
14
#include "DeskLib:Font.h"
15
#include "DeskLib:Wimp.h"
16
#endif /* __riscos */
17
 
18
typedef unsigned char	UCHAR;
19
typedef unsigned short	USHORT;
20
typedef unsigned int	UINT;
21
typedef unsigned long	ULONG;
22
 
23
#if defined(__riscos)
24
typedef struct diagram_tag {
25
	drawfile_info	tInfo;
26
	window_handle	tMainWindow;
27
	window_handle	tScaleWindow;
28
	menu_ptr	pSaveMenu;
29
	long		lXleft;			/* In DrawUnits */
30
	long		lYtop;			/* In DrawUnits */
31
	size_t		tMemorySize;
32
	int		iScaleFactorCurr;	/* In percentage */
33
	int		iScaleFactorTemp;	/* In percentage */
34
	char		szFilename[19+1];
35
} diagram_type;
36
#else
37
typedef struct diagram_tag {
38
	FILE		*pOutFile;
39
	long		lXleft;			/* In DrawUnits */
40
	long		lYtop;			/* In DrawUnits */
41
} diagram_type;
42
typedef UCHAR		drawfile_fontref;
43
#endif /* __riscos */
44
 
45
typedef struct output_tag {
46
	char	*szStorage;
47
	long	lStringWidth;		/* In millipoints */
48
	size_t	tStorageSize;
49
	size_t	tNextFree;
50
	USHORT	usFontStyle;
51
	USHORT	usFontSize;
52
	UCHAR	ucFontColor;
53
	drawfile_fontref	tFontRef;
54
	struct output_tag	*pPrev;
55
	struct output_tag	*pNext;
56
} output_type;
57
 
58
/* Types of conversion */
59
typedef enum conversion_tag {
60
	conversion_unknown = 0,
61
	conversion_text,
62
	conversion_draw,
63
	conversion_ps,
64
	conversion_xml,
65
	conversion_pdf,
66
	conversion_fmt_text
67
} conversion_type;
68
 
69
/* Types of encoding */
70
typedef enum encoding_tag {
71
	encoding_neutral = 100,
72
	encoding_latin_1 = 801,
73
	encoding_latin_2 = 802,
74
	encoding_cyrillic = 805,
75
	encoding_utf_8 = 1601
76
} encoding_type;
77
 
78
/* Font translation table entry */
79
typedef struct font_table_tag {
80
	USHORT	usFontStyle;
81
	UCHAR	ucWordFontNumber;
82
	UCHAR	ucFFN;
83
	UCHAR	ucEmphasis;
84
	UCHAR	ucInUse;
85
	char	szWordFontname[65];
86
	char	szOurFontname[33];
87
} font_table_type;
88
 
89
/* Options */
90
typedef enum image_level_tag {
91
	level_gs_special = 0,
92
	level_no_images,
93
	level_ps_2,
94
	level_ps_3,
95
	level_default = level_ps_2
96
} image_level_enum;
97
 
98
typedef struct options_tag {
99
	int		iParagraphBreak;
100
	conversion_type	eConversionType;
101
	BOOL		bHideHiddenText;
102
	BOOL		bRemoveRemovedText;
103
	BOOL		bUseLandscape;
104
	encoding_type	eEncoding;
105
	int		iPageHeight;		/* In points */
106
	int		iPageWidth;		/* In points */
107
	image_level_enum	eImageLevel;
108
#if defined(__riscos)
109
	BOOL		bAutofiletypeAllowed;
110
	int		iScaleFactor;		/* As a percentage */
111
#endif /* __riscos */
112
} options_type;
113
 
114
/* Property Set Storage */
115
typedef struct pps_tag {
116
	ULONG	ulSB;
117
	ULONG	ulSize;
118
} pps_type;
119
typedef struct pps_info_tag {
120
	pps_type	tWordDocument;	/* Text stream */
121
	pps_type	tData;		/* Data stream */
122
	pps_type	tTable;		/* Table stream */
123
	pps_type	tSummaryInfo;	/* Summary Information */
124
	pps_type	tDocSummaryInfo;/* Document Summary Information */
125
	pps_type	t0Table;	/* Table 0 stream */
126
	pps_type	t1Table;	/* Table 1 stream */
127
} pps_info_type;
128
 
129
/* Record of data block information */
130
typedef struct data_block_tag {
131
	ULONG	ulFileOffset;
132
	ULONG	ulDataPos;
133
	ULONG	ulLength;
134
} data_block_type;
135
 
136
/* Record of text block information */
137
typedef struct text_block_tag {
138
	ULONG	ulFileOffset;
139
	ULONG	ulCharPos;
140
	ULONG	ulLength;
141
	BOOL	bUsesUnicode;	/* This block uses 16 bits per character */
142
	USHORT	usPropMod;
143
} text_block_type;
144
 
145
/* Record of the document block information */
146
typedef struct document_block_tag {
147
	time_t	tCreateDate;		/* Unix timestamp */
148
	time_t	tRevisedDate;		/* Unix timestamp */
149
	USHORT	usDefaultTabWidth;	/* In twips */
150
	UCHAR	ucHdrFtrSpecification;
151
} document_block_type;
152
 
153
/* Record of table-row block information */
154
typedef struct row_block_tag {
155
	ULONG	ulFileOffsetStart;
156
	ULONG	ulFileOffsetEnd;
157
	ULONG	ulCharPosStart;
158
	ULONG	ulCharPosEnd;
159
	short	asColumnWidth[TABLE_COLUMN_MAX+1];	/* In twips */
160
	UCHAR	ucNumberOfColumns;
161
	UCHAR	ucBorderInfo;
162
} row_block_type;
163
 
164
/* Various level types */
165
typedef enum level_type_tag {
166
	level_type_none = 0,
167
	level_type_outline,
168
	level_type_numbering,
169
	level_type_sequence,
170
	level_type_pause
171
} level_type_enum;
172
 
173
typedef enum list_id_tag {
174
	no_list = 0,
175
	text_list,
176
	footnote_list,
177
	hdrftr_list,
178
	macro_list,
179
	annotation_list,
180
	endnote_list,
181
	textbox_list,
182
	hdrtextbox_list,
183
	end_of_lists
184
} list_id_enum;
185
 
186
/* Linked list of style description information */
187
typedef struct style_block_tag {
188
	ULONG	ulFileOffset;   /* The style start with this character */
189
	list_id_enum	eListID;/* The fileoffset is in this list */
190
	BOOL	bNumPause;
191
	BOOL	bNoRestart;	/* Don't restart by more significant levels */
192
	USHORT	usIstd;		/* Current style */
193
	USHORT	usIstdNext;	/* Next style unless overruled */
194
	USHORT	usStartAt;	/* Number at the start of a list */
195
	USHORT	usBeforeIndent;	/* Vertical indent before paragraph in twips */
196
	USHORT	usAfterIndent;	/* Vertical indent after paragraph in twips */
197
	USHORT	usListIndex;	/* Before Word 8 this field was not filled */
198
	USHORT	usListChar;	/* Character for an itemized list (Unicode) */
199
	short	sLeftIndent;	/* Left indentation in twips */
200
	short	sLeftIndent1;	/* First line left indentation in twips */
201
	short	sRightIndent;	/* Right indentation in twips */
202
	UCHAR	ucAlignment;
203
	UCHAR	ucNFC;		/* Number format code */
204
	UCHAR	ucNumLevel;
205
	UCHAR	ucListLevel;	/* Before Word 8 this field was not filled */
206
	char	szListChar[4];	/* Character for an itemized list */
207
} style_block_type;
208
 
209
/* Font description information */
210
typedef struct font_block_tag {
211
	ULONG	ulFileOffset;
212
	USHORT	usFontStyle;
213
	USHORT	usFontSize;
214
	UCHAR	ucFontNumber;
215
	UCHAR	ucFontColor;
216
} font_block_type;
217
 
218
/* Picture description information */
219
typedef struct picture_block_tag {
220
	ULONG	ulFileOffset;
221
	ULONG	ulFileOffsetPicture;
222
	ULONG	ulPictureOffset;
223
} picture_block_type;
224
 
225
/* Section description information */
226
typedef struct section_block_tag {
227
	BOOL	bNewPage;
228
	USHORT	usNeedPrevLvl;		/* Print previous level numbers */
229
	USHORT	usHangingIndent;
230
	UCHAR	aucNFC[9];		/* Number format code */
231
	UCHAR	ucHdrFtrSpecification;	/* Which headers/footers Word < 8 */
232
} section_block_type;
233
 
234
/* Header/footer description information */
235
typedef struct hdrftr_block_tag {
236
	output_type	*pText;
237
	long		lHeight;	/* In DrawUnits */
238
} hdrftr_block_type;
239
 
240
/* Footnote description information */
241
typedef struct footnote_block_tag {
242
	char		*szText;
243
} footnote_block_type;
244
 
245
/* List description information */
246
typedef struct list_block_tag {
247
	ULONG	ulStartAt;	/* Number at the start of a list */
248
	BOOL	bNoRestart;	/* Don't restart by more significant levels */
249
	USHORT	usListChar;	/* Character for an itemized list (Unicode) */
250
	short	sLeftIndent;	/* Left indentation in twips */
251
	UCHAR	ucNFC;		/* Number format code */
252
} list_block_type;
253
 
254
/* Types of images */
255
typedef enum imagetype_tag {
256
	imagetype_is_unknown = 0,
257
	imagetype_is_external,
258
	imagetype_is_emf,
259
	imagetype_is_wmf,
260
	imagetype_is_pict,
261
	imagetype_is_jpeg,
262
	imagetype_is_png,
263
	imagetype_is_dib
264
} imagetype_enum;
265
 
266
/* Types of compression */
267
typedef enum compression_tag {
268
	compression_unknown = 0,
269
	compression_none,
270
	compression_rle4,
271
	compression_rle8,
272
	compression_jpeg,
273
	compression_zlib
274
} compression_enum;
275
 
276
/* Image information */
277
typedef struct imagedata_tag {
278
	/* The type of the image */
279
	imagetype_enum	eImageType;
280
	/* Information from the Word document */
281
	size_t	tPosition;
282
	size_t	tLength;
283
	int	iHorSizeScaled;		/* Size in points */
284
	int	iVerSizeScaled;		/* Size in points */
285
	/* Information from the image */
286
	int	iWidth;			/* Size in pixels */
287
	int	iHeight;		/* Size in pixels */
288
	int	iComponents;		/* Number of color components */
289
	UINT	uiBitsPerComponent;	/* Bits per color component */
290
	BOOL	bAdobe;	/* Image includes Adobe comment marker */
291
	compression_enum	eCompression;	/* Type of compression */
292
	BOOL	bColorImage;	/* Is color image */
293
	int	iColorsUsed;	/* 0 = uses the maximum number of colors */
294
	UCHAR 	aucPalette[256][3];	/* RGB palette */
295
} imagedata_type;
296
 
297
typedef enum row_info_tag {
298
	found_nothing,
299
	found_a_cell,
300
	found_not_a_cell,
301
	found_end_of_row,
302
	found_not_end_of_row
303
} row_info_enum;
304
 
305
typedef enum notetype_tag {
306
	notetype_is_footnote,
307
	notetype_is_endnote,
308
	notetype_is_unknown
309
} notetype_enum;
310
 
311
typedef enum image_info_tag {
312
	image_no_information,
313
	image_minimal_information,
314
	image_full_information
315
} image_info_enum;
316
 
317
#endif /* __wordtypes_h */