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 */
|