Imported from antiword-0.30.tar.gz.
[antiword.git] / wordconst.h
blobb770367ebfae9ad7416b1564beb650d89eb562c5
1 /*
2 * wordconst.h
3 * Copyright (C) 1998,1999 A.J. van Os
5 * Description:
6 * Types and constants for the interpretation of MS Word files
7 */
9 #if !defined(__wordconst_h)
10 #define __wordconst_h 1
13 * A bit odd definition of the type Boolean, but RISC OS insists
14 * on this and Unix doesn't mind.
16 #if !defined(BOOL)
17 #define BOOL int
18 #define TRUE 1
19 #define FALSE 0
20 #endif /* !BOOL */
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 /* Font styles */
38 #define FONT_REGULAR 0x00
39 #define FONT_BOLD 0x01
40 #define FONT_ITALIC 0x02
41 #define FONT_UNDERLINE 0x04
42 #define FONT_CAPITALS 0x08
43 #define FONT_SMALL_CAPITALS 0x10
44 #define FONT_STRIKE 0x20
45 #define FONT_HIDDEN 0x40
46 /* Font colours */
47 #define FONT_COLOUR_DEFAULT 0
48 #define FONT_COLOUR_BLACK 1
49 #define FONT_COLOUR_RED 6
50 /* End of a block chain */
51 #define END_OF_CHAIN (-2)
52 /* Types of lists */
53 #define LIST_ARABIC_NUM 0x00
54 #define LIST_ROMAN_NUM_UPPER 0x01
55 #define LIST_ROMAN_NUM_LOWER 0x02
56 #define LIST_UPPER_ALPHA 0x03
57 #define LIST_LOWER_ALPHA 0x04
58 #define LIST_BULLETS 0xff
59 /* Types of paragraph alignment */
60 #define ALIGNMENT_LEFT 0x00
61 #define ALIGNMENT_CENTER 0x01
62 #define ALIGNMENT_RIGHT 0x02
63 #define ALIGNMENT_JUSTIFY 0x03
65 /* Macros */
66 /* Get macros */
67 #define ucGetByte(i,a) ((unsigned char)(a[i]))
68 #define usGetWord(i,a) ((unsigned short)(a[i+1])<<8|\
69 (unsigned short)(a[i]))
70 #define ulGetLong(i,a) ((unsigned long)(a[i+3])<<24|\
71 (unsigned long)(a[i+2])<<16|\
72 (unsigned long)(a[i+1])<<8|\
73 (unsigned long)(a[i]))
74 /* Font style macros */
75 #define bIsBold(x) (((x) & FONT_BOLD) == FONT_BOLD)
76 #define bIsItalic(x) (((x) & FONT_ITALIC) == FONT_ITALIC)
77 #define bIsUnderline(x) (((x) & FONT_UNDERLINE) == FONT_UNDERLINE)
78 #define bIsCapitals(x) (((x) & FONT_CAPITALS) == FONT_CAPITALS)
79 #define bIsSmallCapitals(x) (((x) & FONT_SMALL_CAPITALS) == FONT_SMALL_CAPITALS)
80 #define bIsStrike(x) (((x) & FONT_STRIKE) == FONT_STRIKE)
81 #define bIsHidden(x) (((x) & FONT_HIDDEN) == FONT_HIDDEN)
82 /* Computation macros */
83 /* From Words half-points to draw units (plus a percentage) */
84 #define iWord2DrawUnits00(x) ((int)(x) * 320)
85 #define iWord2DrawUnits06(x) (((int)(x) * 3392 + 5) / 10)
86 #define iWord2DrawUnits20(x) ((int)(x) * 384)
87 /* From twips (1/20 of a point) to draw units */
88 #define iTwips2DrawUnits(x) ((int)(x) * 32)
89 /* From twips (1/20 of a point) to millipoints */
90 #define iTwips2MilliPoints(x) ((int)(x) * 50)
91 /* From default characters (16 OS units wide) to millipoints */
92 #define iChar2MilliPoints(x) ((int)(x) * 6400)
93 #define iMilliPoints2Char(x) (((int)(x) + 3200) / 6400)
94 #define iDrawUnits2Char(x) (((int)(x) + 2048) / 4096)
95 /* From draw units (1/180*256 inch) to millipoints (1/72*1000 inch) */
96 #define iDrawUnits2MilliPoints(x) (((int)(x) * 25 + 8) / 16)
97 #define iMilliPoints2DrawUnits(x) (((int)(x) * 16 + 12) / 25)
99 /* Special characters */
100 #define IGNORE_CHAR 0x00 /* ^@ */
101 #define PICTURE 0x01 /* ^A */
102 #define FOOTNOTE_OR_ENDNOTE 0x02 /* ^B */
103 #define ANNOTATION 0x05 /* ^E */
104 #define TABLE_SEPARATOR 0x07 /* ^G */
105 #define FRAME 0x08 /* ^H */
106 #define TAB 0x09 /* ^I */
107 /* End of line characters */
108 #define HARD_RETURN 0x0b /* ^K */
109 #define FORM_FEED 0x0c /* ^L */
110 #define PAR_END 0x0d /* ^M */
111 #define COLUMN_FEED 0x0e /* ^N */
112 /* Embedded stuff */
113 #define START_EMBEDDED 0x13 /* ^S */
114 #define END_IGNORE 0x14 /* ^T */
115 #define END_EMBEDDED 0x15 /* ^U */
116 /* Special characters */
117 #if defined(DEBUG)
118 #define FILLER_CHAR 0xb7
119 #else
120 #define FILLER_CHAR ' '
121 #endif /* DEBUG */
122 #define TABLE_SEPARATOR_CHAR '|'
123 /* Pseudo characters. Tese must be outside the Unicode range */
124 #define FOOTNOTE_CHAR ((int)USHRT_MAX + 1)
125 #define ENDNOTE_CHAR ((int)USHRT_MAX + 2)
126 #define UNKNOWN_NOTE_CHAR ((int)USHRT_MAX + 3)
128 /* Charactercodes as used by Word */
129 #define WORD_UNBREAKABLE_JOIN 0x1e
130 #define WORD_SOFT_HYPHEN 0x1f
131 /* Characters with non-standard values (0x80-0x9f) */
132 #define WORD_EURO_SIGN 0x80
133 #define WORD_CEDILLA 0x82
134 #define WORD_DUTCH_GUILDER_SIGN 0x83
135 #define WORD_LOW_DOUBLE_QUOTE 0x84
136 #define WORD_ELLIPSIS 0x85
137 #define WORD_DAGGER 0x86
138 #define WORD_DOUBLE_DAGGER 0x87
139 #define WORD_NON_SPACING_CIRCUMFLEX_ACCENT 0x88
140 #define WORD_PER_MILLE_SIGN 0x89
141 #define WORD_LEFT_SINGLE_QMARK 0x8b
142 #define WORD_CAPITAL_LIGATURE_OE 0x8c
143 #define WORD_LEFT_SINGLE_QUOTE 0x91
144 #define WORD_RIGHT_SINGLE_QUOTE 0x92
145 #define WORD_OPENING_DOUBLE_QUOTE 0x93
146 #define WORD_CLOSING_DOUBLE_QUOTE 0x94
147 #define WORD_BULLET 0x95
148 #define WORD_EN_DASH 0x96
149 #define WORD_EM_DASH 0x97
150 #define WORD_NON_SPACING_TILDE 0x98
151 #define WORD_TRADEMARK 0x99
152 #define WORD_RIGHT_SINGLE_QMARK 0x9b
153 #define WORD_SMALL_LIGATURE_OE 0x9c
155 /* Some Unicode characters that can be translated into ISO-8859-1 */
156 #define UNICODE_CAPITAL_W_CIRCUMFLEX_ACCENT 0x0174
157 #define UNICODE_SMALL_W_CIRCUMFLEX_ACCENT 0x0175
158 #define UNICODE_CAPITAL_Y_CIRCUMFLEX_ACCENT 0x0176
159 #define UNICODE_SMALL_Y_CIRCUMFLEX_ACCENT 0x0177
160 #define UNICODE_LEFT_SINGLE_QUOTE_ALT 0x1091
161 #define UNICODE_RIGHT_SINGLE_QUOTE_ALT 0x1092
162 #define UNICODE_HYPHEN 0x2010
163 #define UNICODE_NON_BREAKING_HYPHEN 0x2011
164 #define UNICODE_FIGURE_DASH 0x2012
165 #define UNICODE_EN_DASH 0x2013
166 #define UNICODE_EM_DASH 0x2014
167 #define UNICODE_HORIZONTAL_BAR 0x2015
168 #define UNICODE_DOUBLE_VERTICAL_LINE 0x2016
169 #define UNICODE_DOUBLE_LOW_LINE 0x2017
170 #define UNICODE_LEFT_SINGLE_QUOTE 0x2018
171 #define UNICODE_RIGHT_SINGLE_QUOTE 0x2019
172 #define UNICODE_OPENING_DOUBLE_QUOTE 0x201c
173 #define UNICODE_CLOSING_DOUBLE_QUOTE 0x201d
174 #define UNICODE_LOW_DOUBLE_QUOTE 0x201e
175 #define UNICODE_DAGGER 0x2020
176 #define UNICODE_DOUBLE_DAGGER 0x2021
177 #define UNICODE_BULLET 0x2022
178 #define UNICODE_ELLIPSIS 0x2026
179 #define UNICODE_HYPHENATION_POINT 0x2027
180 #define UNICODE_PER_MILLE_SIGN 0x2030
181 #define UNICODE_LEFT_SINGLE_QMARK 0x2039
182 #define UNICODE_RIGHT_SINGLE_QMARK 0x203a
183 #define UNICODE_FRACTION_SLASH 0x2044
184 #define UNICODE_EURO_SIGN 0x20ac
185 #define UNICODE_TRADEMARK 0x2122
186 #define UNICODE_WHITE_SMILING_FACE 0x263a
187 #define UNICODE_BLACK_SMILING_FACE 0x263b
188 #define UNICODE_DIAMOND 0xf075
189 #define UNICODE_BULLET_ALT 0xf0b7
190 #define UNICODE_COPYRIGHT 0xf0d3
192 /* Some Mac characters that can be translated into ISO-8859-1 */
193 #define MAC_CAPTAL_A_DIAERESIS 0x80
194 #define MAC_CAPTAL_A_RING_ABOVE 0x81
195 #define MAC_CAPTAL_C_CEDILLA 0x82
196 #define MAC_CAPTAL_O_ACUTE_ACCENT 0x83
197 #define MAC_CAPTAL_N_TILDE 0x84
198 #define MAC_CAPTAL_O_DIAERESIS 0x85
199 #define MAC_CAPTAL_U_DIAERESIS 0x86
200 #define MAC_SMALL_A_ACUTE_ACCENT 0x87
201 #define MAC_SMALL_A_GRAVE_ACCENT 0x88
202 #define MAC_SMALL_A_CIRCUMFLEX_ACCENT 0x89
203 #define MAC_SMALL_A_DIAERESIS 0x8a
204 #define MAC_SMALL_A_TILDE 0x8b
205 #define MAC_SMALL_A_RING_ABOVE 0x8c
206 #define MAC_SMALL_C_CEDILLA 0x8d
207 #define MAC_SMALL_E_ACUTE_ACCENT 0x8e
208 #define MAC_SMALL_E_GRAVE_ACCENT 0x8f
209 #define MAC_SMALL_E_CIRCUMFLEX_ACCENT 0x90
210 #define MAC_SMALL_E_DIAERESIS 0x91
211 #define MAC_SMALL_I_ACUTE_ACCENT 0x92
212 #define MAC_SMALL_I_GRAVE_ACCENT 0x93
213 #define MAC_SMALL_I_CIRCUMFLEX_ACCENT 0x94
214 #define MAC_SMALL_I_DIAERESIS 0x95
215 #define MAC_SMALL_N_TILDE 0x96
216 #define MAC_SMALL_O_ACUTE_ACCENT 0x97
217 #define MAC_SMALL_O_GRAVE_ACCENT 0x98
218 #define MAC_SMALL_O_CIRCUMFLEX_ACCENT 0x99
219 #define MAC_SMALL_O_DIAERESIS 0x9a
220 #define MAC_SMALL_O_TILDE 0x9b
221 #define MAC_SMALL_U_ACUTE_ACCENT 0x9c
222 #define MAC_SMALL_U_GRAVE_ACCENT 0x9d
223 #define MAC_SMALL_U_CIRCUMFLEX_ACCENT 0x9e
224 #define MAC_SMALL_U_DIAERESIS 0x9f
225 #define MAC_SMALL_SHARP_S 0xa7
226 #define MAC_LEFT_DOUBLE_QMARK 0xc7
227 #define MAC_RIGHT_DOUBLE_QMARK 0xc8
228 #define MAC_EN_DASH 0xd0
229 #define MAC_EM_DASH 0xd1
230 #define MAC_OPENING_DOUBLE_QUOTE 0xd2
231 #define MAC_CLOSING_DOUBLE_QUOTE 0xd3
232 #define MAC_LEFT_SINGLE_QUOTE 0xd4
233 #define MAC_RIGHT_SINGLE_QUOTE 0xd5
235 /* Local characters */
236 #if defined(__riscos)
237 #define OUR_CAPITAL_W_CIRCUMFLEX_ACCENT 0x81
238 #define OUR_SMALL_W_CIRCUMFLEX_ACCENT 0x82
239 #define OUR_CAPITAL_Y_CIRCUMFLEX_ACCENT 0x85
240 #define OUR_SMALL_Y_CIRCUMFLEX_ACCENT 0x86
241 #define OUR_ELLIPSIS 0x8c
242 #define OUR_TRADEMARK 0x8d
243 #define OUR_PER_MILLE_SIGN 0x8e
244 #define OUR_BULLET 0x8f
245 #define OUR_LEFT_SINGLE_QUOTE 0x90
246 #define OUR_RIGHT_SINGLE_QUOTE 0x91
247 #define OUR_LEFT_SINGLE_QMARK 0x92
248 #define OUR_RIGHT_SINGLE_QMARK 0x93
249 #define OUR_OPENING_DOUBLE_QUOTE 0x94
250 #define OUR_CLOSING_DOUBLE_QUOTE 0x95
251 #define OUR_LOW_DOUBLE_QUOTE 0x96
252 #define OUR_EN_DASH 0x97
253 #define OUR_EM_DASH 0x98
254 #define OUR_UNBREAKABLE_JOIN 0x99
255 #define OUR_CAPITAL_LIGATURE_OE 0x9a
256 #define OUR_SMALL_LIGATURE_OE 0x9b
257 #define OUR_DAGGER 0x9c
258 #define OUR_DOUBLE_DAGGER 0x9d
259 #define OUR_CEDILLA 0xb8
260 #else
261 #define OUR_CAPITAL_W_CIRCUMFLEX_ACCENT 'W'
262 #define OUR_SMALL_W_CIRCUMFLEX_ACCENT 'w'
263 #define OUR_CAPITAL_Y_CIRCUMFLEX_ACCENT 'Y'
264 #define OUR_SMALL_Y_CIRCUMFLEX_ACCENT 'y'
265 #define OUR_ELLIPSIS '.'
266 #define OUR_TRADEMARK '?'
267 #define OUR_PER_MILLE_SIGN '?'
268 #define OUR_BULLET '+'
269 #define OUR_LEFT_SINGLE_QUOTE '\''
270 #define OUR_RIGHT_SINGLE_QUOTE '\''
271 #define OUR_LEFT_SINGLE_QMARK '\''
272 #define OUR_RIGHT_SINGLE_QMARK '\''
273 #define OUR_OPENING_DOUBLE_QUOTE '"'
274 #define OUR_CLOSING_DOUBLE_QUOTE '"'
275 #define OUR_LOW_DOUBLE_QUOTE '"'
276 #define OUR_EN_DASH '-'
277 #define OUR_EM_DASH '-'
278 #define OUR_UNBREAKABLE_JOIN '-'
279 #define OUR_CAPITAL_LIGATURE_OE '?'
280 #define OUR_SMALL_LIGATURE_OE '?'
281 #define OUR_DAGGER '-'
282 #define OUR_DOUBLE_DAGGER '='
283 #define OUR_CEDILLA ','
284 #endif /* __riscos */
286 #define OUR_NON_SPACING_CIRCUMFLEX_ACCENT '^'
287 #define OUR_EURO_SIGN 'E' /* For the time being */
288 #define OUR_DUTCH_GUILDER_SIGN 'f'
289 #define OUR_NON_SPACING_TILDE '~'
290 #define OUR_HYPHEN '-'
291 #define OUR_DOUBLE_VERTICAL_LINE '|'
292 #define OUR_DOUBLE_LOW_LINE '_'
293 #define OUR_FRACTION_SLASH '/'
294 #define OUR_DIAMOND '-'
295 #define OUR_WHITE_SMILING_FACE '#'
296 #define OUR_BLACK_SMILING_FACE '#'
298 #define OUR_COPYRIGHT 0xa9
299 #define OUR_LEFT_DOUBLE_QMARK 0xab
300 #define OUR_RIGHT_DOUBLE_QMARK 0xbb
301 #define OUR_CAPTAL_A_DIAERESIS 0xc4
302 #define OUR_CAPTAL_A_RING_ABOVE 0xc5
303 #define OUR_CAPTAL_C_CEDILLA 0xc7
304 #define OUR_CAPTAL_O_ACUTE_ACCENT 0xc9
305 #define OUR_CAPTAL_N_TILDE 0xd1
306 #define OUR_CAPTAL_O_DIAERESIS 0xd6
307 #define OUR_CAPTAL_U_DIAERESIS 0xdc
308 #define OUR_SMALL_SHARP_S 0xdf
309 #define OUR_SMALL_A_GRAVE_ACCENT 0xe0
310 #define OUR_SMALL_A_ACUTE_ACCENT 0xe1
311 #define OUR_SMALL_A_CIRCUMFLEX_ACCENT 0xe2
312 #define OUR_SMALL_A_TILDE 0xe3
313 #define OUR_SMALL_A_DIAERESIS 0xe4
314 #define OUR_SMALL_A_RING_ABOVE 0xe5
315 #define OUR_SMALL_C_CEDILLA 0xe7
316 #define OUR_SMALL_E_GRAVE_ACCENT 0xe8
317 #define OUR_SMALL_E_ACUTE_ACCENT 0xe9
318 #define OUR_SMALL_E_CIRCUMFLEX_ACCENT 0xea
319 #define OUR_SMALL_E_DIAERESIS 0xeb
320 #define OUR_SMALL_I_GRAVE_ACCENT 0xec
321 #define OUR_SMALL_I_ACUTE_ACCENT 0xed
322 #define OUR_SMALL_I_CIRCUMFLEX_ACCENT 0xee
323 #define OUR_SMALL_I_DIAERESIS 0xef
324 #define OUR_SMALL_N_TILDE 0xf1
325 #define OUR_SMALL_O_GRAVE_ACCENT 0xf2
326 #define OUR_SMALL_O_ACUTE_ACCENT 0xf3
327 #define OUR_SMALL_O_CIRCUMFLEX_ACCENT 0xf4
328 #define OUR_SMALL_O_DIAERESIS 0xf6
329 #define OUR_SMALL_O_TILDE 0xf5
330 #define OUR_SMALL_U_GRAVE_ACCENT 0xf9
331 #define OUR_SMALL_U_ACUTE_ACCENT 0xfa
332 #define OUR_SMALL_U_CIRCUMFLEX_ACCENT 0xfb
333 #define OUR_SMALL_U_DIAERESIS 0xfc
335 #endif /* __wordconst_h */