home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Borland Programmer's Resource
/
Borland_Programmers_Resource_CD_1995.iso
/
utils
/
rtfprsr
/
rtf.h
< prev
next >
Wrap
C/C++ Source or Header
|
1995-05-18
|
13KB
|
499 lines
/*
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 ();