ftp.nice.ch/pub/next/unix/text/rtf2TeX.s.tar.gz#/rtf2TeX/rtf.h

This is rtf.h in view mode; [Download] [Up]

/*
	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 ();

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.