home *** CD-ROM | disk | FTP | other *** search
/ Best Tools for JAVA / Best Tools for JAVA.iso / CONVERTR / RTF2HTML / SRC / RTF2HTML.TAR / rtftohtml_src / Libs / h / rtf.h.dist < prev    next >
Encoding:
Text File  |  1994-11-05  |  33.8 KB  |  1,099 lines

  1. /*
  2.  * rtf.h - RTF document processing stuff.  Release 1.11.  
  3.  */
  4.  
  5.  
  6. /*
  7.  * Twentieths of a point (twips) per inch (Many RTF measurements
  8.  * are in twips per inch (tpi) units).  Assumes 72 points/inch.
  9.  */
  10.  
  11. # define    rtfTpi        1440
  12.  
  13. /*
  14.  * RTF buffer size (avoids BUFSIZ, which differs across systems)
  15.  */
  16.  
  17. # define    rtfBufSiz    1024
  18.  
  19. /*
  20.  * Tokens are associated with up to three classification numbers:
  21.  *
  22.  * Class number: Broadest (least detailed) breakdown.  For programs
  23.  *     that only care about gross token distinctions.
  24.  * Major/minor numbers: Within their class, tokens have a major
  25.  *     number, and may also have a minor number to further
  26.  *     distinquish tokens with the same major number.
  27.  *
  28.  *    *** Class, major and minor token numbers are all >= 0 ***
  29.  *
  30.  * Tokens that can't be classified are put in the "unknown" class.
  31.  * For such, the major and minor numbers are meaningless, although
  32.  * rtfTextBuf may be of interest then.
  33.  *
  34.  * Text tokens are a single character, and the major number indicates
  35.  * the character value (note: can be non-ascii, i.e., greater than 127).
  36.  * There is no minor number.
  37.  *
  38.  * Control symbols may have a parameter value, which will be found in
  39.  * rtfParam.  If no parameter was given, rtfParam = rtfNoParam.
  40.  *
  41.  * RTFGetToken() return value is the class number, but it sets all the
  42.  * global token vars.
  43.  *
  44.  * rtfEOF is a fake token used by the reader; the writer never sees
  45.  * it (except in the token reader hook, if it installs one).
  46.  */
  47.  
  48.  
  49. /*
  50.  * Information pertaining to last token read by RTFToken.  The
  51.  * text is exactly as it occurs in the input file, e.g., "\{"
  52.  * will be found in rtfTextBuf as "\{", even though it means "{".
  53.  * These variables are also set when styles are reprocessed.
  54.  */
  55.  
  56. extern char    *rtfTextBuf;        /* text of token */
  57. extern int    rtfTextLen;        /* length of token in rtfTextBuf */
  58. extern int    rtfClass;        /* token class */
  59. extern int    rtfMajor;        /* token major number */
  60. extern int    rtfMinor;        /* token minor number */
  61. extern int    rtfParam;        /* control symbol parameter */
  62.  
  63. # ifdef THINK_C
  64. # define    rtfNoParam    (-32768)    /* 16-bit max. neg. value */
  65. # endif
  66. # ifndef rtfNoParam
  67. # define    rtfNoParam    (-1000000)
  68. # endif
  69.  
  70. extern long    rtfLineNum;        /* input line number */
  71. extern int    rtfLinePos;        /* input line position */
  72.  
  73. /*
  74.  * For some reason, the no-style number is 222
  75.  */
  76.  
  77. # define    rtfNoStyleNum        222
  78. # define    rtfNormalStyleNum    0
  79.  
  80.  
  81. /*
  82.  * Token classes (must be zero-based and sequential)
  83.  */
  84.  
  85. # define    rtfUnknown    0
  86. # define    rtfGroup    1
  87. # define    rtfText        2
  88. # define    rtfControl    3
  89. # define    rtfEOF        4
  90. # define    rtfMaxClass    5    /* highest class + 1 */
  91.  
  92. /*
  93.  * Group class major numbers
  94.  */
  95.  
  96. # define    rtfBeginGroup    0
  97. # define    rtfEndGroup    1
  98.  
  99. /*
  100.  * Control class major and minor numbers.
  101.  */
  102.  
  103. # define    rtfVersion    0
  104.  
  105. # define    rtfDefFont    1
  106.  
  107. # define    rtfCharSet    2
  108. # define        rtfAnsiCharSet        0
  109. # define        rtfMacCharSet        1
  110. # define        rtfPcCharSet        2
  111. # define        rtfPcaCharSet        3
  112.  
  113.  
  114. /* destination minor numbers should be zero-based and sequential */
  115.  
  116. # define    rtfDestination    3
  117. # define        rtfFontTbl        0
  118. # define        rtfFontAltName        1    /* new in 1.10 */
  119. # define        rtfEmbeddedFont        2    /* new in 1.10 */
  120. # define        rtfFontFile        3    /* new in 1.10 */
  121. # define        rtfFileTbl        4    /* new in 1.10 */
  122. # define        rtfFileInfo        5    /* new in 1.10 */
  123. # define        rtfColorTbl        6
  124. # define        rtfStyleSheet        7
  125. # define        rtfKeyCode        8
  126. # define        rtfRevisionTbl        9    /* new in 1.10 */
  127. # define        rtfInfo            10
  128. # define        rtfITitle        11
  129. # define        rtfISubject        12
  130. # define        rtfIAuthor        13
  131. # define        rtfIOperator        14
  132. # define        rtfIKeywords        15
  133. # define        rtfIComment        16
  134. # define        rtfIDoccomm        18
  135. # define        rtfIVerscomm        19
  136. # define        rtfNextFile        20    /* reclassified in 1.10 */
  137. # define        rtfTemplate        21    /* reclassified in 1.10 */
  138. # define        rtfFNSep        22
  139. # define        rtfFNContSep        23
  140. # define        rtfFNContNotice        24
  141. # define        rtfENSep        25    /* new in 1.10 */
  142. # define        rtfENContSep        26    /* new in 1.10 */
  143. # define        rtfENContNotice        27    /* new in 1.10 */
  144. # define        rtfNeXTHelpL        28    /* NeXt - non standard */
  145. # define        rtfParNumLevelStyle    29    /* new in 1.10 */
  146. # define        rtfHeader        30
  147. # define        rtfFooter        31
  148. # define        rtfHeaderLeft        32
  149. # define        rtfHeaderRight        33
  150. # define        rtfHeaderFirst        34
  151. # define        rtfFooterLeft        35
  152. # define        rtfFooterRight        36
  153. # define        rtfFooterFirst        37
  154. # define        rtfParNumText        38    /* new in 1.10 */
  155. # define        rtfParNumbering        39    /* new in 1.10 */
  156. # define        rtfParNumTextAfter    40    /* new in 1.10 */
  157. # define        rtfParNumTextBefore    41    /* new in 1.10 */
  158. # define        rtfBookmarkStart    42
  159. # define        rtfBookmarkEnd        43
  160. # define        rtfPict            44
  161. # define        rtfObject        45
  162. # define        rtfObjClass        46
  163. # define        rtfObjName        47
  164. # define        rtfObjTime        48    /* new in 1.10 */
  165. # define        rtfObjData        49
  166. # define        rtfObjAlias        50
  167. # define        rtfObjSection        51
  168. # define        rtfObjResult        52
  169. # define        rtfObjItem        53    /* new in 1.10 */
  170. # define        rtfObjTopic        54    /* new in 1.10 */
  171. # define        rtfDrawObject        55    /* new in 1.10 */
  172. # define        rtfFootnote        56
  173. # define        rtfAnnotRefStart    57    /* new in 1.10 */
  174. # define        rtfAnnotRefEnd        58    /* new in 1.10 */
  175. # define        rtfAnnotID        59    /* reclassified in 1.10 */
  176. # define        rtfAnnotAuthor        60    /* new in 1.10 */
  177. # define        rtfAnnotation        61    /* reclassified in 1.10 */
  178. # define        rtfAnnotRef        62    /* new in 1.10 */
  179. # define        rtfAnnotTime        63    /* new in 1.10 */
  180. # define        rtfAnnotIcon        64    /* new in 1.10 */
  181. # define        rtfField        65
  182. # define        rtfFieldInst        66
  183. # define        rtfFieldResult        67
  184. # define        rtfDataField        68    /* new in 1.10 */
  185. # define        rtfIndex        69
  186. # define        rtfIndexText        70
  187. # define        rtfIndexRange        71
  188. # define        rtfTOC            72
  189. # define        rtfNeXTGraphic        73
  190. # define        rtfNeXTHelpM        74  /* NeXt - non standard */
  191. # define        rtfIBackupTime        75
  192. # define        rtfICreateTime        76
  193. # define        rtfIPrintTime        77
  194. # define        rtfIRevisionTime    78
  195. # define        rtfDrawTextBoxText    79    /* new in 1.10 */
  196. # define        rtfFontEmbedded    80    /* new in 1.10 */
  197. # define        rtfTOCN    81    
  198. # define        rtfMaxDestination    82    /* highest dest + 1 */
  199.  
  200. # define    rtfFontFamily    4
  201. # define        rtfFFNil        0
  202. # define        rtfFFRoman        1
  203. # define        rtfFFSwiss        2
  204. # define        rtfFFModern        3
  205. # define        rtfFFScript        4
  206. # define        rtfFFDecor        5
  207. # define        rtfFFTech        6
  208. # define        rtfFFBidirectional    7    /* new in 1.10 */
  209.  
  210. # define    rtfColorName    5
  211. # define        rtfRed            0
  212. # define        rtfGreen        1
  213. # define        rtfBlue            2
  214.  
  215. # define    rtfSpecialChar    6
  216.     /* special chars seen in \info destination */
  217. # define        rtfIIntVersion        0
  218. # define        rtfIEditTime        5
  219. # define        rtfIYear        6
  220. # define        rtfIMonth        7
  221. # define        rtfIDay            8
  222. # define        rtfIHour        9
  223. # define        rtfIMinute        10
  224. # define        rtfISecond        11    /* new in 1.10 */
  225. # define        rtfINPages        12
  226. # define        rtfINWords        13
  227. # define        rtfINChars        14
  228. # define        rtfIIntID        15
  229.     /* other special chars */
  230. # define        rtfCurHeadDate        16
  231. # define        rtfCurHeadDateLong    17
  232. # define        rtfCurHeadDateAbbrev    18
  233. # define        rtfCurHeadTime        19
  234. # define        rtfCurHeadPage        20
  235. # define        rtfSectNum        21    /* new in 1.10 */
  236. # define        rtfCurFNote        22
  237. # define        rtfCurAnnotRef        23
  238. # define        rtfFNoteSep        24
  239. # define        rtfFNoteCont        25
  240. # define        rtfCell            26
  241. # define        rtfRow            27
  242. # define        rtfPar            28
  243. # define        rtfSect            29
  244. # define        rtfPage            30
  245. # define        rtfColumn        31
  246. # define        rtfLine            32
  247. # define        rtfSoftPage        33    /* new in 1.10 */
  248. # define        rtfSoftColumn        34    /* new in 1.10 */
  249. # define        rtfSoftLine        35    /* new in 1.10 */
  250. # define        rtfSoftLineHt        36    /* new in 1.10 */
  251. # define        rtfTab            37
  252. # define        rtfEmDash        38
  253. # define        rtfEnDash        39
  254. # define        rtfEmSpace        40    /* new in 1.10 */
  255. # define        rtfEnSpace        41    /* new in 1.10 */
  256. # define        rtfBullet        42
  257. # define        rtfLQuote        43
  258. # define        rtfRQuote        44
  259. # define        rtfLDblQuote        45
  260. # define        rtfRDblQuote        46
  261. # define        rtfFormula        47
  262. # define        rtfNoBrkSpace        49
  263. # define        rtfNoReqHyphen        50
  264. # define        rtfNoBrkHyphen        51
  265. # define        rtfOptDest        52
  266. # define        rtfLTRMark        53    /* new in 1.10 */
  267. # define        rtfRTLMark        54    /* new in 1.10 */
  268. # define        rtfNoWidthJoiner    55    /* new in 1.10 */
  269. # define        rtfNoWidthNonJoiner    56    /* new in 1.10 */
  270. # define        rtfCurHeadPict        57    /* valid? */
  271. /*# define        rtfCurAnnot        58*/    /* apparently not used */
  272. # define        rtfIVersion        59    
  273.  
  274. # define    rtfStyleAttr    7
  275. # define        rtfAdditive        0    /* new in 1.10 */
  276. # define        rtfBasedOn        1
  277. # define        rtfNext            2
  278.  
  279. # define    rtfDocAttr    8
  280. # define        rtfDefTab        0
  281. # define        rtfHyphHotZone        1
  282. # define        rtfHyphConsecLines    2    /* new in 1.10 */
  283. # define        rtfHyphCaps        3    /* new in 1.10 */
  284. # define        rtfHyphAuto        4    /* new in 1.10 */
  285. # define        rtfLineStart        5
  286. # define        rtfFracWidth        6
  287. # define        rtfMakeBackup        7
  288. # define        rtfRTFDefault        8
  289. # define        rtfPSOverlay        9
  290. # define        rtfDocTemplate        10    /* new in 1.10 */
  291. # define        rtfDefLanguage        11
  292. # define        rtfFENoteType        12    /* new in 1.10 */
  293. # define        rtfFNoteEndSect        13
  294. # define        rtfFNoteEndDoc        14
  295. # define        rtfFNoteText        15
  296. # define        rtfFNoteBottom        16
  297. # define        rtfENoteEndSect        17    /* new in 1.10 */
  298. # define        rtfENoteEndDoc        18    /* new in 1.10 */
  299. # define        rtfENoteText        19    /* new in 1.10 */
  300. # define        rtfENoteBottom        20    /* new in 1.10 */
  301. # define        rtfFNoteStart        21
  302. # define        rtfENoteStart        22    /* new in 1.10 */
  303. # define        rtfFNoteRestartPage    23    /* new in 1.10 */
  304. # define        rtfFNoteRestart        24
  305. # define        rtfFNoteRestartCont    25    /* new in 1.10 */
  306. # define        rtfENoteRestart        26    /* new in 1.10 */
  307. # define        rtfENoteRestartCont    27    /* new in 1.10 */
  308. # define        rtfFNoteNumArabic    28    /* new in 1.10 */
  309. # define        rtfFNoteNumLLetter    29    /* new in 1.10 */
  310. # define        rtfFNoteNumULetter    30    /* new in 1.10 */
  311. # define        rtfFNoteNumLRoman    31    /* new in 1.10 */
  312. # define        rtfFNoteNumURoman    32    /* new in 1.10 */
  313. # define        rtfFNoteNumChicago    33    /* new in 1.10 */
  314. # define        rtfENoteNumArabic    34    /* new in 1.10 */
  315. # define        rtfENoteNumLLetter    35    /* new in 1.10 */
  316. # define        rtfENoteNumULetter    36    /* new in 1.10 */
  317. # define        rtfENoteNumLRoman    37    /* new in 1.10 */
  318. # define        rtfENoteNumURoman    38    /* new in 1.10 */
  319. # define        rtfENoteNumChicago    39    /* new in 1.10 */
  320. # define        rtfPaperWidth        40
  321. # define        rtfPaperHeight        41
  322. # define        rtfPaperSize        42    /* new in 1.10 */
  323. # define        rtfLeftMargin        43
  324. # define        rtfRightMargin        44
  325. # define        rtfTopMargin        45
  326. # define        rtfBottomMargin        46
  327. # define        rtfFacingPage        47
  328. # define        rtfGutterWid        48
  329. # define        rtfMirrorMargin        49
  330. # define        rtfLandscape        50
  331. # define        rtfPageStart        51
  332. # define        rtfWidowCtrl        52
  333. # define        rtfLinkStyles        53    /* new in 1.10 */
  334. # define        rtfNoAutoTabIndent    54    /* new in 1.10 */
  335. # define        rtfWrapSpaces        55    /* new in 1.10 */
  336. # define        rtfPrintColorsBlack    56    /* new in 1.10 */
  337. # define        rtfNoExtraSpaceRL    57    /* new in 1.10 */
  338. # define        rtfNoColumnBalance    58    /* new in 1.10 */
  339. # define        rtfCvtMailMergeQuote    59    /* new in 1.10 */
  340. # define        rtfSuppressTopSpace    60    /* new in 1.10 */
  341. # define        rtfSuppressPreParSpace    61    /* new in 1.10 */
  342. # define        rtfCombineTblBorders    62    /* new in 1.10 */
  343. # define        rtfTranspMetafiles    63    /* new in 1.10 */
  344. # define        rtfSwapBorders        64    /* new in 1.10 */
  345. # define        rtfShowHardBreaks    65    /* new in 1.10 */
  346. # define        rtfFormProtected    66    /* new in 1.10 */
  347. # define        rtfAllProtected        67    /* new in 1.10 */
  348. # define        rtfFormShading        68    /* new in 1.10 */
  349. # define        rtfFormDisplay        69    /* new in 1.10 */
  350. # define        rtfPrintData        70    /* new in 1.10 */
  351. # define        rtfRevProtected        71    /* new in 1.10 */
  352. # define        rtfRevisions        72
  353. # define        rtfRevDisplay        73
  354. # define        rtfRevBar        74
  355. # define        rtfAnnotProtected    75    /* new in 1.10 */
  356. # define        rtfRTLDoc        76    /* new in 1.10 */
  357. # define        rtfLTRDoc        77    /* new in 1.10 */
  358.  
  359. # define    rtfSectAttr    9
  360. # define        rtfSectDef        0
  361. # define        rtfENoteHere        1
  362. # define        rtfPrtBinFirst        2
  363. # define        rtfPrtBin        3
  364. # define        rtfSectStyleNum        4    /* new in 1.10 */
  365. # define        rtfNoBreak        5
  366. # define        rtfColBreak        6
  367. # define        rtfPageBreak        7
  368. # define        rtfEvenBreak        8
  369. # define        rtfOddBreak        9
  370. # define        rtfColumns        10
  371. # define        rtfColumnSpace        11
  372. # define        rtfColumnNumber        12    /* new in 1.10 */
  373. # define        rtfColumnSpRight    13    /* new in 1.10 */
  374. # define        rtfColumnWidth        14    /* new in 1.10 */
  375. # define        rtfColumnLine        15
  376. # define        rtfLineModulus        16
  377. # define        rtfLineDist        17
  378. # define        rtfLineStarts        18
  379. # define        rtfLineRestart        19
  380. # define        rtfLineRestartPg    20
  381. # define        rtfLineCont        21
  382. # define        rtfSectPageWid        22
  383. # define        rtfSectPageHt        23
  384. # define        rtfSectMarginLeft    24
  385. # define        rtfSectMarginRight    25
  386. # define        rtfSectMarginTop    26
  387. # define        rtfSectMarginBottom    27
  388. # define        rtfSectMarginGutter    28
  389. # define        rtfSectLandscape    29
  390. # define        rtfTitleSpecial        30
  391. # define        rtfHeaderY        31
  392. # define        rtfFooterY        32
  393. # define        rtfPageStarts        33
  394. # define        rtfPageCont        34
  395. # define        rtfPageRestart        35
  396. # define        rtfPageNumRight        36    /* renamed in 1.10 */
  397. # define        rtfPageNumTop        37
  398. # define        rtfPageDecimal        38
  399. # define        rtfPageURoman        39
  400. # define        rtfPageLRoman        40
  401. # define        rtfPageULetter        41
  402. # define        rtfPageLLetter        42
  403. # define        rtfPageNumHyphSep    43    /* new in 1.10 */
  404. # define        rtfPageNumSpaceSep    44    /* new in 1.10 */
  405. # define        rtfPageNumColonSep    45    /* new in 1.10 */
  406. # define        rtfPageNumEmdashSep    46    /* new in 1.10 */
  407. # define        rtfPageNumEndashSep    47    /* new in 1.10 */
  408. # define        rtfTopVAlign        48
  409. # define        rtfBottomVAlign        49
  410. # define        rtfCenterVAlign        50
  411. # define        rtfJustVAlign        51
  412. # define        rtfRTLSect        52    /* new in 1.10 */
  413. # define        rtfLTRSect        53    /* new in 1.10 */
  414. # define        rtfPageNumLevel        54    /* new in 1.10 */
  415. # define        rtfSectUnlocked        55    /* new in 1.10 */
  416.  
  417. # define    rtfTblAttr    10
  418. # define        rtfRowDef        0
  419. # define        rtfRowGapH        1
  420. # define        rtfCellPos        2
  421. # define        rtfMergeRngFirst    3
  422. # define        rtfMergePrevious    4
  423. # define        rtfRowLeft        5
  424. # define        rtfRowRight        6
  425. # define        rtfRowCenter        7
  426. # define        rtfRowLeftEdge        8
  427. # define        rtfRowHt        9
  428. # define        rtfRowHeader        10    /* new in 1.10 */
  429. # define        rtfRowKeep        11    /* new in 1.10 */
  430. # define        rtfRTLRow        12    /* new in 1.10 */
  431. # define        rtfLTRRow        13    /* new in 1.10 */
  432. # define        rtfRowBordTop        14    /* new in 1.10 */
  433. # define        rtfRowBordLeft        15    /* new in 1.10 */
  434. # define        rtfRowBordBottom    16    /* new in 1.10 */
  435. # define        rtfRowBordRight        17    /* new in 1.10 */
  436. # define        rtfRowBordHoriz        18    /* new in 1.10 */
  437. # define        rtfRowBordVert        19    /* new in 1.10 */
  438. # define        rtfCellBordBottom    20
  439. # define        rtfCellBordTop        21
  440. # define        rtfCellBordLeft        22
  441. # define        rtfCellBordRight    23
  442. # define        rtfCellShading        24
  443. # define        rtfCellBgPatH        25
  444. # define        rtfCellBgPatV        26
  445. # define        rtfCellFwdDiagBgPat    27
  446. # define        rtfCellBwdDiagBgPat    28
  447. # define        rtfCellHatchBgPat    29
  448. # define        rtfCellDiagHatchBgPat    30
  449. # define        rtfCellDarkBgPatH    31
  450. # define        rtfCellDarkBgPatV    32
  451. # define        rtfCellFwdDarkBgPat    33
  452. # define        rtfCellBwdDarkBgPat    34
  453. # define        rtfCellDarkHatchBgPat    35
  454. # define        rtfCellDarkDiagHatchBgPat 36
  455. # define        rtfCellBgPatLineColor    37
  456. # define        rtfCellBgPatColor    38
  457.  
  458. # define    rtfParAttr    11
  459. # define        rtfParDef        0
  460. # define        rtfStyleNum        1
  461. # define        rtfHyphenate        2    /* new in 1.10 */
  462. # define        rtfInTable        3
  463. # define        rtfKeep            4
  464. # define        rtfNoWidowControl    5    /* new in 1.10 */
  465. # define        rtfKeepNext        6
  466. # define        rtfOutlineLevel        7    /* new in 1.10 */
  467. # define        rtfNoLineNum        8
  468. # define        rtfPBBefore        9
  469. # define        rtfSideBySide        10
  470. # define        rtfQuadLeft        11
  471. # define        rtfQuadRight        12
  472. # define        rtfQuadJust        13
  473. # define        rtfQuadCenter        14
  474. # define        rtfFirstIndent        15
  475. # define        rtfLeftIndent        16
  476. # define        rtfRightIndent        17
  477. # define        rtfSpaceBefore        18
  478. # define        rtfSpaceAfter        19
  479. # define        rtfSpaceBetween        20
  480. # define        rtfSpaceMultiply    21    /* new in 1.10 */
  481. # define        rtfSubDocument        22    /* new in 1.10 */
  482. # define        rtfRTLPar        23    /* new in 1.10 */
  483. # define        rtfLTRPar        24    /* new in 1.10 */
  484. # define        rtfTabPos        25
  485. # define        rtfTabLeft        26    /* new in 1.10 */
  486. # define        rtfTabRight        27
  487. # define        rtfTabCenter        28
  488. # define        rtfTabDecimal        29
  489. # define        rtfTabBar        30
  490. # define        rtfLeaderDot        31
  491. # define        rtfLeaderHyphen        32
  492. # define        rtfLeaderUnder        33
  493. # define        rtfLeaderThick        34
  494. # define        rtfLeaderEqual        35
  495. # define        rtfParLevel        36    /* new in 1.10 */
  496. # define        rtfParBullet        37    /* new in 1.10 */
  497. # define        rtfParSimple        38    /* new in 1.10 */
  498. # define        rtfParNumCont        39    /* new in 1.10 */
  499. # define        rtfParNumOnce        40    /* new in 1.10 */
  500. # define        rtfParNumAcross        41    /* new in 1.10 */
  501. # define        rtfParHangIndent    42    /* new in 1.10 */
  502. # define        rtfParNumRestart    43    /* new in 1.10 */
  503. # define        rtfParNumCardinal    44    /* new in 1.10 */
  504. # define        rtfParNumDecimal    45    /* new in 1.10 */
  505. # define        rtfParNumULetter    46    /* new in 1.10 */
  506. # define        rtfParNumURoman        47    /* new in 1.10 */
  507. # define        rtfParNumLLetter    48    /* new in 1.10 */
  508. # define        rtfParNumLRoman        49    /* new in 1.10 */
  509. # define        rtfParNumOrdinal    50    /* new in 1.10 */
  510. # define        rtfParNumOrdinalText    51    /* new in 1.10 */
  511. # define        rtfParNumBold        52    /* new in 1.10 */
  512. # define        rtfParNumItalic        53    /* new in 1.10 */
  513. # define        rtfParNumAllCaps    54    /* new in 1.10 */
  514. # define        rtfParNumSmallCaps    55    /* new in 1.10 */
  515. # define        rtfParNumUnder        56    /* new in 1.10 */
  516. # define        rtfParNumDotUnder    57    /* new in 1.10 */
  517. # define        rtfParNumDbUnder    58    /* new in 1.10 */
  518. # define        rtfParNumNoUnder    59    /* new in 1.10 */
  519. # define        rtfParNumWordUnder    60    /* new in 1.10 */
  520. # define        rtfParNumStrikethru    61    /* new in 1.10 */
  521. # define        rtfParNumForeColor    62    /* new in 1.10 */
  522. # define        rtfParNumFont        63    /* new in 1.10 */
  523. # define        rtfParNumFontSize    64    /* new in 1.10 */
  524. # define        rtfParNumIndent        65    /* new in 1.10 */
  525. # define        rtfParNumSpacing    66    /* new in 1.10 */
  526. # define        rtfParNumInclPrev    67    /* new in 1.10 */
  527. # define        rtfParNumCenter        68    /* new in 1.10 */
  528. # define        rtfParNumLeft        69    /* new in 1.10 */
  529. # define        rtfParNumRight        70    /* new in 1.10 */
  530. # define        rtfParNumStartAt    71    /* new in 1.10 */
  531. # define        rtfBorderTop        72
  532. # define        rtfBorderBottom        73
  533. # define        rtfBorderLeft        74
  534. # define        rtfBorderRight        75
  535. # define        rtfBorderBetween    76
  536. # define        rtfBorderBar        77
  537. # define        rtfBorderBox        78
  538. # define        rtfBorderSingle        79
  539. # define        rtfBorderThick        80
  540. # define        rtfBorderShadow        81
  541. # define        rtfBorderDouble        82
  542. # define        rtfBorderDot        83
  543. # define        rtfBorderDash        84    /* new in 1.10 */
  544. # define        rtfBorderHair        85
  545. # define        rtfBorderWidth        86
  546. # define        rtfBorderColor        87
  547. # define        rtfBorderSpace        88
  548. # define        rtfShading        89
  549. # define        rtfBgPatH        90
  550. # define        rtfBgPatV        91
  551. # define        rtfFwdDiagBgPat        92
  552. # define        rtfBwdDiagBgPat        93
  553. # define        rtfHatchBgPat        94
  554. # define        rtfDiagHatchBgPat    95
  555. # define        rtfDarkBgPatH        96
  556. # define        rtfDarkBgPatV        97
  557. # define        rtfFwdDarkBgPat        98
  558. # define        rtfBwdDarkBgPat        99
  559. # define        rtfDarkHatchBgPat    100
  560. # define        rtfDarkDiagHatchBgPat    101
  561. # define        rtfBgPatLineColor    102
  562. # define        rtfBgPatColor        103
  563.  
  564. # define    rtfCharAttr    12
  565. # define        rtfPlain        0
  566. # define        rtfBold            1
  567. # define        rtfAllCaps        2
  568. # define        rtfDeleted        3
  569. # define        rtfSubScript        4
  570. # define        rtfSubScrShrink        5    /* new in 1.10 */
  571. # define        rtfNoSuperSub        6    /* new in 1.10 */
  572. # define        rtfExpand        7
  573. # define        rtfExpandTwips        8    /* new in 1.10 */
  574. # define        rtfKerning        9    /* new in 1.10 */
  575. # define        rtfFontNum        10
  576. # define        rtfFontSize        11
  577. # define        rtfItalic        12
  578. # define        rtfOutline        13
  579. # define        rtfRevised        14
  580. # define        rtfRevAuthor        15    /* new in 1.10 */
  581. # define        rtfRevDTTM        16    /* new in 1.10 */
  582. # define        rtfSmallCaps        17
  583. # define        rtfShadow        18
  584. # define        rtfStrikeThru        19
  585. # define        rtfUnderline        20
  586. # define        rtfDotUnderline        21    /* renamed in 1.10 */
  587. # define        rtfDbUnderline        22
  588. # define        rtfNoUnderline        23
  589. # define        rtfWordUnderline    24    /* renamed in 1.10 */
  590. # define        rtfSuperScript        25
  591. # define        rtfSuperScrShrink    26    /* new in 1.10 */
  592. # define        rtfInvisible        27
  593. # define        rtfForeColor        28
  594. # define        rtfBackColor        29
  595. # define        rtfRTLChar        30    /* new in 1.10 */
  596. # define        rtfLTRChar        31    /* new in 1.10 */
  597. # define        rtfCharStyleNum        32    /* new in 1.10 */
  598. # define        rtfCharCharSet        33    /* new in 1.10 */
  599. # define        rtfLanguage        34
  600. # define        rtfGray            35
  601.  
  602. # define    rtfPictAttr    13
  603. # define        rtfMacQD        0
  604. # define        rtfPMMetafile        1
  605. # define        rtfWinMetafile        2
  606. # define        rtfDevIndBitmap        3
  607. # define        rtfWinBitmap        4
  608. # define        rtfPixelBits        5
  609. # define        rtfBitmapPlanes        6
  610. # define        rtfBitmapWid        7
  611. # define        rtfPicWid        8
  612. # define        rtfPicHt        9
  613. # define        rtfPicGoalWid        10
  614. # define        rtfPicGoalHt        11
  615. # define        rtfPicScaleX        12
  616. # define        rtfPicScaleY        13
  617. # define        rtfPicScaled        14
  618. # define        rtfPicCropTop        15
  619. # define        rtfPicCropBottom    16
  620. # define        rtfPicCropLeft        17
  621. # define        rtfPicCropRight        18
  622. # define        rtfPicMFHasBitmap    19    /* new in 1.10 */
  623. # define        rtfPicMFBitsPerPixel    20    /* new in 1.10 */
  624. # define        rtfPicBinary        21
  625.  
  626. # define    rtfBookmarkAttr    14
  627. # define        rtfBookmarkFirstCol    0
  628. # define        rtfBookmarkLastCol    1
  629.  
  630. # define    rtfNeXTGrAttr    15
  631. # define        rtfNeXTGWidth        0
  632. # define        rtfNeXTGHeight        1
  633.  
  634. # define    rtfFieldAttr    16
  635. # define        rtfFieldDirty        0
  636. # define        rtfFieldEdited        1
  637. # define        rtfFieldLocked        2
  638. # define        rtfFieldPrivate        3
  639. # define        rtfFieldAlt        4    /* new in 1.10 */
  640.  
  641. # define    rtfTOCAttr    17
  642. # define        rtfTOCType        0
  643. # define        rtfTOCLevel        1
  644.  
  645. # define    rtfPosAttr    18
  646. # define        rtfAbsWid        0
  647. # define        rtfAbsHt        1
  648. # define        rtfRPosMargH        2
  649. # define        rtfRPosPageH        3
  650. # define        rtfRPosColH        4
  651. # define        rtfPosX            5
  652. # define        rtfPosNegX        6    /* new in 1.10 */
  653. # define        rtfPosXCenter        7
  654. # define        rtfPosXInside        8
  655. # define        rtfPosXOutSide        9
  656. # define        rtfPosXRight        10
  657. # define        rtfPosXLeft        11
  658. # define        rtfRPosMargV        12
  659. # define        rtfRPosPageV        13
  660. # define        rtfRPosParaV        14
  661. # define        rtfPosY            15
  662. # define        rtfPosNegY        16    /* new in 1.10 */
  663. # define        rtfPosYInline        17
  664. # define        rtfPosYTop        18
  665. # define        rtfPosYCenter        19
  666. # define        rtfPosYBottom        20
  667. # define        rtfNoWrap        21
  668. # define        rtfDistFromTextAll    22    /* renamed in 1.10 */
  669. # define        rtfDistFromTextX    23    /* new in 1.10 */
  670. # define        rtfDistFromTextY    24    /* new in 1.10 */
  671. # define        rtfTextDistY        25
  672. # define        rtfDropCapLines        26    /* new in 1.10 */
  673. # define        rtfDropCapType        27    /* new in 1.10 */
  674.  
  675. # define    rtfObjAttr    19
  676. # define        rtfObjEmb        0
  677. # define        rtfObjLink        1
  678. # define        rtfObjAutoLink        2
  679. # define        rtfObjSubscriber    3
  680. # define        rtfObjPublisher        4    /* new in 1.10 */
  681. # define        rtfObjICEmb        5
  682. # define        rtfObjLinkSelf        6
  683. # define        rtfObjLock        7
  684. # define        rtfObjUpdate        8    /* new in 1.10 */
  685. # define        rtfObjHt        9
  686. # define        rtfObjWid        10
  687. # define        rtfObjSetSize        11
  688. # define        rtfObjAlign        12    /* new in 1.10 */
  689. # define        rtfObjTransposeY    13
  690. # define        rtfObjCropTop        14
  691. # define        rtfObjCropBottom    15
  692. # define        rtfObjCropLeft        16
  693. # define        rtfObjCropRight        17
  694. # define        rtfObjScaleX        18
  695. # define        rtfObjScaleY        19
  696. # define        rtfObjResRTF        20
  697. # define        rtfObjResPict        21
  698. # define        rtfObjResBitmap        22
  699. # define        rtfObjResText        23
  700. # define        rtfObjResMerge        24
  701. # define        rtfObjBookmarkPubObj    25
  702. # define        rtfObjPubAutoUpdate    26
  703.  
  704. # define    rtfFNoteAttr    20            /* new in 1.10 */
  705. # define        rtfFNAlt        0    /* new in 1.10 */
  706.  
  707. # define    rtfKeyCodeAttr    21            /* new in 1.10 */
  708. # define        rtfAltKey        0    /* new in 1.10 */
  709. # define        rtfShiftKey        1    /* new in 1.10 */
  710. # define        rtfControlKey        2    /* new in 1.10 */
  711. # define        rtfFunctionKey        3    /* new in 1.10 */
  712.  
  713. # define    rtfACharAttr    22            /* new in 1.10 */
  714. # define        rtfACBold        0    /* new in 1.10 */
  715. # define        rtfACAllCaps        1    /* new in 1.10 */
  716. # define        rtfACForeColor        2    /* new in 1.10 */
  717. # define        rtfACSubScript        3    /* new in 1.10 */
  718. # define        rtfACExpand        4    /* new in 1.10 */
  719. # define        rtfACFontNum        5    /* new in 1.10 */
  720. # define        rtfACFontSize        6    /* new in 1.10 */
  721. # define        rtfACItalic        7    /* new in 1.10 */
  722. # define        rtfACLanguage        8    /* new in 1.10 */
  723. # define        rtfACOutline        9    /* new in 1.10 */
  724. # define        rtfACSmallCaps        10    /* new in 1.10 */
  725. # define        rtfACShadow        11    /* new in 1.10 */
  726. # define        rtfACStrikeThru        12    /* new in 1.10 */
  727. # define        rtfACUnderline        13    /* new in 1.10 */
  728. # define        rtfACDotUnderline    14    /* new in 1.10 */
  729. # define        rtfACDbUnderline    15    /* new in 1.10 */
  730. # define        rtfACNoUnderline    16    /* new in 1.10 */
  731. # define        rtfACWordUnderline    17    /* new in 1.10 */
  732. # define        rtfACSuperScript    18    /* new in 1.10 */
  733.  
  734. # define    rtfFontAttr    23            /* new in 1.10 */
  735. # define        rtfFontCharSet        0    /* new in 1.10 */
  736. # define        rtfFontPitch        1    /* new in 1.10 */
  737. # define        rtfFontCodePage        2    /* new in 1.10 */
  738. # define        rtfFTypeNil        3    /* new in 1.10 */
  739. # define        rtfFTypeTrueType    4    /* new in 1.10 */
  740.  
  741. # define    rtfFileAttr    24            /* new in 1.10 */
  742. # define        rtfFileNum        0    /* new in 1.10 */
  743. # define        rtfFileRelPath        1    /* new in 1.10 */
  744. # define        rtfFileOSNum        2    /* new in 1.10 */
  745.  
  746. # define    rtfFileSource    25            /* new in 1.10 */
  747. # define        rtfSrcMacintosh        0    /* new in 1.10 */
  748. # define        rtfSrcDOS        1    /* new in 1.10 */
  749. # define        rtfSrcNTFS        2    /* new in 1.10 */
  750. # define        rtfSrcHPFS        3    /* new in 1.10 */
  751. # define        rtfSrcNetwork        4    /* new in 1.10 */
  752.  
  753. /*
  754.  * Drawing attributes
  755.  */
  756.  
  757. # define    rtfDrawAttr    26            /* new in 1.10 */
  758. # define        rtfDrawLock        0    /* new in 1.10 */
  759. # define        rtfDrawPageRelX        1    /* new in 1.10 */
  760. # define        rtfDrawColumnRelX    2    /* new in 1.10 */
  761. # define        rtfDrawMarginRelX    3    /* new in 1.10 */
  762. # define        rtfDrawPageRelY        4    /* new in 1.10 */
  763. # define        rtfDrawColumnRelY    5    /* new in 1.10 */
  764. # define        rtfDrawMarginRelY    6    /* new in 1.10 */
  765. # define        rtfDrawHeight        7    /* new in 1.10 */
  766.  
  767. # define        rtfDrawBeginGroup    8    /* new in 1.10 */
  768. # define        rtfDrawGroupCount    9    /* new in 1.10 */
  769. # define        rtfDrawEndGroup        10    /* new in 1.10 */
  770. # define        rtfDrawArc        11    /* new in 1.10 */
  771. # define        rtfDrawCallout        12    /* new in 1.10 */
  772. # define        rtfDrawEllipse        13    /* new in 1.10 */
  773. # define        rtfDrawLine        14    /* new in 1.10 */
  774. # define        rtfDrawPolygon        15    /* new in 1.10 */
  775. # define        rtfDrawPolyLine        16    /* new in 1.10 */
  776. # define        rtfDrawRect        17    /* new in 1.10 */
  777. # define        rtfDrawTextBox        18    /* new in 1.10 */
  778.  
  779. # define        rtfDrawOffsetX        19    /* new in 1.10 */
  780. # define        rtfDrawSizeX        20    /* new in 1.10 */
  781. # define        rtfDrawOffsetY        21    /* new in 1.10 */
  782. # define        rtfDrawSizeY        22    /* new in 1.10 */
  783.  
  784. # define        rtfCOAngle        23    /* new in 1.10 */
  785. # define        rtfCOAccentBar        24    /* new in 1.10 */
  786. # define        rtfCOBestFit        25    /* new in 1.10 */
  787. # define        rtfCOBorder        26    /* new in 1.10 */
  788. # define        rtfCOAttachAbsDist    27    /* new in 1.10 */
  789. # define        rtfCOAttachBottom    28    /* new in 1.10 */
  790. # define        rtfCOAttachCenter    29    /* new in 1.10 */
  791. # define        rtfCOAttachTop        30    /* new in 1.10 */
  792. # define        rtfCOLength        31    /* new in 1.10 */
  793. # define        rtfCONegXQuadrant    32    /* new in 1.10 */
  794. # define        rtfCONegYQuadrant    33    /* new in 1.10 */
  795. # define        rtfCOOffset        34    /* new in 1.10 */
  796. # define        rtfCOAttachSmart    35    /* new in 1.10 */
  797. # define        rtfCODoubleLine        36    /* new in 1.10 */
  798. # define        rtfCORightAngle        37    /* new in 1.10 */
  799. # define        rtfCOSingleLine        38    /* new in 1.10 */
  800. # define        rtfCOTripleLine        39    /* new in 1.10 */
  801.  
  802. # define        rtfDrawTextBoxMargin    40    /* new in 1.10 */
  803. # define        rtfDrawRoundRect    42    /* new in 1.10 */
  804.  
  805. # define        rtfDrawPointX        43    /* new in 1.10 */
  806. # define        rtfDrawPointY        44    /* new in 1.10 */
  807. # define        rtfDrawPolyCount    45    /* new in 1.10 */
  808.  
  809. # define        rtfDrawArcFlipX        46    /* new in 1.10 */
  810. # define        rtfDrawArcFlipY        47    /* new in 1.10 */
  811.  
  812. # define        rtfDrawLineBlue        48    /* new in 1.10 */
  813. # define        rtfDrawLineGreen    49    /* new in 1.10 */
  814. # define        rtfDrawLineRed        50    /* new in 1.10 */
  815. # define        rtfDrawLinePalette    51    /* new in 1.10 */
  816. # define        rtfDrawLineDashDot    52    /* new in 1.10 */
  817. # define        rtfDrawLineDashDotDot    53    /* new in 1.10 */
  818. # define        rtfDrawLineDash        54    /* new in 1.10 */
  819. # define        rtfDrawLineDot        55    /* new in 1.10 */
  820. # define        rtfDrawLineGray        56    /* new in 1.10 */
  821. # define        rtfDrawLineHollow    57    /* new in 1.10 */
  822. # define        rtfDrawLineSolid    58    /* new in 1.10 */
  823. # define        rtfDrawLineWidth    59    /* new in 1.10 */
  824.  
  825. # define        rtfDrawHollowEndArrow    60    /* new in 1.10 */
  826. # define        rtfDrawEndArrowLength    61    /* new in 1.10 */
  827. # define        rtfDrawSolidEndArrow    62    /* new in 1.10 */
  828. # define        rtfDrawEndArrowWidth    63    /* new in 1.10 */
  829. # define        rtfDrawHollowStartArrow    64    /* new in 1.10 */
  830. # define        rtfDrawStartArrowLength    65    /* new in 1.10 */
  831. # define        rtfDrawSolidStartArrow    66    /* new in 1.10 */
  832. # define        rtfDrawStartArrowWidth    67    /* new in 1.10 */
  833.  
  834. # define        rtfDrawBgFillBlue    68    /* new in 1.10 */
  835. # define        rtfDrawBgFillGreen    69    /* new in 1.10 */
  836. # define        rtfDrawBgFillRed    70    /* new in 1.10 */
  837. # define        rtfDrawBgFillPalette    71    /* new in 1.10 */
  838. # define        rtfDrawBgFillGray    72    /* new in 1.10 */
  839. # define        rtfDrawFgFillBlue    73    /* new in 1.10 */
  840. # define        rtfDrawFgFillGreen    74    /* new in 1.10 */
  841. # define        rtfDrawFgFillRed    75    /* new in 1.10 */
  842. # define        rtfDrawFgFillPalette    76    /* new in 1.10 */
  843. # define        rtfDrawFgFillGray    77    /* new in 1.10 */
  844. # define        rtfDrawFillPatIndex    78    /* new in 1.10 */
  845.  
  846. # define        rtfDrawShadow        79    /* new in 1.10 */
  847. # define        rtfDrawShadowXOffset    80    /* new in 1.10 */
  848. # define        rtfDrawShadowYOffset    81    /* new in 1.10 */
  849. # define        rtfDrawParaRelY    82    /* new in 1.10 */
  850.  
  851. /*
  852.  * index entry attributes
  853.  */
  854.  
  855. # define    rtfIndexAttr    27            /* new in 1.10 */
  856. # define        rtfIndexNumber        0    /* new in 1.10 */
  857. # define        rtfIndexBold        1    /* reclassified in 1.10 */
  858. # define        rtfIndexItalic        2    /* reclassified in 1.10 */
  859.  
  860.  
  861. /*
  862.  * \wmetafile argument values
  863.  */
  864.  
  865. # define    rtfWmMmText        1
  866. # define    rtfWmMmLometric        2
  867. # define    rtfWmMmHimetric        3
  868. # define    rtfWmMmLoenglish    4
  869. # define    rtfWmMmHienglish    5
  870. # define    rtfWmMmTwips        6
  871. # define    rtfWmMmIsotropic    7
  872. # define    rtfWmMmAnisotropic    8
  873.  
  874. /*
  875.  * \pmmetafile argument values
  876.  */
  877.  
  878. # define    rtfPmPuArbitrary    4
  879. # define    rtfPmPuPels        8
  880. # define    rtfPmPuLometric        12
  881. # define    rtfPmPuHimetric        16
  882. # define    rtfPmPuLoenglish    20
  883. # define    rtfPmPuHienglish    24
  884. # define    rtfPmPuTwips        28
  885.  
  886. /*
  887.  * \lang argument values
  888.  */
  889.  
  890. # define    rtfLangNoLang            0x0400
  891. # define    rtfLangAlbanian            0x041c
  892. # define    rtfLangArabic            0x0401
  893. # define    rtfLangBahasa            0x0421
  894. # define    rtfLangBelgianDutch        0x0813
  895. # define    rtfLangBelgianFrench        0x080c
  896. # define    rtfLangBrazilianPortuguese    0x0416
  897. # define    rtfLangBulgarian        0x0402
  898. # define    rtfLangCatalan            0x0403
  899. # define    rtfLangLatinCroatoSerbian    0x041a
  900. # define    rtfLangCzech            0x0405
  901. # define    rtfLangDanish            0x0406
  902. # define    rtfLangDutch            0x0413
  903. # define    rtfLangAustralianEnglish    0x0c09
  904. # define    rtfLangUKEnglish        0x0809
  905. # define    rtfLangUSEnglish        0x0409
  906. # define    rtfLangFinnish            0x040b
  907. # define    rtfLangFrench            0x040c
  908. # define    rtfLangCanadianFrench        0x0c0c
  909. # define    rtfLangGerman            0x0407
  910. # define    rtfLangGreek            0x0408
  911. # define    rtfLangHebrew            0x040d
  912. # define    rtfLangHungarian        0x040e
  913. # define    rtfLangIcelandic        0x040f
  914. # define    rtfLangItalian            0x0410
  915. # define    rtfLangJapanese            0x0411
  916. # define    rtfLangKorean            0x0412
  917. # define    rtfLangBokmalNorwegian        0x0414
  918. # define    rtfLangNynorskNorwegian        0x0814
  919. # define    rtfLangPolish            0x0415
  920. # define    rtfLangPortuguese        0x0816
  921. # define    rtfLangRhaetoRomanic        0x0417
  922. # define    rtfLangRomanian            0x0418
  923. # define    rtfLangRussian            0x0419
  924. # define    rtfLangCyrillicSerboCroatian    0x081a
  925. # define    rtfLangSimplifiedChinese    0x0804
  926. # define    rtfLangSlovak            0x041b
  927. # define    rtfLangCastilianSpanish        0x040a
  928. # define    rtfLangMexicanSpanish        0x080a
  929. # define    rtfLangSwedish            0x041d
  930. # define    rtfLangSwissFrench        0x100c
  931. # define    rtfLangSwissGerman        0x0807
  932. # define    rtfLangSwissItalian        0x0810
  933. # define    rtfLangThai            0x041e
  934. # define    rtfLangTraditionalChinese    0x0404
  935. # define    rtfLangTurkish            0x041f
  936. # define    rtfLangUrdu            0x0420
  937.  
  938. /*
  939.  * CharSet indices
  940.  */
  941.  
  942. # define    rtfCSGeneral    0    /* general (default) charset */
  943. # define    rtfCSSymbol    1    /* symbol charset */
  944.  
  945. /*
  946.  * Flags for auto-charset-processing.  Both are on by default.
  947.  */
  948.  
  949. # define    rtfReadCharSet        0x01    /* auto-read charset files */
  950. # define    rtfSwitchCharSet    0x02    /* auto-switch charset maps */
  951.  
  952. /*
  953.  * Style types
  954.  */
  955.  
  956. # define    rtfParStyle    0    /* the default */
  957. # define    rtfCharStyle    1
  958. # define    rtfSectStyle    2
  959.  
  960. /*
  961.  * RTF font, color and style structures.  Used for font table,
  962.  * color table, and stylesheet processing.
  963.  */
  964.  
  965. typedef struct RTFFont        RTFFont;
  966. typedef struct RTFColor        RTFColor;
  967. typedef struct RTFStyle        RTFStyle;
  968. typedef struct RTFStyleElt    RTFStyleElt;
  969.  
  970.  
  971. struct RTFFont
  972. {
  973.     char    *rtfFName;        /* font name */
  974.     char    *rtfFAltName;        /* font alternate name */
  975.     int    rtfFNum;        /* font number */
  976.     int    rtfFFamily;        /* font family */
  977.     int    rtfFCharSet;        /* font charset */
  978.     int    rtfFPitch;        /* font pitch */
  979.     int    rtfFType;        /* font type */
  980.     int    rtfFCodePage;        /* font code page */
  981.     RTFFont    *rtfNextFont;        /* next font in list */
  982. };
  983.  
  984.  
  985. /*
  986.  * Color values are -1 if the default color for the the color
  987.  * number should be used.  The default color is writer-dependent.
  988.  */
  989.  
  990. struct RTFColor
  991. {
  992.     int        rtfCNum;    /* color number */
  993.     int        rtfCRed;    /* red value */
  994.     int        rtfCGreen;    /* green value */
  995.     int        rtfCBlue;    /* blue value */
  996.     RTFColor    *rtfNextColor;    /* next color in list */
  997. };
  998.  
  999.  
  1000. struct RTFStyle
  1001. {
  1002.     char        *rtfSName;    /* style name */
  1003.     int        rtfSType;    /* style type */
  1004.     int        rtfSAdditive;    /* whether or not style is additive */
  1005.     int        rtfSNum;    /* style number */
  1006.     int        rtfSBasedOn;    /* style this one's based on */
  1007.     int        rtfSNextPar;    /* style next paragraph style */
  1008.     RTFStyleElt    *rtfSSEList;    /* list of style words */
  1009.     int        rtfExpanding;    /* non-zero = being expanded */
  1010.     RTFStyle    *rtfNextStyle;    /* next style in style list */
  1011. };
  1012.  
  1013.  
  1014. struct RTFStyleElt
  1015. {
  1016.     int        rtfSEClass;    /* token class */
  1017.     int        rtfSEMajor;    /* token major number */
  1018.     int        rtfSEMinor;    /* token minor number */
  1019.     int        rtfSEParam;    /* control symbol parameter */
  1020.     char        *rtfSEText;    /* text of symbol */
  1021.     RTFStyleElt    *rtfNextSE;    /* next element in style */
  1022. };
  1023.  
  1024.  
  1025. typedef    void (*RTFFuncPtr) ();        /* generic function pointer */
  1026.  
  1027.  
  1028. /*
  1029.  * Public RTF reader routines
  1030.  */
  1031.  
  1032. void        RTFInit ();
  1033. void        RTFSetStream ();
  1034. void        RTFSetInputName ();
  1035. char        *RTFGetInputName ();
  1036. void        RTFSetOutputName ();
  1037. char        *RTFGetOutputName ();
  1038. void        RTFSetClassCallback ();
  1039. RTFFuncPtr    RTFGetClassCallback ();
  1040. void        RTFSetDestinationCallback ();
  1041. RTFFuncPtr    RTFGetDestinationCallback ();
  1042. void        RTFRead ();
  1043. int        RTFGetToken ();    /* writer should rarely need this */
  1044. void        RTFUngetToken ();
  1045. int        RTFPeekToken ();
  1046. void        RTFSetToken ();
  1047. void        RTFSetReadHook ();
  1048. RTFFuncPtr    RTFGetReadHook ();
  1049. void        RTFRouteToken ();
  1050. void        RTFSkipGroup ();
  1051. void        RTFExpandStyle ();
  1052. int        RTFCheckCM ();
  1053. int        RTFCheckCMM ();
  1054. int        RTFCheckMM ();
  1055. RTFFont        *RTFGetFont ();
  1056. RTFColor    *RTFGetColor ();
  1057. RTFStyle    *RTFGetStyle ();
  1058. # define    RTFAlloc(size)    _RTFAlloc ((int) (size))
  1059. char        *_RTFAlloc ();
  1060. char        *RTFStrSave ();
  1061. void        RTFFree ();
  1062. int        RTFCharToHex ();
  1063. int        RTFHexToChar ();
  1064. void        RTFSetMsgProc ();
  1065. void        RTFSetPanicProc ();
  1066.  
  1067. /*
  1068.  * The following messing around is used to allow RTFMsg() and RTFPanic()
  1069.  * to be variable-argument functions that are declared publicly but
  1070.  * without generating prototype-mismatch errors on systems that have
  1071.  * stdarg.h.
  1072.  */
  1073.  
  1074. # ifndef rtfInternal
  1075. void        RTFMsg ();
  1076. void        RTFPanic ();
  1077. # else
  1078. # ifdef STDARG
  1079. void    RTFMsg (char *fmt, ...);
  1080. void    RTFPanic (char *fmt, ...);
  1081. # else
  1082. void        RTFMsg ();
  1083. void        RTFPanic ();
  1084. # endif    /* STDARG */
  1085. # endif /* rtfInternal */
  1086.  
  1087. int        RTFReadCharSetMap ();
  1088. void        RTFSetCharSetMap ();
  1089. int        RTFStdCharCode ();
  1090. char        *RTFStdCharName ();
  1091. int        RTFMapChar ();
  1092. int        RTFGetCharSet();
  1093. void        RTFSetCharSet();
  1094.  
  1095. /*char        *RTFGetLibPrefix();*/
  1096. void    RTFSetOpenLibFileProc ();
  1097. FILE    *RTFOpenLibFile ();
  1098.  
  1099.