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
 * wordconst.h
3
 * Copyright (C) 1998-2004 A.J. van Os; Released under GNU GPL
4
 *
5
 * Description:
6
 * Constants and macros for the interpretation of MS Word files
7
 */
8
 
9
#if !defined(__wordconst_h)
10
#define __wordconst_h 1
11
 
12
/*
13
 * A bit odd definition of the type Boolean, but RISC OS insists
14
 * on this and Linux/Unix doesn't mind.
15
 */
16
#if !defined(BOOL)
17
#define BOOL int
18
#define TRUE 1
19
#define FALSE 0
20
#endif /* !BOOL */
21
 
22
/* Block sizes */
23
#define HEADER_SIZE			768
24
#define BIG_BLOCK_SIZE			512
25
#define PROPERTY_SET_STORAGE_SIZE	128
26
#define SMALL_BLOCK_SIZE		 64
27
/* Switch size of Depot use */
28
#define MIN_SIZE_FOR_BBD_USE		0x1000
29
/* Table sizes */
30
#define TABLE_COLUMN_MAX		 31
31
/* Maximum number of tabs positions in a paragraph */
32
#define NUMBER_OF_TABS_MAX		 64
33
/* Font sizes (in half-points) */
34
#define MIN_FONT_SIZE			  8
35
#define DEFAULT_FONT_SIZE		 20
36
#define MAX_FONT_SIZE			240
37
#define MIN_TABLEFONT_SIZE		 16
38
#define MAX_TABLEFONT_SIZE		 20
39
/* Font styles */
40
#define FONT_REGULAR			0x0000
41
#define FONT_BOLD			0x0001
42
#define FONT_ITALIC			0x0002
43
#define FONT_UNDERLINE			0x0004
44
#define FONT_CAPITALS			0x0008
45
#define FONT_SMALL_CAPITALS		0x0010
46
#define FONT_STRIKE			0x0020
47
#define FONT_HIDDEN			0x0040
48
#define FONT_MARKDEL			0x0080
49
#define FONT_SUPERSCRIPT		0x0100
50
#define FONT_SUBSCRIPT			0x0200
51
/* Font colors */
52
#define FONT_COLOR_DEFAULT		 0
53
#define FONT_COLOR_BLACK		 1
54
#define FONT_COLOR_BLUE			 2
55
#define FONT_COLOR_CYAN			 3
56
#define FONT_COLOR_GREEN		 4
57
#define FONT_COLOR_MAGENTA		 5
58
#define FONT_COLOR_RED			 6
59
#define FONT_COLOR_YELLOW		 7
60
#define FONT_COLOR_WHITE		 8
61
/* Special block numbers */
62
#define END_OF_CHAIN			0xfffffffeUL
63
#define UNUSED_BLOCK			0xffffffffUL
64
/* Blocksize (512 bytes) and maximum filesize (4 GB) gives 0..7fffff */
65
#define MAX_BLOCKNUMBER			0x007fffffUL
66
/* Invalid character position */
67
#define CP_INVALID			0xffffffffUL
68
/* Invalid file offset */
69
#define FC_INVALID			0xffffffffUL
70
/* Special istd values */
71
#define ISTD_INVALID			USHRT_MAX
72
#define ISTD_NORMAL			0
73
/* Properties modifier without value */
74
#define IGNORE_PROPMOD			0
75
/* Types of lists */
76
#define LIST_ARABIC_NUM			0x00
77
#define LIST_UPPER_ROMAN		0x01
78
#define LIST_LOWER_ROMAN		0x02
79
#define LIST_UPPER_ALPHA		0x03
80
#define LIST_LOWER_ALPHA		0x04
81
#define LIST_ORDINAL_NUM		0x05
82
#define LIST_NUMBER_TXT			0x06
83
#define LIST_ORDINAL_TXT		0x07
84
#define LIST_OUTLINE_NUM		0x16
85
#define LIST_SPECIAL			0x17
86
#define LIST_SPECIAL2			0x19
87
#define LIST_BULLETS			0xff
88
/* Types of paragraph alignment */
89
#define ALIGNMENT_LEFT			0x00
90
#define ALIGNMENT_CENTER		0x01
91
#define ALIGNMENT_RIGHT			0x02
92
#define ALIGNMENT_JUSTIFY		0x03
93
/* Minimum vertical space before and after a heading line */
94
#define HEADING_GAP			120	/* twips */
95
/* Style identifier */
96
#define STI_USER			0xffe
97
#define STI_NIL				0xfff
98
/* Table border style codes */
99
#define TABLE_BORDER_TOP		0x01
100
#define TABLE_BORDER_LEFT		0x02
101
#define TABLE_BORDER_BOTTOM		0x04
102
#define TABLE_BORDER_RIGHT		0x08
103
 
