summaryrefslogtreecommitdiff
path: root/sys/src/cmd/aux/antiword/wordconst.h
blob: 739f11bf654a8f093f6e854a8f6fddf330f3449f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
/*
 * wordconst.h
 * Copyright (C) 1998-2004 A.J. van Os; Released under GNU GPL
 *
 * Description:
 * Constants and macros for the interpretation of MS Word files
 */

#if !defined(__wordconst_h)
#define __wordconst_h 1

/*
 * A bit odd definition of the type Boolean, but RISC OS insists
 * on this and Linux/Unix doesn't mind.
 */
#if !defined(BOOL)
#define BOOL int
#define TRUE 1
#define FALSE 0
#endif /* !BOOL */

/* Block sizes */
#define HEADER_SIZE			768
#define BIG_BLOCK_SIZE			512
#define PROPERTY_SET_STORAGE_SIZE	128
#define SMALL_BLOCK_SIZE		 64
/* Switch size of Depot use */
#define MIN_SIZE_FOR_BBD_USE		0x1000
/* Table sizes */
#define TABLE_COLUMN_MAX		 31
/* Maximum number of tabs positions in a paragraph */
#define NUMBER_OF_TABS_MAX		 64
/* Font sizes (in half-points) */
#define MIN_FONT_SIZE			  8
#define DEFAULT_FONT_SIZE		 20
#define MAX_FONT_SIZE			240
#define MIN_TABLEFONT_SIZE		 16
#define MAX_TABLEFONT_SIZE		 20
/* Font styles */
#define FONT_REGULAR			0x0000
#define FONT_BOLD			0x0001
#define FONT_ITALIC			0x0002
#define FONT_UNDERLINE			0x0004
#define FONT_CAPITALS			0x0008
#define FONT_SMALL_CAPITALS		0x0010
#define FONT_STRIKE			0x0020
#define FONT_HIDDEN			0x0040
#define FONT_MARKDEL			0x0080
#define FONT_SUPERSCRIPT		0x0100
#define FONT_SUBSCRIPT			0x0200
/* Font colors */
#define FONT_COLOR_DEFAULT		 0
#define FONT_COLOR_BLACK		 1
#define FONT_COLOR_BLUE			 2
#define FONT_COLOR_CYAN			 3
#define FONT_COLOR_GREEN		 4
#define FONT_COLOR_MAGENTA		 5
#define FONT_COLOR_RED			 6
#define FONT_COLOR_YELLOW		 7
#define FONT_COLOR_WHITE		 8
/* Special block numbers */
#define END_OF_CHAIN			0xfffffffeUL
#define UNUSED_BLOCK			0xffffffffUL
/* Blocksize (512 bytes) and maximum filesize (4 GB) gives 0..7fffff */
#define MAX_BLOCKNUMBER			0x007fffffUL
/* Invalid character position */
#define CP_INVALID			0xffffffffUL
/* Invalid file offset */
#define FC_INVALID			0xffffffffUL
/* Special istd values */
#define ISTD_INVALID			USHRT_MAX
#define ISTD_NORMAL			0
/* Properties modifier without value */
#define IGNORE_PROPMOD			0
/* Types of lists */
#define LIST_ARABIC_NUM			0x00
#define LIST_UPPER_ROMAN		0x01
#define LIST_LOWER_ROMAN		0x02
#define LIST_UPPER_ALPHA		0x03
#define LIST_LOWER_ALPHA		0x04
#define LIST_ORDINAL_NUM		0x05
#define LIST_NUMBER_TXT			0x06
#define LIST_ORDINAL_TXT		0x07
#define LIST_OUTLINE_NUM		0x16
#define LIST_SPECIAL			0x17
#define LIST_SPECIAL2			0x19
#define LIST_BULLETS			0xff
/* Types of paragraph alignment */
#define ALIGNMENT_LEFT			0x00
#define ALIGNMENT_CENTER		0x01
#define ALIGNMENT_RIGHT			0x02
#define ALIGNMENT_JUSTIFY		0x03
/* Minimum vertical space before and after a heading line */
#define HEADING_GAP			120	/* twips */
/* Style identifier */
#define STI_USER			0xffe
#define STI_NIL				0xfff
/* Table border style codes */
#define TABLE_BORDER_TOP		0x01
#define TABLE_BORDER_LEFT		0x02
#define TABLE_BORDER_BOTTOM		0x04
#define TABLE_BORDER_RIGHT		0x08

/* Macros */
	/* Get macros */
#define ucGetByte(i,a)		((unsigned char)(a[i]))
#define usGetWord(i,a)		((unsigned short)\
					((unsigned int)(a[(i)+1])<<8|\
					 (unsigned int)(a[i])))
