home *** CD-ROM | disk | FTP | other *** search
/ Borland Programmer's Resource / Borland_Programmers_Resource_CD_1995.iso / utils / rtfprsr / rtf2trof.bak < prev    next >
Encoding:
Text File  |  1995-05-19  |  7.4 KB  |  294 lines

  1. /*
  2.     rtf2troff.h - rtf2troff defines, structures, externs
  3. */
  4.  
  5. # ifdef SYSV
  6. # define    bcopy(src,dst,len)    ((void) memcpy(dst,src,len))
  7. # endif    /* SYSV */
  8. typedef unsigned long    u_long;
  9. /* troff versions understood */
  10.  
  11. # define    TROFF    0    /* generic troff */
  12. # define    XROFF    1    /* Image Network xroff */
  13. # define    PSTROFF    2    /* ditroff + public domain tpscript backend */
  14.  
  15. /* macro packages understood */
  16.  
  17. # define    noMacros    0
  18. # define    meMacros    1
  19. # define    mmMacros    2
  20. # define    msMacros    3
  21.  
  22.  
  23. /*
  24.     macro/register names
  25. */
  26.  
  27. # define    mHeader        "He"
  28. # define    mHeaderAll    "Ha"
  29. # define    mHeaderFirst    "Hf"
  30. # define    mHeaderLeft    "Hl"
  31. # define    mHeaderRight    "Hr"
  32. # define    mFooter        "Fo"
  33. # define    mFooterAll    "Fa"
  34. # define    mFooterFirst    "Ff"
  35. # define    mFooterLeft    "Fl"
  36. # define    mFooterRight    "Fr"
  37.  
  38. /* normally Hp > Tm > Bm > Fp */
  39.  
  40. # define    rTitlePageSpecial    "Tp"
  41. # define    rTopMargin    "Tm"
  42. # define    rHeaderPos    "Hp"
  43. # define    rBottomMargin    "Bm"    /* from *top* of page! */
  44. # define    rFooterPos    "Fp"    /* from *top* of page! */
  45. # define    rHeaderAll    "Ha"
  46. # define    rHeaderFirst    "Hf"
  47. # define    rHeaderLeft    "Hl"
  48. # define    rHeaderRight    "Hr"
  49. # define    rFooterAll    "Fa"
  50. # define    rFooterFirst    "Ff"
  51. # define    rFooterLeft    "Fl"
  52. # define    rFooterRight    "Fr"
  53.  
  54.  
  55.  
  56. /*
  57.     rtfTabLeft is used to indicate the default tab type (left tab).
  58.     RTF assumes that if some other type is not specified, a tab is
  59.     a left tab and never indicates that explicitly.  It's given a
  60.     number here so the writer can refer to it by a constant known
  61.     to be different from the other tab types.  (All "real" token
  62.     numbers are non-negative.)
  63.  
  64.     rtfLeaderMotion is used to indicate default tab char (motion only),
  65.     which likewise is undefined in RTF.
  66.  
  67.     rtfNoDestination is used to indicate that a state has had no
  68.     destination specified yet.
  69.  
  70.     rtfNoBorderType indicates that a paragraph has no borders.
  71. */
  72.  
  73. # define    rtfTabLeft        (-1)
  74. # define    rtfLeaderMotion        (-1)
  75. # define    rtfNoDestination    (-1)
  76. # define    rtfNoBorderType        (-1)
  77.  
  78.  
  79. # define    styleBold    0x0001
  80. # define    styleItalic    0x0002
  81. # define    styleStrikeThru    0x0004
  82. # define    styleOutline    0x0008
  83. # define    styleShadow    0x0010
  84. # define    styleSmallCaps    0x0020
  85. # define    styleAllCaps    0x0040
  86. # define    styleInvisible    0x0080
  87. # define    styleUnderline    0x0100
  88. # define    styleWUnderline    0x0200
  89.  
  90. # define    StyleFontBits(s)    (s & (styleBold | styleItalic))
  91.  
  92. /*
  93.     Values for operations that map border positions onto bits
  94.     in flag word.
  95. */
  96.  
  97. # define    borderTop    0x0001
  98. # define    borderBottom    0x0002
  99. # define    borderLeft    0x0004
  100. # define    borderRight    0x0008
  101.  
  102. /*
  103.     Values for operations that map border positions to array indices.
  104.     Must be zero-based and sequential.
  105. */
  106.  
  107. # define    topIndex    0
  108. # define    leftIndex    1
  109. # define    bottomIndex    2
  110. # define    rightIndex    3
  111.  
  112.  
  113. # define    lineBreakLen    60    /* break lines after 60 columns */
  114.  
  115.  
  116. # define    maxIStack    10    /* internal state stack depth */
  117. # define    maxWStack    3    /* written state stack depth */
  118. # define    maxTab        20
  119. # define    maxCell        20
  120.  
  121.  
  122.  
  123. typedef    struct State        State;
  124. typedef    struct DocState        DocState;
  125. typedef    struct SectState    SectState;
  126. typedef    struct ParState        ParState;
  127. typedef    struct CharState    CharState;
  128.  
  129. typedef    struct TblState        TblState;    /* this is separate */
  130.  
  131.  
  132. /* document properties */
  133.  
  134. struct DocState
  135. {
  136.     int    landscape;        /* non-zero if landscape */
  137.     double    pageWidth;        /* paper width */
  138.     double    pageHeight;        /* paper height */
  139.     double    leftMargin;        /* left margin */
  140.     double    rightMargin;        /* right margin */
  141.     double    topMargin;        /* top margin */
  142.     double    bottomMargin;        /* bottom margin */
  143.     double    tabWidth;        /* default tab width */
  144. };
  145.  
  146.  
  147. /* section properties */
  148.  
  149. struct SectState
  150. {
  151.     int    breakType;        /* section break type */
  152.     int    pageStart;        /* section starting page number */
  153.     int    pageRestart;        /* restart page numbering each sect. */
  154.     double    headerPos;        /* from top of page */
  155.     double    footerPos;        /* from bottom of page */
  156.     int    titleSpecial;        /* first page special */
  157. };
  158.  
  159.  
  160. /* paragraph properties */
  161.  
  162. struct ParState
  163. {
  164.     double    firstIndent;        /* first indent */
  165.     double    leftIndent;        /* left indent */
  166.     double    rightIndent;        /* right indent */
  167.     double    spaceBefore;        /* space before lines */
  168.     double    spaceAfter;        /* space after lines */
  169.     double    spaceBetween;        /* space between lines */
  170.     int    tabFlag;        /* any tabs set yet? (0 = no) */
  171.     int    nTabs;            /* number of tabs (0 = defaults) */
  172.     double    tab[maxTab];        /* tab positions */
  173.     int    tabType[maxTab];    /* tab types */
  174.     int    tabChar;        /* tab (leader) character */
  175.     int    justification;        /* justification */
  176.     int    borderType;        /* type of border */
  177.     int    borderFlags;        /* where to draw borders */
  178. };
  179.  
  180.  
  181. /* character properties */
  182.  
  183. struct CharState
  184. {
  185.     int    fontSize;        /* font (point) size */
  186.     u_long    charStyle;        /* character style */
  187.     double    superScript;        /* superscript */
  188.     double    subScript;        /* subscript */
  189. };
  190.  
  191. struct State
  192. {
  193.     int        destination;    /* state destination */
  194.     DocState    docState;
  195.     SectState    sectState;
  196.     ParState    parState;
  197.     CharState    charState;
  198. };
  199.  
  200.  
  201. /* table properties */
  202.  
  203. struct TblState
  204. {
  205.     int    tableHeader;        /* non-zero if table header written */
  206.     int    nCells;            /* number of cells */
  207.     int    curCell;        /* current cell (0-based) */
  208.     double    cellPos[maxCell];    /* cell positions (right edge) */
  209.     double    tableLeft;        /* table left edge position */
  210.     double    cellGap;        /* horiz. gap between cells */
  211.     int    border[maxCell][4];    /* cell borders */
  212. };
  213.  
  214. extern int    tvers;        /* troff version */
  215. extern int    mvers;        /* macro package version */
  216.  
  217. extern TblState    *its;
  218. extern int    inTable;
  219.  
  220. extern FILE    *f;
  221.  
  222.  
  223. extern State        *is;        /* current internal state */
  224. extern DocState        *ids;        /* internal document state */
  225. extern SectState    *iss;        /* internal section state */
  226. extern ParState        *ips;        /* internal paragraph state */
  227. extern CharState    *ics;        /* internal character state */
  228.  
  229. extern State        *ws;        /* written state */
  230. extern DocState        *wds;        /* written document state */
  231. extern SectState    *wss;        /* written section state */
  232. extern ParState        *wps;        /* written paragraph state */
  233. extern CharState    *wcs;        /* written character state */
  234.  
  235. extern int    docStateChanged;    /* document properties have changed */
  236. extern int    sectStateChanged;    /* section properties have changed */
  237. extern int    parStateChanged;    /* paragraph properties have changed */
  238. extern int    charStateChanged;    /* character properties have changed */
  239.  
  240. # define    stateChanged    \
  241.     (docStateChanged||sectStateChanged||parStateChanged||charStateChanged)
  242.  
  243.  
  244. extern int    indirectionLevel;
  245.  
  246.  
  247. extern void    InitState ();
  248. extern void    CheckFinalState ();
  249. extern void    PushIState ();
  250. extern void    PopIState ();
  251. extern void    PushWState ();
  252. extern void    PopWState ();
  253. extern void    BeginDiversion ();
  254. extern void    EndDiversion ();
  255. extern void    RestoreSectDefaults ();
  256. extern void    RestoreParDefaults ();
  257. extern void    RestoreCharDefaults ();
  258.  
  259.  
  260. extern void    InitTabSet ();
  261.  
  262.  
  263. extern int    MapBorderLocation ();
  264.  
  265.  
  266. extern void    SelectFormatterMaps ();
  267. extern void    SelectMacPackMaps ();
  268. extern void    SelectCharSetMaps ();
  269. extern char    *CharMapping ();
  270.  
  271.  
  272. extern void    TblAttr ();
  273. extern void    BeginTbl ();
  274. extern void    EndTbl ();
  275. extern void    BeginCell ();
  276. extern void    EndCell ();
  277.  
  278.  
  279. extern void    FlushState ();
  280. extern void    FlushInitialState ();
  281. extern void    FlushSectState ();
  282. extern void    Flush ();
  283. extern void    SaveTblFPV ();
  284. extern void    FlushTblFPV ();
  285.  
  286. extern double    EnWidth ();
  287.  
  288. extern void    ResetPar ();
  289. extern void    ResetParLine ();
  290. extern void    Sect ();
  291. extern void    Par ();
  292. extern void    PutString ();
  293. extern void    Comment ();
  294.