104
/* Macros */
105
	/* Get macros */
106
#define ucGetByte(i,a)		((unsigned char)(a[i]))
107
#define usGetWord(i,a)		((unsigned short)\
108
					((unsigned int)(a[(i)+1])<<8|\
109
					 (unsigned int)(a[i])))
110
#define ulGetLong(i,a)		((unsigned long)(a[i])|\
111
					(unsigned long)(a[(i)+1])<<8|\
112
					(unsigned long)(a[(i)+2])<<16|\
113
					(unsigned long)(a[(i)+3])<<24)
114
#define usGetWordBE(i,a)	((unsigned short)\
115
					((unsigned int)(a[i])<<8|\
116
					 (unsigned int)(a[(i)+1])))
117
#define ulGetLongBE(i,a)	((unsigned long)(a[(i)+3])|\
118
					(unsigned long)(a[(i)+2])<<8|\
119
					(unsigned long)(a[(i)+1])<<16|\
120
					(unsigned long)(a[i])<<24)
121
	/* Font style macros */
122
#define bIsBold(x)		(((x) & FONT_BOLD) == FONT_BOLD)
123
#define bIsItalic(x)		(((x) & FONT_ITALIC) == FONT_ITALIC)
124
#define bIsUnderline(x)		(((x) & FONT_UNDERLINE) == FONT_UNDERLINE)
125
#define bIsCapitals(x)		(((x) & FONT_CAPITALS) == FONT_CAPITALS)
126
#define bIsSmallCapitals(x)	(((x) & FONT_SMALL_CAPITALS) == FONT_SMALL_CAPITALS)
127
#define bIsStrike(x)		(((x) & FONT_STRIKE) == FONT_STRIKE)
128
#define bIsHidden(x)		(((x) & FONT_HIDDEN) == FONT_HIDDEN)
129
#define bIsMarkDel(x)		(((x) & FONT_MARKDEL) == FONT_MARKDEL)
130
#define bIsSuperscript(x)	(((x) & FONT_SUPERSCRIPT) == FONT_SUPERSCRIPT)
131
#define bIsSubscript(x)		(((x) & FONT_SUBSCRIPT) == FONT_SUBSCRIPT)
132
	/* Table border style code macros */
133
#define bIsTableBorderTop(x)	(((x) & TABLE_BORDER_TOP) == TABLE_BORDER_TOP)
134
#define bIsTableBorderLeft(x)	(((x) & TABLE_BORDER_LEFT) == TABLE_BORDER_LEFT)
135
#define bIsTableBorderBottom(x)	(((x) & TABLE_BORDER_BOTTOM) == TABLE_BORDER_BOTTOM)
136
#define bIsTableBorderRight(x)	(((x) & TABLE_BORDER_RIGHT) == TABLE_BORDER_RIGHT)
137
	/* Computation macros */
