-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathwordconst.h
321 lines (312 loc) · 11.5 KB
/
wordconst.h
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 */