home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Borland Programmer's Resource
/
Borland_Programmers_Resource_CD_1995.iso
/
utils
/
rtfprsr
/
rtf2trof.h
< prev
next >
Wrap
C/C++ Source or Header
|
1995-05-18
|
8KB
|
292 lines
/*
rtf2troff.h - rtf2troff defines, structures, externs
*/
# define bcopy(src,dst,len) ((void) memcpy(dst,src,len))
typedef unsigned long u_long;
/* troff versions understood */
# define TROFF 0 /* generic troff */
# define XROFF 1 /* Image Network xroff */
# define PSTROFF 2 /* ditroff + public domain tpscript backend */
/* macro packages understood */
# define noMacros 0
# define meMacros 1
# define mmMacros 2
# define msMacros 3
/*
macro/register names
*/
# define mHeader "He"
# define mHeaderAll "Ha"
# define mHeaderFirst "Hf"
# define mHeaderLeft "Hl"
# define mHeaderRight "Hr"
# define mFooter "Fo"
# define mFooterAll "Fa"
# define mFooterFirst "Ff"
# define mFooterLeft "Fl"
# define mFooterRight "Fr"
/* normally Hp > Tm > Bm > Fp */
# define rTitlePageSpecial "Tp"
# define rTopMargin "Tm"
# define rHeaderPos "Hp"
# define rBottomMargin "Bm" /* from *top* of page! */
# define rFooterPos "Fp" /* from *top* of page! */
# define rHeaderAll "Ha"
# define rHeaderFirst "Hf"
# define rHeaderLeft "Hl"
# define rHeaderRight "Hr"
# define rFooterAll "Fa"
# define rFooterFirst "Ff"
# define rFooterLeft "Fl"
# define rFooterRight "Fr"
/*
rtfTabLeft is used to indicate the default tab type (left tab).
RTF assumes that if some other type is not specified, a tab is
a left tab and never indicates that explicitly. It's given a
number here so the writer can refer to it by a constant known
to be different from the other tab types. (All "real" token
numbers are non-negative.)
rtfLeaderMotion is used to indicate default tab char (motion only),
which likewise is undefined in RTF.
rtfNoDestination is used to indicate that a state has had no
destination specified yet.
rtfNoBorderType indicates that a paragraph has no borders.
*/
# define rtfTabLeft (-1)
# define rtfLeaderMotion (-1)
# define rtfNoDestination (-1)
# define rtfNoBorderType (-1)
# define styleBold 0x0001
# define styleItalic 0x0002
# define styleStrikeThru 0x0004
# define styleOutline 0x0008
# define styleShadow 0x0010
# define styleSmallCaps 0x0020
# define styleAllCaps 0x0040
# define styleInvisible 0x0080
# define styleUnderline 0x0100
# define styleWUnderline 0x0200
# define StyleFontBits(s) (s & (styleBold | styleItalic))
/*
Values for operations that map border positions onto bits
in flag word.
*/
# define borderTop 0x0001
# define borderBottom 0x0002
# define borderLeft 0x0004
# define borderRight 0x0008
/*
Values for operations that map border positions to array indices.
Must be zero-based and sequential.
*/
# define topIndex 0
# define leftIndex 1
# define bottomIndex 2
# define rightIndex 3
# define lineBreakLen 60 /* break lines after 60 columns */
# define maxIStack 10 /* internal state stack depth */
# define maxWStack 3 /* written state stack depth */
# define maxTab 20
# define maxCell 20
typedef struct State State;
typedef struct DocState DocState;
typedef struct SectState SectState;
typedef struct ParState ParState;
typedef struct CharState CharState;
typedef struct TblState TblState; /* this is separate */
/* document properties */
struct DocState
{
int landscape; /* non-zero if landscape */
double pageWidth; /* paper width */
double pageHeight; /* paper height */
double leftMargin; /* left margin */
double rightMargin; /* right margin */
double topMargin; /* top margin */
double bottomMargin; /* bottom margin */
double tabWidth; /* default tab width */
};
/* section properties */
struct SectState
{
int breakType; /* section break type */
int pageStart; /* section starting page number */
int pageRestart; /* restart page numbering each sect. */
double headerPos; /* from top of page */
double footerPos; /* from bottom of page */
int titleSpecial; /* first page special */
};
/* paragraph properties */
struct ParState
{
double firstIndent; /* first indent */
double leftIndent; /* left indent */
double rightIndent; /* right indent */
double spaceBefore; /* space before lines */
double spaceAfter; /* space after lines */
double spaceBetween; /* space between lines */
int tabFlag; /* any tabs set yet? (0 = no) */
int nTabs; /* number of tabs (0 = defaults) */
double tab[maxTab]; /* tab positions */
int tabType[maxTab]; /* tab types */
int tabChar; /* tab (leader) character */
int justification; /* justification */
int borderType; /* type of border */
int borderFlags; /* where to draw borders */
};
/* character properties */
struct CharState
{
int fontSize; /* font (point) size */
u_long charStyle; /* character style */
double superScript; /* superscript */
double subScript; /* subscript */
};
struct State
{
int destination; /* state destination */
DocState docState;
SectState sectState;
ParState parState;
CharState charState;
};
/* table properties */
struct TblState
{
int tableHeader; /* non-zero if table header written */
int nCells; /* number of cells */
int curCell; /* current cell (0-based) */
double cellPos[maxCell]; /* cell positions (right edge) */
double tableLeft; /* table left edge position */
double cellGap; /* horiz. gap between cells */
int border[maxCell][4]; /* cell borders */
};
extern int tvers; /* troff version */
extern int mvers; /* macro package version */
extern TblState *its;
extern int inTable;
extern FILE *f;
extern State *is; /* current internal state */
extern DocState *ids; /* internal document state */
extern SectState *iss; /* internal section state */
extern ParState *ips; /* internal paragraph state */
extern CharState *ics; /* internal character state */
extern State *ws; /* written state */
extern DocState *wds; /* written document state */
extern SectState *wss; /* written section state */
extern ParState *wps; /* written paragraph state */
extern CharState *wcs; /* written character state */
extern int docStateChanged; /* document properties have changed */
extern int sectStateChanged; /* section properties have changed */
extern int parStateChanged; /* paragraph properties have changed */
extern int charStateChanged; /* character properties have changed */
# define stateChanged \
(docStateChanged||sectStateChanged||parStateChanged||charStateChanged)
extern int indirectionLevel;
extern void InitState ();
extern void CheckFinalState ();
extern void PushIState ();
extern void PopIState ();
extern void PushWState ();
extern void PopWState ();
extern void BeginDiversion ();
extern void EndDiversion ();
extern void RestoreSectDefaults ();
extern void RestoreParDefaults ();
extern void RestoreCharDefaults ();
extern void InitTabSet ();
extern int MapBorderLocation ();
extern void SelectFormatterMaps ();
extern void SelectMacPackMaps ();
extern void SelectCharSetMaps ();
extern char *CharMapping ();
extern void TblAttr ();
extern void BeginTbl ();
extern void EndTbl ();
extern void BeginCell ();
extern void EndCell ();
extern void FlushState ();
extern void FlushInitialState ();
extern void FlushSectState ();
extern void Flush ();
extern void SaveTblFPV ();
extern void FlushTblFPV ();
extern double EnWidth ();
extern void ResetPar ();
extern void ResetParLine ();
extern void Sect ();
extern void Par ();
extern void PutString ();
extern void Comment ();