/* rtf.h - RTF document processing stuff. Distribution 1.06a2. */ /* Twentieths of a point (twips) per inch (Many RTF measurements are in twips per inch (tpi) units). Assumes 72 points/inch. */ # define rtfTpi 1440 /* RTF buffer size (avoids BUFSIZ, which differs across systems) */ # define rtfBufSiz 1024 /* Tokens are associated with up to three classification numbers: Class number: Broadest (least detailed) breakdown. For programs that only care about gross token distinctions. Major/minor numbers: Within their class, tokens have a major number, and may also have a minor number to further distinquish tokens with the same major number. *** Class, major and minor token numbers are all >= 0 *** Tokens that can't be classified are put in the "unknown" class. For such, the major and minor numbers are meaningless, although rtfTextBuf may be of interest then. Text tokens are a single character, and the major number indicates the character value (note: can be non-ascii, i.e., greater than 127). There is no minor number. Control symbols may have a parameter value, which will be found in rtfParam. If no parameter was given, rtfParam = rtfNoParam. RTFGetToken() return value is the class number, but it sets all the global token vars. rtfEOF is a fake token used by the reader; the writer never sees it (except in the token reader hook, if it installs one). */ /* Information pertaining to last token read by RTFToken. The text is exactly as it occurs in the input file, e.g., "\{" will be found in rtfTextBuf as "\{", even though it means "{". These variables are also set when styles are reprocessed. */ extern char rtfTextBuf[rtfBufSiz]; /* text of token */ extern int rtfTextLen; /* length of token in rtfTextBuf */ extern int rtfClass; /* token class */ extern int rtfMajor; /* token major number */ extern int rtfMinor; /* token minor number */ extern int rtfParam; /* control symbol parameter */ # define rtfNoParam (-1000000) /* Token classes (must be zero-based and sequential) */ # define rtfUnknown 0 # define rtfGroup 1 # define rtfText 2 # define rtfControl 3 # define rtfEOF 4 # define rtfMaxClass 5 /* highest class + 1 */ /* Group class major numbers */ # define rtfBeginGroup 0 # define rtfEndGroup 1 /* Control class major and minor numbers. */ # define rtfVersion 0 # define rtfDefFont 1 # define rtfCharSet 2 # define rtfAnsiCharSet 0 # define rtfMacCharSet 1 # define rtfPcCharSet 2 # define rtfPcaCharSet 3 /* destination minor numbers should be zero-based, sequential */ # define rtfDestination 3 # define rtfPict 0 # define rtfNeXTGraphic 1 # define rtfFootnote 2 # define rtfHeader 3 # define rtfHeaderLeft 4 # define rtfHeaderRight 5 # define rtfHeaderFirst 6 # define rtfFooter 7 # define rtfFooterLeft 8 # define rtfFooterRight 9 # define rtfFooterFirst 10 # define rtfFNSep 11 # define rtfFNContSep 12 # define rtfFNContNotice 13 # define rtfInfo 14 # define rtfStyleSheet 15 # define rtfFontTbl 16 # define rtfColorTbl 17 # define rtfField 18 # define rtfFieldInst 19 # define rtfFieldResult 20 # define rtfIndex 21 # define rtfIndexBold 22 # define rtfIndexItalic 23 # define rtfIndexText 24 # define rtfIndexRange 25 # define rtfTOC 26 # define rtfBookmarkStart 27 # define rtfBookmarkEnd 28 # define rtfITitle 29 # define rtfISubject 30 # define rtfIAuthor 31 # define rtfIOperator 32 # define rtfIKeywords 33 # define rtfIComment 34 # define rtfIVersion 35 # define rtfIDoccomm 36 # define rtfMaxDestination 37 /* highest dest + 1 */ # define rtfFontFamily 4 # define rtfFFNil 0 # define rtfFFRoman 1 # define rtfFFSwiss 2 # define rtfFFModern 3 # define rtfFFScript 4 # define rtfFFDecor 5 # define rtfFFTech 6 # define rtfColorName 5 # define rtfRed 0 # define rtfGreen 1 # define rtfBlue 2 # define rtfSpecialChar 6 # define rtfCurHeadPage 0 # define rtfCurFNote 1 # define rtfCurHeadPict 2 /* valid? */ # define rtfCurHeadDate 3 # define rtfCurHeadTime 4 # define rtfFormula 5 # define rtfNoBrkSpace 6 # define rtfNoReqHyphen 7 # define rtfNoBrkHyphen 8 # define rtfPage 9 # define rtfLine 10 # define rtfPar 11 # define rtfSect 12 # define rtfTab 13 # define rtfCell 14 # define rtfRow 15 # define rtfCurAnnot 16 # define rtfAnnotation 17 # define rtfAnnotID 18 # define rtfCurAnnotRef 19 # define rtfFNoteSep 20 # define rtfFNoteCont 21 # define rtfColumn 22 # define rtfOptDest 23 # define rtfIIntVersion 24 # define rtfICreateTime 25 # define rtfIRevisionTime 26 # define rtfIPrintTime 27 # define rtfIBackupTime 28 # define rtfIEditTime 29 # define rtfIYear 30 # define rtfIMonth 31 # define rtfIDay 32 # define rtfIHour 33 # define rtfIMinute 34 # define rtfINPages 35 # define rtfINWords 36 # define rtfINChars 37 # define rtfIIntID 38 # define rtfStyleAttr 7 # define rtfBasedOn 0 # define rtfNext 1 # define rtfDocAttr 8 # define rtfPaperWidth 0 # define rtfPaperHeight 1 # define rtfLeftMargin 2 # define rtfRightMargin 3 # define rtfTopMargin 4 # define rtfBottomMargin 5 # define rtfFacingPage 6 # define rtfGutterWid 7 # define rtfDefTab 8 # define rtfWidowCtrl 9 # define rtfHyphHotZone 10 # define rtfFNoteEndSect 11 # define rtfFNoteEndDoc 12 # define rtfFNoteText 13 # define rtfFNoteBottom 14 # define rtfFNoteStart 15 # define rtfFNoteRestart 16 # define rtfPageStart 17 # define rtfLineStart 18 # define rtfLandscape 19 # define rtfFracWidth 20 # define rtfNextFile 21 # define rtfTemplate 22 # define rtfMakeBackup 23 # define rtfRTFDefault 24 # define rtfRevisions 25 # define rtfMirrorMargin 26 # define rtfRevDisplay 27 # define rtfRevBar 28 # define rtfSectAttr 9 # define rtfSectDef 0 # define rtfNoBreak 1 # define rtfColBreak 2 # define rtfPageBreak 3 # define rtfEvenBreak 4 # define rtfOddBreak 5 # define rtfPageStarts 6 # define rtfPageCont 7 # define rtfPageRestart 8 # define rtfPageDecimal 9 # define rtfPageURoman 10 # define rtfPageLRoman 11 # define rtfPageULetter 12 # define rtfPageLLetter 13 # define rtfPageNumLeft 14 # define rtfPageNumTop 15 # define rtfHeaderY 16 # define rtfFooterY 17 # define rtfLineModulus 18 # define rtfLineDist 19 # define rtfLineStarts 20 # define rtfLineRestart 21 # define rtfLineRestartPg 22 # define rtfLineCont 23 # define rtfTopVAlign 24 # define rtfBottomVAlign 25 # define rtfCenterVAlign 26 # define rtfJustVAlign 27 # define rtfColumns 28 # define rtfColumnSpace 29 # define rtfColumnLine 30 # define rtfENoteHere 31 # define rtfTitleSpecial 32 # define rtfTblAttr 10 # define rtfCellBordBottom 0 # define rtfCellBordTop 1 # define rtfCellBordLeft 2 # define rtfCellBordRight 3 # define rtfRowDef 4 # define rtfRowLeft 5 # define rtfRowRight 6 # define rtfRowCenter 7 # define rtfRowGapH 8 # define rtfRowHt 9 # define rtfRowLeftEdge 10 # define rtfCellPos 11 # define rtfMergeRngFirst 12 # define rtfMergePrevious 13 # define rtfParAttr 11 # define rtfParDef 0 # define rtfStyleNum 1 # define rtfQuadLeft 2 # define rtfQuadRight 3 # define rtfQuadJust 4 # define rtfQuadCenter 5 # define rtfFirstIndent 6 # define rtfLeftIndent 7 # define rtfRightIndent 8 # define rtfSpaceBefore 9 # define rtfSpaceAfter 10 # define rtfSpaceBetween 11 # define rtfInTable 12 # define rtfKeep 13 # define rtfKeepNext 14 # define rtfSideBySide 15 # define rtfPBBefore 16 # define rtfNoLineNum 17 # define rtfTabPos 18 # define rtfTabRight 19 # define rtfTabCenter 20 # define rtfTabDecimal 21 # define rtfTabBar 22 # define rtfBorderTop 23 # define rtfBorderBottom 24 # define rtfBorderLeft 25 # define rtfBorderRight 26 # define rtfBorderBox 27 # define rtfBorderBar 28 # define rtfBorderBetween 29 # define rtfBorderSingle 30 # define rtfBorderThick 31 # define rtfBorderShadow 32 # define rtfBorderDouble 33 # define rtfBorderDot 34 # define rtfBorderHair 35 # define rtfBorderSpace 36 # define rtfLeaderDot 37 # define rtfLeaderHyphen 38 # define rtfLeaderUnder 39 # define rtfLeaderThick 40 # define rtfCharAttr 12 # define rtfPlain 0 # define rtfBold 1 # define rtfItalic 2 # define rtfStrikeThru 3 # define rtfOutline 4 # define rtfShadow 5 # define rtfSmallCaps 6 # define rtfAllCaps 7 # define rtfInvisible 8 # define rtfFontNum 9 # define rtfFontSize 10 # define rtfExpand 11 # define rtfUnderline 12 # define rtfWUnderline 13 # define rtfDUnderline 14 # define rtfDbUnderline 15 # define rtfNoUnderline 16 # define rtfSuperScript 17 # define rtfSubScript 18 # define rtfRevised 19 # define rtfForeColor 20 # define rtfBackColor 21 # define rtfGray 22 # define rtfPictAttr 13 # define rtfMacQD 0 # define rtfWinMetafile 1 # define rtfWinBitmap 2 # define rtfPicWid 3 # define rtfPicHt 4 # define rtfPicGoalWid 5 # define rtfPicGoalHt 6 # define rtfPicScaleX 7 # define rtfPicScaleY 8 # define rtfPicScaled 9 # define rtfPicCropTop 10 # define rtfPicCropBottom 11 # define rtfPicCropLeft 12 # define rtfPicCropRight 13 # define rtfPixelBits 14 # define rtfBitmapPlanes 15 # define rtfBitmapWid 16 # define rtfPicBinary 17 # define rtfNeXTGrAttr 14 # define rtfNeXTGWidth 0 # define rtfNeXTGHeight 1 # define rtfFieldAttr 15 # define rtfFieldDirty 0 # define rtfFieldEdited 1 # define rtfFieldLocked 2 # define rtfFieldPrivate 3 # define rtfTOCAttr 16 # define rtfTOCType 0 # define rtfTOCLevel 1 # define rtfPosAttr 17 # define rtfPosX 0 # define rtfPosXCenter 1 # define rtfPosXInside 2 # define rtfPosXLeft 3 # define rtfPosXOutSide 4 # define rtfPosXRight 5 # define rtfPosY 6 # define rtfPosYInline 7 # define rtfPosYTop 8 # define rtfPosYCenter 9 # define rtfPosYBottom 10 # define rtfAbsWid 11 # define rtfTextDist 12 # define rtfRPosMargV 13 # define rtfRPosPageV 14 # define rtfRPosMargH 15 # define rtfRPosPageH 16 # define rtfRPosColH 17 /* RTF font, color and style structures. Used for font table, color table, and stylesheet processing. */ typedef struct RTFFont RTFFont; typedef struct RTFColor RTFColor; typedef struct RTFStyle RTFStyle; typedef struct RTFStyleElt RTFStyleElt; struct RTFFont { char *rtfFName; /* font name */ int rtfFNum; /* font number */ int rtfFFamily; /* font family */ RTFFont *rtfNextFont; /* next font in list */ }; /* Color values are -1 if the default color for the the color number should be used. The default color is writer-dependent. */ struct RTFColor { int rtfCNum; /* color number */ int rtfCRed; /* red value */ int rtfCGreen; /* green value */ int rtfCBlue; /* blue value */ RTFColor *rtfNextColor; /* next color in list */ }; struct RTFStyle { char *rtfSName; /* style name */ int rtfSNum; /* style number */ int rtfSBasedOn; /* style this one's based on */ int rtfSNextPar; /* style next paragraph style */ RTFStyleElt *rtfSSEList; /* list of style words */ int rtfExpanding; /* non-zero = being expanded */ RTFStyle *rtfNextStyle; /* next style in style list */ }; # define rtfBasedOnNone 222 /* "no based-on style" */ struct RTFStyleElt { int rtfSEClass; /* token class */ int rtfSEMajor; /* token major number */ int rtfSEMinor; /* token minor number */ int rtfSEParam; /* control symbol parameter */ char *rtfSEText; /* text of symbol */ RTFStyleElt *rtfNextSE; /* next element in style */ }; typedef void (*RTFFuncPtr) (); /* generic function pointer */ /* Public RTF reader routines */ extern void RTFInit (); extern void RTFSetStream (); extern void RTFSetClassCallback (); extern RTFFuncPtr RTFGetClassCallback (); extern void RTFSetDestinationCallback (); extern RTFFuncPtr RTFGetDestinationCallback (); extern void RTFRead (); extern int RTFGetToken (); /* writer should rarely need this */ extern void RTFUngetToken (); extern int RTFPeekToken (); extern void RTFSetToken (); extern void RTFSetReadHook (); extern RTFFuncPtr RTFGetReadHook (); extern void RTFRouteToken (); extern void RTFSkipGroup (); extern void RTFExpandStyle (); extern int RTFCheckCM (); extern int RTFCheckCMM (); extern int RTFCheckMM (); extern RTFFont *RTFGetFont (); extern RTFColor *RTFGetColor (); extern RTFStyle *RTFGetStyle (); extern char *RTFAlloc (); extern char *RTFStrSave (); extern void RTFFree ();