#define ulGetLong(i,a)		((unsigned long)(a[i])|\
					(unsigned long)(a[(i)+1])<<8|\
					(unsigned long)(a[(i)+2])<<16|\
					(unsigned long)(a[(i)+3])<<24)
#define usGetWordBE(i,a)	((unsigned short)\
					((unsigned int)(a[i])<<8|\
					 (unsigned int)(a[(i)+1])))
#define ulGetLongBE(i,a)	((unsigned long)(a[(i)+3])|\
					(unsigned long)(a[(i)+2])<<8|\
					(unsigned long)(a[(i)+1])<<16|\
					(unsigned long)(a[i])<<24)
	/* Font style macros */
#define bIsBold(x)		(((x) & FONT_BOLD) == FONT_BOLD)
#define bIsItalic(x)		(((x) & FONT_ITALIC) == FONT_ITALIC)
#define bIsUnderline(x)		(((x) & FONT_UNDERLINE) == FONT_UNDERLINE)
#define bIsCapitals(x)		(((x) & FONT_CAPITALS) == FONT_CAPITALS)
#define bIsSmallCapitals(x)	(((x) & FONT_SMALL_CAPITALS) == FONT_SMALL_CAPITALS)
#define bIsStrike(x)		(((x) & FONT_STRIKE) == FONT_STRIKE)
#define bIsHidden(x)		(((x) & FONT_HIDDEN) == FONT_HIDDEN)
#define bIsMarkDel(x)		(((x) & FONT_MARKDEL) == FONT_MARKDEL)
#define bIsSuperscript(x)	(((x) & FONT_SUPERSCRIPT) == FONT_SUPERSCRIPT)
#define bIsSubscript(x)		(((x) & FONT_SUBSCRIPT) == FONT_SUBSCRIPT)
	/* Table border style code macros */
#define bIsTableBorderTop(x)	(((x) & TABLE_BORDER_TOP) == TABLE_BORDER_TOP)
#define bIsTableBorderLeft(x)	(((x) & TABLE_BORDER_LEFT) == TABLE_BORDER_LEFT)
#define bIsTableBorderBottom(x)	(((x) & TABLE_BORDER_BOTTOM) == TABLE_BORDER_BOTTOM)
#define bIsTableBorderRight(x)	(((x) & TABLE_BORDER_RIGHT) == TABLE_BORDER_RIGHT)
	/* Computation macros */
#if defined(__riscos)
/* From Words half-points to draw units (plus a percentage) */
#define lWord2DrawUnits00(x)	((long)(x) * 320)
#define lWord2DrawUnits20(x)	((long)(x) * 384)
#define lToBaseLine(x)		((long)(x) *  45)
#endif /* __riscos */
/* From twips (1/20 of a point) to millipoints */
#define lTwips2MilliPoints(x)	((long)(x) * 50)
/* From twips (1/20 of a point) to points */
#define dTwips2Points(x)	((double)(x) / 20.0)
/* From default characters (16 OS units wide) to millipoints */
#define lChar2MilliPoints(x)	((long)(x) * 6400)
#define iMilliPoints2Char(x)	(int)(((long)(x) + 3200) / 6400)
#define iDrawUnits2Char(x)	(int)(((long)(x) + 2048) / 4096)
/* From draw units (1/180*256 inch) to millipoints (1/72*1000 inch) */
#define lDrawUnits2MilliPoints(x)	(((long)(x) * 25 +  8) / 16)
#define lMilliPoints2DrawUnits(x)	(((long)(x) * 16 + 12) / 25)
#define lPoints2DrawUnits(x)		((long)(x) * 640)
#define dDrawUnits2Points(x)		((double)(x) / 640.0)

/* Special characters */
#define IGNORE_CHARACTER	0x00	/* ^@ */
#define PICTURE			0x01	/* ^A */
#define FOOTNOTE_OR_ENDNOTE	0x02	/* ^B */
#define FOOTNOTE_SEPARATOR	0x03	/* ^C */
#define FOOTNOTE_CONTINUATION	0x04	/* ^D */
#define ANNOTATION		0x05	/* ^E */
#define TABLE_SEPARATOR		0x07	/* ^G */
#define FRAME			0x08	/* ^H */
#define TAB			0x09	/* ^I */
/* End of line characters */
#define LINE_FEED		0x0a	/* ^J */
#define HARD_RETURN		0x0b	/* ^K */
#define PAGE_BREAK		0x0c	/* ^L */
#define PAR_END			0x0d	/* ^M */
#define COLUMN_FEED		0x0e	/* ^N */
/* Embedded stuff */
#define START_EMBEDDED		0x13	/* ^S */
#define END_IGNORE		0x14	/* ^T */
#define END_EMBEDDED		0x15	/* ^U */
/* Special characters */
#if defined(DEBUG)
#define FILLER_CHAR		'~'
#else
#define FILLER_CHAR		' '
#endif /* DEBUG */
#define TABLE_SEPARATOR_CHAR	'|'
/* Pseudo characters. These must be outside the Unicode range */
#define FOOTNOTE_CHAR		((unsigned long)0xffff + 1)
#define ENDNOTE_CHAR		((unsigned long)0xffff + 2)
#define UNKNOWN_NOTE_CHAR	((unsigned long)0xffff + 3)

