diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/RTF-1_06a1/rtf.h |
Initial commit
Diffstat (limited to 'support/RTF-1_06a1/rtf.h')
-rw-r--r-- | support/RTF-1_06a1/rtf.h | 484 |
1 files changed, 484 insertions, 0 deletions
diff --git a/support/RTF-1_06a1/rtf.h b/support/RTF-1_06a1/rtf.h new file mode 100644 index 0000000000..30e4cb4bb8 --- /dev/null +++ b/support/RTF-1_06a1/rtf.h @@ -0,0 +1,484 @@ +/* + rtf.h - RTF document processing stuff. Distribution 1.06. +*/ + + +/* + 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. + + RTFToken() 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 */ + + +/* + 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 */ + +/* + Brace 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 rtfFootnote 1 +# define rtfHeader 2 +# define rtfHeaderLeft 3 +# define rtfHeaderRight 4 +# define rtfHeaderFirst 5 +# define rtfFooter 6 +# define rtfFooterLeft 7 +# define rtfFooterRight 8 +# define rtfFooterFirst 9 +# define rtfFNSep 10 +# define rtfFNContSep 11 +# define rtfFNContNotice 12 +# define rtfInfo 13 +# define rtfStyleSheet 14 +# define rtfFontTbl 15 +# define rtfColorTbl 16 +# define rtfField 17 +# define rtfFieldInst 18 +# define rtfFieldResult 19 +# define rtfIndex 20 +# define rtfIndexBold 21 +# define rtfIndexItalic 22 +# define rtfIndexText 23 +# define rtfIndexRange 24 +# define rtfTOC 25 +# define rtfBookmarkStart 26 +# define rtfBookmarkEnd 27 +# define rtfITitle 28 +# define rtfISubject 29 +# define rtfIAuthor 30 +# define rtfIOperator 31 +# define rtfIKeywords 32 +# define rtfIComment 33 +# define rtfIVersion 34 +# define rtfIDoccomm 35 +# define rtfMaxDestination 36 /* 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 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 rtfFieldAttr 14 +# define rtfFieldDirty 0 +# define rtfFieldEdited 1 +# define rtfFieldLocked 2 +# define rtfFieldPrivate 3 + +# define rtfTOCAttr 15 +# define rtfTOCType 0 +# define rtfTOCLevel 1 + +# define rtfPosAttr 16 +# 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 */ +}; + + +/* + Public RTF reader routines +*/ + +extern void RTFInit (); +extern void RTFSetStream (); +extern void RTFSetClassCallback (); +extern void (*RTFGetClassCallback ()) (); +extern void RTFSetDestinationCallback (); +extern void (*RTFGetDestinationCallback ()) (); +extern void RTFRead (); +extern int RTFGetToken (); /* writer should rarely need this */ +extern void RTFSetToken (); +extern void RTFSetReadHook (); +extern void (*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 (); |