138
#if defined(__riscos)
139
/* From Words half-points to draw units (plus a percentage) */
140
#define lWord2DrawUnits00(x)	((long)(x) * 320)
141
#define lWord2DrawUnits20(x)	((long)(x) * 384)
142
#define lToBaseLine(x)		((long)(x) *  45)
143
#endif /* __riscos */
144
/* From twips (1/20 of a point) to millipoints */
145
#define lTwips2MilliPoints(x)	((long)(x) * 50)
146
/* From twips (1/20 of a point) to points */
147
#define dTwips2Points(x)	((double)(x) / 20.0)
148
/* From default characters (16 OS units wide) to millipoints */
149
#define lChar2MilliPoints(x)	((long)(x) * 6400)
150
#define iMilliPoints2Char(x)	(int)(((long)(x) + 3200) / 6400)
151
#define iDrawUnits2Char(x)	(int)(((long)(x) + 2048) / 4096)
152
/* From draw units (1/180*256 inch) to millipoints (1/72*1000 inch) */
153
#define lDrawUnits2MilliPoints(x)	(((long)(x) * 25 +  8) / 16)
154
#define lMilliPoints2DrawUnits(x)	(((long)(x) * 16 + 12) / 25)
155
#define lPoints2DrawUnits(x)		((long)(x) * 640)
156
#define dDrawUnits2Points(x)		((double)(x) / 640.0)
157
 
158
/* Special characters */
159
#define IGNORE_CHARACTER	0x00	/* ^@ */
160
#define PICTURE			0x01	/* ^A */
161
#define FOOTNOTE_OR_ENDNOTE	0x02	/* ^B */
162
#define FOOTNOTE_SEPARATOR	0x03	/* ^C */
163
#define FOOTNOTE_CONTINUATION	0x04	/* ^D */
164
#define ANNOTATION		0x05	/* ^E */
165
#define TABLE_SEPARATOR		0x07	/* ^G */
166
#define FRAME			0x08	/* ^H */
167
#define TAB			0x09	/* ^I */
168
/* End of line characters */
169
#define LINE_FEED		0x0a	/* ^J */
170
#define HARD_RETURN		0x0b	/* ^K */
171
#define PAGE_BREAK		0x0c	/* ^L */
172
#define PAR_END			0x0d	/* ^M */
173
#define COLUMN_FEED		0x0e	/* ^N */
174
/* Embedded stuff */
175
#define START_EMBEDDED		0x13	/* ^S */
176
#define END_IGNORE		0x14	/* ^T */
177
#define END_EMBEDDED		0x15	/* ^U */
178
/* Special characters */
179
#if defined(DEBUG)
180
#define FILLER_CHAR		'~'
181
#else
182
#define FILLER_CHAR		' '
183
#endif /* DEBUG */
184
#define TABLE_SEPARATOR_CHAR	'|'
185
/* Pseudo characters. These must be outside the Unicode range */
186
#define FOOTNOTE_CHAR		((unsigned long)0xffff + 1)
187
#define ENDNOTE_CHAR		((unsigned long)0xffff + 2)
188
#define UNKNOWN_NOTE_CHAR	((unsigned long)0xffff + 3)
189
 
190
/* Charactercodes as used by Word */
191
#define WORD_UNBREAKABLE_JOIN		0x1e
192
#define WORD_SOFT_HYPHEN		0x1f
193
 