/* Charactercodes as used by Word */
#define WORD_UNBREAKABLE_JOIN		0x1e
#define WORD_SOFT_HYPHEN		0x1f

/* Unicode characters */
#define UNICODE_DOUBLE_LEFT_ANGLE_QMARK	0x00ab
#define UNICODE_MIDDLE_DOT		0x00b7
#define UNICODE_DOUBLE_RIGHT_ANGLE_QMARK	0x00bb
#define UNICODE_CAPITAL_D_WITH_STROKE	0x0110
#define UNICODE_SMALL_D_WITH_STROKE	0x0111
#define UNICODE_CAPITAL_LIGATURE_OE	0x0152
#define UNICODE_SMALL_LIGATURE_OE	0x0153
#define UNICODE_SMALL_F_HOOK		0x0192
#define UNICODE_GREEK_CAPITAL_CHI	0x03a7
#define UNICODE_GREEK_SMALL_UPSILON	0x03c5
#define UNICODE_MODIFIER_CIRCUMFLEX	0x02c6
#define UNICODE_SMALL_TILDE		0x02dc
#define UNICODE_SMALL_LETTER_OMEGA	0x03c9
#define UNICODE_EN_QUAD			0x2000
#define UNICODE_EM_QUAD			0x2001
#define UNICODE_EN_SPACE		0x2002
#define UNICODE_EM_SPACE		0x2003
#define UNICODE_THREE_PER_EM_SPACE	0x2004
#define UNICODE_FOUR_PER_EM_SPACE	0x2005
#define UNICODE_SIX_PER_EM_SPACE	0x2006
#define UNICODE_FIGURE_SPACE		0x2007
#define UNICODE_PUNCTUATION_SPACE	0x2008
#define UNICODE_THIN_SPACE		0x2009
#define UNICODE_HAIR_SPACE		0x200a
#define UNICODE_ZERO_WIDTH_SPACE	0x200b
#define UNICODE_ZERO_WIDTH_NON_JOINER	0x200c
#define UNICODE_ZERO_WIDTH_JOINER	0x200d
#define UNICODE_LEFT_TO_RIGHT_MARK	0x200e
#define UNICODE_RIGHT_TO_LEFT_MARK	0x200f
#define UNICODE_HYPHEN			0x2010
#define UNICODE_NON_BREAKING_HYPHEN	0x2011
#define UNICODE_FIGURE_DASH		0x2012
#define UNICODE_EN_DASH			0x2013
#define UNICODE_EM_DASH			0x2014
#define UNICODE_HORIZONTAL_BAR		0x2015
#define UNICODE_DOUBLE_VERTICAL_LINE	0x2016
#define UNICODE_DOUBLE_LOW_LINE		0x2017
#define UNICODE_LEFT_SINGLE_QMARK	0x2018
#define UNICODE_RIGHT_SINGLE_QMARK	0x2019
#define UNICODE_SINGLE_LOW_9_QMARK	0x201a
#define UNICODE_SINGLE_HIGH_REV_9_QMARK	0x201b
#define UNICODE_LEFT_DOUBLE_QMARK	0x201c
#define UNICODE_RIGHT_DOUBLE_QMARK	0x201d
#define UNICODE_DOUBLE_LOW_9_QMARK	0x201e
#define UNICODE_DOUBLE_HIGH_REV_9_QMARK	0x201f
#define UNICODE_DAGGER			0x2020
#define UNICODE_DOUBLE_DAGGER		0x2021
#define UNICODE_BULLET			0x2022
#define UNICODE_TRIANGULAR_BULLET	0x2023
#define UNICODE_ONE_DOT_LEADER		0x2024
#define UNICODE_TWO_DOT_LEADER		0x2025
#define UNICODE_ELLIPSIS		0x2026
#define UNICODE_HYPHENATION_POINT	0x2027
#define UNICODE_LEFT_TO_RIGHT_EMBEDDING	0x202a
#define UNICODE_RIGHT_TO_LEFT_EMBEDDING	0x202b
#define UNICODE_POP_DIRECTIONAL_FORMATTING	0x202c
#define UNICODE_LEFT_TO_RIGHT_OVERRIDE	0x202d
#define UNICODE_RIGHT_TO_LEFT_OVERRIDE	0x202e
#define UNICODE_NARROW_NO_BREAK_SPACE	0x202f
#define UNICODE_PER_MILLE_SIGN		0x2030
#define UNICODE_PRIME			0x2032
#define UNICODE_DOUBLE_PRIME		0x2033
#define UNICODE_SINGLE_LEFT_ANGLE_QMARK	0x2039
#define UNICODE_SINGLE_RIGHT_ANGLE_QMARK	0x203a
#define UNICODE_UNDERTIE		0x203f
#define UNICODE_FRACTION_SLASH		0x2044
#define UNICODE_EURO_SIGN		0x20ac
#define UNICODE_CIRCLE			0x20dd
#define UNICODE_SQUARE			0x20de
#define UNICODE_DIAMOND			0x20df
#define UNICODE_NUMERO_SIGN		0x2116
#define UNICODE_TRADEMARK_SIGN		0x2122
#define UNICODE_KELVIN_SIGN		0x212a
#define UNICODE_LEFTWARDS_ARROW		0x2190
#define UNICODE_UPWARDS_ARROW		0x2191
#define UNICODE_RIGHTWARDS_ARROW	0x2192
#define UNICODE_DOWNWARDS_ARROW		0x2193
#define UNICODE_N_ARY_SUMMATION		0x2211
#define UNICODE_MINUS_SIGN		0x2212
#define UNICODE_DIVISION_SLASH		0x2215
#define UNICODE_ASTERISK_OPERATOR	0x2217
#define UNICODE_BULLET_OPERATOR		0x2219
#define UNICODE_RATIO			0x2236
#define UNICODE_TILDE_OPERATOR		0x223c
#define UNICODE_BD_LIGHT_HORIZONTAL	0x2500
#define UNICODE_BD_LIGHT_VERTICAL	0x2502
#define UNICODE_BD_LIGHT_DOWN_RIGHT	0x250c
#define UNICODE_BD_LIGHT_DOWN_AND_LEFT	0x2510
#define UNICODE_BD_LIGHT_UP_AND_RIGHT	0x2514
#define UNICODE_BD_LIGHT_UP_AND_LEFT	0x2518
#define UNICODE_BD_LIGHT_VERTICAL_AND_RIGHT	0x251c
#define UNICODE_BD_LIGHT_VERTICAL_AND_LEFT	0x2524
#define UNICODE_BD_LIGHT_DOWN_AND_HORIZONTAL	0x252c
#define UNICODE_BD_LIGHT_UP_AND_HORIZONTAL	0x2534
#define UNICODE_BD_LIGHT_VERTICAL_AND_HORIZONTAL	0x253c
#define UNICODE_BD_DOUBLE_HORIZONTAL	0x2550
#define UNICODE_BD_DOUBLE_VERTICAL	0x2551
#define UNICODE_BD_DOUBLE_DOWN_AND_RIGHT	0x2554
#define UNICODE_BD_DOUBLE_DOWN_AND_LEFT	0x2557
#define UNICODE_BD_DOUBLE_UP_AND_RIGHT	0x255a
#define UNICODE_BD_DOUBLE_UP_AND_LEFT	0x255d
#define UNICODE_BD_DOUBLE_VERTICAL_AND_RIGHT	0x2560
#define UNICODE_BD_DOUBLE_VERTICAL_AND_LEFT	0x2563
#define UNICODE_BD_DOUBLE_DOWN_AND_HORIZONTAL	0x2566
#define UNICODE_BD_DOUBLE_UP_AND_HORIZONTAL	0x2569
#define UNICODE_BD_DOUBLE_VERTICAL_AND_HORIZONTAL	0x256c
#define UNICODE_LIGHT_SHADE		0x2591
#define UNICODE_MEDIUM_SHADE		0x2592
#define UNICODE_DARK_SHADE		0x2593
#define UNICODE_BLACK_SQUARE		0x25a0
#define UNICODE_BLACK_CLUB_SUIT		0x2663
#define UNICODE_SMALL_LIGATURE_FI	0xfb01
#define UNICODE_SMALL_LIGATURE_FL	0xfb02
#define UNICODE_ZERO_WIDTH_NO_BREAK_SPACE	0xfeff

#if defined(__riscos)
#define OUR_ELLIPSIS			0x8c
#define OUR_EM_DASH			0x98
#define OUR_UNBREAKABLE_JOIN		0x99
#else
#define OUR_ELLIPSIS			'.'
#define OUR_EM_DASH			'-'
#define OUR_UNBREAKABLE_JOIN		'-'
#endif /* __riscos */
#define OUR_DIAMOND			'-'

#endif /* __wordconst_h */