194
/* Unicode characters */
195
#define UNICODE_DOUBLE_LEFT_ANGLE_QMARK	0x00ab
196
#define UNICODE_MIDDLE_DOT		0x00b7
197
#define UNICODE_DOUBLE_RIGHT_ANGLE_QMARK	0x00bb
198
#define UNICODE_CAPITAL_D_WITH_STROKE	0x0110
199
#define UNICODE_SMALL_D_WITH_STROKE	0x0111
200
#define UNICODE_CAPITAL_LIGATURE_OE	0x0152
201
#define UNICODE_SMALL_LIGATURE_OE	0x0153
202
#define UNICODE_SMALL_F_HOOK		0x0192
203
#define UNICODE_GREEK_CAPITAL_CHI	0x03a7
204
#define UNICODE_GREEK_SMALL_UPSILON	0x03c5
205
#define UNICODE_MODIFIER_CIRCUMFLEX	0x02c6
206
#define UNICODE_SMALL_TILDE		0x02dc
207
#define UNICODE_SMALL_LETTER_OMEGA	0x03c9
208
#define UNICODE_EN_QUAD			0x2000
209
#define UNICODE_EM_QUAD			0x2001
210
#define UNICODE_EN_SPACE		0x2002
211
#define UNICODE_EM_SPACE		0x2003
212
#define UNICODE_THREE_PER_EM_SPACE	0x2004
213
#define UNICODE_FOUR_PER_EM_SPACE	0x2005
214
#define UNICODE_SIX_PER_EM_SPACE	0x2006
215
#define UNICODE_FIGURE_SPACE		0x2007
216
#define UNICODE_PUNCTUATION_SPACE	0x2008
217
#define UNICODE_THIN_SPACE		0x2009
218
#define UNICODE_HAIR_SPACE		0x200a
219
#define UNICODE_ZERO_WIDTH_SPACE	0x200b
220
#define UNICODE_ZERO_WIDTH_NON_JOINER	0x200c
221
#define UNICODE_ZERO_WIDTH_JOINER	0x200d
222
#define UNICODE_LEFT_TO_RIGHT_MARK	0x200e
223
#define UNICODE_RIGHT_TO_LEFT_MARK	0x200f
224
#define UNICODE_HYPHEN			0x2010
225
#define UNICODE_NON_BREAKING_HYPHEN	0x2011
226
#define UNICODE_FIGURE_DASH		0x2012
227
#define UNICODE_EN_DASH			0x2013
228
#define UNICODE_EM_DASH			0x2014
229
#define UNICODE_HORIZONTAL_BAR		0x2015
230
#define UNICODE_DOUBLE_VERTICAL_LINE	0x2016
231
#define UNICODE_DOUBLE_LOW_LINE		0x2017
232
#define UNICODE_LEFT_SINGLE_QMARK	0x2018
233
#define UNICODE_RIGHT_SINGLE_QMARK	0x2019
234
#define UNICODE_SINGLE_LOW_9_QMARK	0x201a
235
#define UNICODE_SINGLE_HIGH_REV_9_QMARK	0x201b
236
#define UNICODE_LEFT_DOUBLE_QMARK	0x201c
237
#define UNICODE_RIGHT_DOUBLE_QMARK	0x201d
238
#define UNICODE_DOUBLE_LOW_9_QMARK	0x201e
239
#define UNICODE_DOUBLE_HIGH_REV_9_QMARK	0x201f
240
#define UNICODE_DAGGER			0x2020
241
#define UNICODE_DOUBLE_DAGGER		0x2021
242
#define UNICODE_BULLET			0x2022
243
#define UNICODE_TRIANGULAR_BULLET	0x2023
244
#define UNICODE_ONE_DOT_LEADER		0x2024
245
#define UNICODE_TWO_DOT_LEADER		0x2025
246
#define UNICODE_ELLIPSIS		0x2026
247
#define UNICODE_HYPHENATION_POINT	0x2027
248
#define UNICODE_LEFT_TO_RIGHT_EMBEDDING	0x202a
249
#define UNICODE_RIGHT_TO_LEFT_EMBEDDING	0x202b
250
#define UNICODE_POP_DIRECTIONAL_FORMATTING	0x202c
251
#define UNICODE_LEFT_TO_RIGHT_OVERRIDE	0x202d
252
#define UNICODE_RIGHT_TO_LEFT_OVERRIDE	0x202e
253
#define UNICODE_NARROW_NO_BREAK_SPACE	0x202f
254
#define UNICODE_PER_MILLE_SIGN		0x2030
255
#define UNICODE_PRIME			0x2032
256
#define UNICODE_DOUBLE_PRIME		0x2033
257
#define UNICODE_SINGLE_LEFT_ANGLE_QMARK	0x2039
258
#define UNICODE_SINGLE_RIGHT_ANGLE_QMARK	0x203a
259
#define UNICODE_UNDERTIE		0x203f
260
#define UNICODE_FRACTION_SLASH		0x2044
261
#define UNICODE_EURO_SIGN		0x20ac
262
#define UNICODE_CIRCLE			0x20dd
263
#define UNICODE_SQUARE			0x20de
264
#define UNICODE_DIAMOND			0x20df
265
#define UNICODE_NUMERO_SIGN		0x2116
266
#define UNICODE_TRADEMARK_SIGN		0x2122
267
#define UNICODE_KELVIN_SIGN		0x212a
268
#define UNICODE_LEFTWARDS_ARROW		0x2190
269
#define UNICODE_UPWARDS_ARROW		0x2191
270
#define UNICODE_RIGHTWARDS_ARROW	0x2192
271
#define UNICODE_DOWNWARDS_ARROW		0x2193
272
#define UNICODE_N_ARY_SUMMATION		0x2211
273
#define UNICODE_MINUS_SIGN		0x2212
274
#define UNICODE_DIVISION_SLASH		0x2215
275
#define UNICODE_ASTERISK_OPERATOR	0x2217
276
#define UNICODE_BULLET_OPERATOR		0x2219
277
#define UNICODE_RATIO			0x2236
278
#define UNICODE_TILDE_OPERATOR		0x223c
279
#define UNICODE_BD_LIGHT_HORIZONTAL	0x2500
280
#define UNICODE_BD_LIGHT_VERTICAL	0x2502
281
#define UNICODE_BD_LIGHT_DOWN_RIGHT	0x250c
282
#define UNICODE_BD_LIGHT_DOWN_AND_LEFT	0x2510
283
#define UNICODE_BD_LIGHT_UP_AND_RIGHT	0x2514
284
#define UNICODE_BD_LIGHT_UP_AND_LEFT	0x2518
285
#define UNICODE_BD_LIGHT_VERTICAL_AND_RIGHT	0x251c
286
#define UNICODE_BD_LIGHT_VERTICAL_AND_LEFT	0x2524
287
#define UNICODE_BD_LIGHT_DOWN_AND_HORIZONTAL	0x252c
288
#define UNICODE_BD_LIGHT_UP_AND_HORIZONTAL	0x2534
289
#define UNICODE_BD_LIGHT_VERTICAL_AND_HORIZONTAL	0x253c
290
#define UNICODE_BD_DOUBLE_HORIZONTAL	0x2550
291
#define UNICODE_BD_DOUBLE_VERTICAL	0x2551
292
#define UNICODE_BD_DOUBLE_DOWN_AND_RIGHT	0x2554
293
#define UNICODE_BD_DOUBLE_DOWN_AND_LEFT	0x2557
294
#define UNICODE_BD_DOUBLE_UP_AND_RIGHT	0x255a
295
#define UNICODE_BD_DOUBLE_UP_AND_LEFT	0x255d
296
#define UNICODE_BD_DOUBLE_VERTICAL_AND_RIGHT	0x2560
297
#define UNICODE_BD_DOUBLE_VERTICAL_AND_LEFT	0x2563
298
#define UNICODE_BD_DOUBLE_DOWN_AND_HORIZONTAL	0x2566
299
#define UNICODE_BD_DOUBLE_UP_AND_HORIZONTAL	0x2569
300
#define UNICODE_BD_DOUBLE_VERTICAL_AND_HORIZONTAL	0x256c
301
#define UNICODE_LIGHT_SHADE		0x2591
302
#define UNICODE_MEDIUM_SHADE		0x2592
303
#define UNICODE_DARK_SHADE		0x2593
304
#define UNICODE_BLACK_SQUARE		0x25a0
305
#define UNICODE_BLACK_CLUB_SUIT		0x2663
306
#define UNICODE_SMALL_LIGATURE_FI	0xfb01
307
#define UNICODE_SMALL_LIGATURE_FL	0xfb02
308
#define UNICODE_ZERO_WIDTH_NO_BREAK_SPACE	0xfeff
309
 
310
#if defined(__riscos)
311
#define OUR_ELLIPSIS			0x8c
312
#define OUR_EM_DASH			0x98
313
#define OUR_UNBREAKABLE_JOIN		0x99
314
#else
315
#define OUR_ELLIPSIS			'.'
316
#define OUR_EM_DASH			'-'
317
#define OUR_UNBREAKABLE_JOIN		'-'
318
#endif /* __riscos */
319
#define OUR_DIAMOND			'-'
320
 
321
#endif /* __wordconst_h */