home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 4 / CDPD_IV.bin / utilities / print / post / source / post.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-24  |  19.4 KB  |  779 lines

  1. /* PostScript interpreter file "post.h" - header file
  2.  * (C) Adrian Aylward 1989, 1992
  3.  * V1.6 First source release
  4.  * V1.7 Fix stroking lines of zero length
  5.  */
  6.  
  7. # ifndef POST_H
  8. # define POST_H
  9.  
  10. /* Operating system or machine */
  11.  
  12. /* # define AMIGA  (defined for us on the Amiga!) */
  13. /* # define UNIX */
  14.  
  15. /* Standard libraries */
  16.  
  17. # include <stdio.h>
  18. # include <stdlib.h>
  19. # include <string.h>
  20. # include <setjmp.h>
  21. # include <math.h>
  22. # include <signal.h>
  23.  
  24. /* Use in line code for 68881 */
  25.  
  26. # ifdef M68881
  27. # include <m68881.h>
  28. # endif
  29.  
  30. /* So we can reassign the standard io files */
  31.  
  32. # define sstdin  stdin
  33. # define sstdout stdout
  34. # define sstderr stderr
  35.  
  36. /* Maximum and minimum */
  37.  
  38. # ifndef max
  39. # define max(a,b) ((a)>(b)?(a):(b))
  40. # endif
  41. # ifndef min
  42. # define min(a,b) ((a)<(b)?(a):(b))
  43. # endif
  44.  
  45. /* Machine word alignment */
  46.  
  47. # define mcalign 4
  48.  
  49. /* Conversions from floats to integers */
  50.  
  51. # define itrunc(rval) ((int) (rval))
  52.  
  53. /* Constants for arcs and Bezier curves */
  54.  
  55. # define degtorad   .0174532925199432957692
  56. # define radtodeg 57.295779513082320876
  57.  
  58. # define twopi     6.28318530717958647692 /* pi*2 */
  59. # define pi        3.14159265358979323846 /* pi   */
  60. # define pi2       1.57079632679489661923 /* pi/2 */
  61.  
  62. /* A very small angle.  (Anything smaller is a complete circle). */
  63.  
  64. # define pdelta     .00001
  65.  
  66. # define sqrt2     1.41421356237309504880 /* sqrt(2) */
  67.  
  68. # define f43rt2     .55228474983079339840 /* 4/3 * (sqrt(2)-1) / sqrt(2) */
  69. # define f43       1.33333333333333333333 /* 4/3 */
  70.  
  71. # define f12       0.5                    /* 1/2 */
  72. # define f14       0.25                   /* 1/4 */
  73. # define f18       0.125                  /* 1/8 */
  74. # define f38       0.375                  /* 3/8 */
  75.  
  76. /* Encryption constants */
  77.  
  78. # define eshift        8
  79. # define emask     65535
  80. # define ec1       52845
  81. # define ec2       22719
  82. # define einitexec 55665
  83. # define einitchar  4330
  84.  
  85. /* Limits */
  86.  
  87. # define maxdepth        20
  88. # define istacksize       9
  89. # define gstacksize      31
  90.  
  91. # define systemdictsize 300
  92. # define userdictsize   200
  93. # define fontdictsize   100
  94. # define errordictsize   40
  95. # define errdsdictsize   10
  96.  
  97. # define dashsize 11
  98.  
  99. # define maxargs         20
  100.  
  101. /* Version */
  102.  
  103. extern char version[];
  104.  
  105. /* Prompts */
  106.  
  107. # define promptsize 20
  108.  
  109. extern int prompting;
  110.  
  111. extern char prompt1[promptsize + 1], prompt2[promptsize + 1];
  112.  
  113. /* Times */
  114.  
  115. extern long time1, time2;
  116.  
  117. /* The random number */
  118.  
  119. extern unsigned int random;
  120.  
  121. /* The virtual machine */
  122.  
  123. typedef unsigned vmref;
  124.  
  125. # define vmsegmax        64
  126. # define vmstacksize     15     /* N.B. packing code assumes <= 256 */
  127. # define vmhashsize      31
  128.  
  129. extern int packing;
  130. extern int vmnest;
  131. extern int vmparms, vmsegno, vmsegsize;
  132. extern int vmused, vmhwm, vmmax;
  133.  
  134. extern char *vmbeg[vmsegmax]; 
  135. extern int vmnext[vmsegmax], vmsize[vmsegmax]; 
  136.  
  137. struct vmframe
  138. {   int generation, gnest, packing;
  139.     int vsegno, vnext, vused;
  140.     vmref hlist[vmhashsize + 1];
  141. };
  142.  
  143. struct vmlist
  144. {   vmref chain, vref;
  145.     int length;
  146. };
  147.  
  148. extern struct vmframe vmstack[vmstacksize + 1];
  149.  
  150. /* Objects */
  151.  
  152. struct object
  153. {   unsigned char type, flags;
  154.     unsigned short length;
  155.     union
  156.     {    int               ival;
  157.          float             rval;
  158.          vmref             vref;
  159.     } value;
  160. };
  161.  
  162. /* Dictionaries */
  163.  
  164. union dictkey
  165. {   struct object keyobj;
  166.     unsigned int keyint[2];
  167. };
  168.  
  169. struct dictentry
  170. {   struct object key, val;
  171. };
  172.  
  173. struct dictionary
  174. {   unsigned char type, flags;
  175.     unsigned short slots, size, full, saved, filler;
  176.     vmref vref;
  177.     int length;
  178.     struct dictentry entries[1];
  179. };
  180.  
  181. /* The name table */
  182.  
  183. struct name
  184. {   vmref chain;
  185.     unsigned int hash;
  186.     unsigned short length;
  187.     char string[2];
  188. };
  189.  
  190. # define namebufsize 128
  191.  
  192. extern char namebuf[namebufsize + 1];
  193.  
  194. # define nametablesize 512
  195.  
  196. extern vmref *nametable;
  197.  
  198. /* The stacks */
  199.  
  200. # define operstacksize 500
  201. # define execstacksize 250
  202. # define dictstacksize  20
  203.  
  204. extern int opernest, execnest, dictnest;
  205.  
  206. extern struct object *operstack, *execstack, *dictstack;
  207.  
  208. /* The file table */
  209.  
  210. # define openread  1
  211. # define openwrite 2
  212. # define openfont  4
  213.  
  214. # define filetablesize 20       /* N.B. packing code assumes <= 256 */
  215.  
  216. struct file
  217. {   int generation, saved, open;
  218.     int ch, uflg;
  219.     int stype, slen;
  220.     int emode, erand;
  221.     FILE *fptr;
  222. };
  223.  
  224. extern struct file *filetable;
  225.  
  226. /* Object types and flags */
  227.  
  228. # define typenull        0   /* null object is binary zeros */
  229. # define typemark        1   /* mark */
  230. # define typesave        2   /* save object */
  231. # define typeoper        3   /* operator */
  232. # define typefile        4   /* file */
  233. # define typeint         5   /* integer */
  234. # define typereal        6   /* real */
  235. # define typebool        7   /* boolean */
  236. # define typearray       8   /* array */
  237. # define typepacked      9   /* packedarray */
  238. # define typestring     10   /* string */
  239. # define typename       11   /* name */
  240. # define typedict       12   /* dictionary */
  241. # define typefont       13   /* fontID */
  242. # define typemax        14
  243.  
  244. # define typechar       14   /* char integer - only when packed */
  245. # define typeoper2      15   /* operator (bound name) - only when packed */
  246.  
  247. # define flagexec      128   /* executable (not literal) */
  248. # define flagwprot      64   /* write protection */
  249. # define flagrprot      32   /* read protection */
  250. # define flagxprot      16   /* execute protection */
  251. # define flagctrl        8   /* control (on execution stack) */
  252. # define flagloop        4   /* loop    (on execution stack) */
  253. # define flagrun         2   /* run     (on execution stack) */
  254. # define flagstop        1   /* stopped (on execution stack) */
  255.  
  256. extern char *typetable[typemax + 1];
  257.  
  258. /* Errors */
  259.  
  260. # define errdictfull             1
  261. # define errdictstackoverflow    2
  262. # define errdictstackunderflow   3
  263. # define errexecstackoverflow    4
  264. # define errinterrupt            5
  265. # define errinvalidaccess        6
  266. # define errinvalidexit          7
  267. # define errinvalidfileaccess    8
  268. # define errinvalidfont          9
  269. # define errinvalidrestore      10
  270. # define errinvalidstop         11
  271. # define errioerror             12
  272. # define errlimitcheck          13
  273. # define errnocurrentpoint      14
  274. # define errrangecheck          15
  275. # define errstackoverflow       16
  276. # define errstackunderflow      17
  277. # define errsyntaxerror         18
  278. # define errtimeout             19
  279. # define errtypecheck           20
  280. # define errundefined           21
  281. # define errundefinedfilename   22
  282. # define errundefinedresult     23
  283. # define errunmatchedmark       24
  284. # define errunregistered        25
  285. # define errVMerror             26
  286. # define errmemoryallocation    27
  287. # define errkill                28
  288. # define errmax                 28
  289.  
  290. extern char *errortable[errmax + 1];
  291.  
  292. extern struct object errorname[errmax + 1];
  293.  
  294. extern struct object errordict;
  295.  
  296. # define edsnewerror             0
  297. # define edserrorname            1
  298. # define edscommand              2
  299. # define edsostack               3
  300. # define edsestack               4
  301. # define edsdstack               5
  302. # define edsmax                  6
  303.  
  304. extern char *errdstable[edsmax];
  305.  
  306. extern struct object errdsname[edsmax], errdstoken[edsmax];
  307.  
  308. extern struct object errdsdict;
  309.  
  310. extern int errorflag, errornum;
  311. extern char *errorstring;
  312.  
  313. extern int returncode;
  314.  
  315. extern int intsigflag;
  316.  
  317. /* The operator table */
  318.  
  319. extern struct object *currtoken;
  320.  
  321. struct operator
  322. {   void (*func)();
  323.     char *sptr;
  324. };
  325.  
  326. # define optablesize 250        /* N.B. packing code assumes <= 256 */
  327.  
  328. extern int opnum;
  329. extern struct operator *optable;
  330.  
  331. /* Various names for character operations */
  332.  
  333. # define charstdencoding         0
  334. # define charnotdef              1
  335. # define charfontdirectory       2
  336. # define charfonttype            3
  337. # define charfontmatrix          4
  338. # define charfontbbox            5
  339. # define charencoding            6
  340. # define charfid                 7
  341. # define charuniqueid            8
  342. # define charbuildchar           9
  343. # define charmetrics            10
  344. # define charpainttype          11
  345. # define charstrokewidth        12
  346. # define charcharstrings        13
  347. # define charprivate            14
  348. # define charsubrs              15
  349. # define charleniv              16
  350. # define charbluevalues         17
  351. # define charotherblues         18
  352. # define charbluescale          19
  353. # define charblueshift          20
  354. # define charbluefuzz           21
  355. # define charmax                22
  356.  
  357. extern char *chartable[charmax];
  358.  
  359. extern struct object charname[charmax];
  360.  
  361. /* The standard encoding vector */
  362.  
  363. extern char *stdentable[192];
  364.  
  365. extern struct object *stdencoding;
  366.  
  367. /* Paths, lines, and line segments */
  368.  
  369. # define ptmove   1
  370. # define ptline   2
  371. # define ptcurve  3
  372. # define ptclosei 4
  373. # define ptclosex 5
  374.  
  375. struct point
  376. {   int type;
  377.     float x, y;
  378. };
  379.  
  380. extern int pathsize;
  381. extern int pathbeg, pathend, pathseg;
  382.  
  383. extern struct point *patharray;
  384.  
  385. struct line
  386. {   struct line *chain;
  387.     signed char cdir, fdir;
  388.     short filler;
  389.     short y1, y2;
  390.     int xx, dx, d1, d2;
  391. };
  392.  
  393. extern int linesize;
  394. extern int lineend;
  395.  
  396. extern struct line *linearray;
  397. extern struct line **lineptr;
  398.  
  399. struct lineseg
  400. {   signed char cdir, fdir;
  401.     short x;
  402. };
  403.  
  404. extern struct lineseg *linesegarray;
  405.  
  406. struct clip
  407. {   struct clip *chain;
  408.     signed char cdir, fdir;
  409.     char flag, swap;
  410.     int x1, y1, x2, y2;
  411. };
  412.  
  413. extern int clipsize;
  414. extern int clipend;
  415.  
  416. extern struct clip *cliparray;
  417. extern struct clip **clipptr;
  418.  
  419. /* The halftone screens */
  420.  
  421. extern int halfok;
  422.  
  423. extern char *halfbeg;
  424. extern int halfsize;
  425.  
  426. struct halftone
  427. {   int    psize, xsize, ysize;
  428.     int    area, xrep;
  429.     int    dx, dy;
  430.     short *spotkey;
  431.     short *spotsub;
  432.     short *spotnum;
  433.     char **spotptr;
  434.     int    spotmax, spotnext;
  435. };
  436.  
  437. extern struct halftone halftone[4];
  438.  
  439. extern int screenok;
  440.  
  441. struct halfscreen
  442. {   int    num;
  443.     char  *ptr;
  444.     struct halftone *halftone;
  445. };
  446.  
  447. extern struct halfscreen halfscreen[4];
  448.  
  449. /* The page buffer and output device */
  450.  
  451. struct device
  452. {   char *buf[24];
  453.     int len;
  454.     short depth, reserved[3];
  455.     short xoff, yoff;
  456.     short xbytes, xsize, ysize, ybase, yheight;
  457.     short xden, yden, ydir;
  458. };
  459.  
  460. extern struct device page;
  461.  
  462. /* The x buffers, y bucket array, and line filling limits */
  463.  
  464. extern int xbsize;
  465. extern int *xshf;
  466. extern char *xbuf;
  467.  
  468. extern int ybflag;
  469. extern struct line **ybucket;
  470.  
  471. # define xlwb -1000.0 * 256.0
  472. # define xupb 31767.0 * 256.0
  473.  
  474. extern double ylwb, yupb;
  475. extern double ymin, ymax;
  476.  
  477. /* The graphics state */
  478.  
  479. struct gstate
  480. {   struct object font;
  481.     struct object dasharray; 
  482.     struct object transfer[4];
  483.     struct object screenfunc[4];
  484.     struct object ucr, gcr;
  485.     struct device dev;
  486.     float ctm[6];
  487.     float linewidth;
  488.     float flatness;
  489.     float dashoffset, dashlength[dashsize];
  490.     float mitrelimit, mitresin;
  491.     float gray, rgb[3], rgbw[4];
  492.     float shade[4];
  493.     float screenfreq[4], screenangle[4];
  494.     short clipbeg, pathbeg, pathend;
  495.     short linecap, linejoin;
  496.     short transdepth;
  497.     short screendepth;
  498.     short shadeok, clipflag, cacheflag, nullflag;
  499. };
  500.  
  501. extern int gnest;
  502.  
  503. extern struct gstate gstate, *gstack;
  504.  
  505. extern struct object copies;
  506.  
  507. /* The interpreter state flags */
  508.  
  509. # define intgraph                1
  510. # define intchar                 2
  511.  
  512. /* The interpreter recursion stack */
  513.  
  514. struct istate
  515. {   int flags, type;
  516.     int vmbase, gbase;
  517.     int execbase;
  518.     int fclim;
  519.     struct fcrec *pfcrec;
  520.     jmp_buf errjmp;
  521. };
  522.  
  523. extern int inest;
  524.  
  525. extern struct istate istate, *istack;
  526.  
  527. /* The font directory and make cache */
  528.  
  529. extern struct object fontdir;
  530.  
  531. extern int fonttype, fontid, fontencodlen;
  532. extern vmref fontmatrix, fontencoding;
  533.  
  534. # define fmsize     20
  535.  
  536. struct fmrec
  537. {   int count, id, encodlen;
  538.     vmref encoding, dref;
  539.     float matrix[6];
  540. };
  541.  
  542. extern struct fmrec *fmcache;
  543.  
  544. extern int fmcount;
  545.  
  546. /* The font character cache */
  547.  
  548. # define fcsize    256
  549.  
  550. struct fcrec
  551. {   struct fcrec *chain;
  552.     vmref dref, nref;
  553.     struct point width;
  554.     float matrix[4];
  555.     int reclen, count, id;
  556.     unsigned int hash;
  557.     int len;
  558.     short xbytes, xsize, ysize;
  559.     short xoffset, yoffset;
  560. };
  561.  
  562. extern struct fcrec **fccache;
  563.  
  564. extern struct fcrec *fcbeg, *fcend, *fcptr;
  565.  
  566. extern int fclen, fclimit;
  567.  
  568. /* Font build data for type 1 */
  569.  
  570. extern int fontpainttype;
  571. extern float fontstrokewidth;
  572. extern vmref fontmetrics, fontcharstrings, fontprivate;
  573. extern struct object fontbuildproc, fontsubrs;
  574. extern int fontleniv;
  575.  
  576. /* Allocated memory */
  577.  
  578. # define memlsegmax  20
  579. # define mempsegmax  20
  580.  
  581. extern void *memfbeg, *memhbeg;
  582. extern void *memlbeg, *mempbeg, *memibeg, *memxbeg, *memybeg;
  583.  
  584. extern int   memflen,  memhlen;
  585. extern int   memllen,  memplen,  memilen,  memxlen,  memylen;
  586.  
  587. extern int   memvmin,  memlmin,  mempmin;
  588.  
  589. /* Implementation dependent routines */
  590.  
  591. extern int  flushlevel(int level);
  592. extern void flushlpage(int y1, int y2);
  593. extern int  copypage(int num);
  594. extern void *memalloc(int length);
  595. extern void memfree(void *beg, int length);
  596.  
  597. /* Routines  - file "postint.c" */
  598.  
  599. /* Build a virtual machine reference */
  600.  
  601. # define vmxref(s,n) ((s<<24)+n)
  602.  
  603. /* Convert a virtual machine reference to a pointer */
  604.  
  605. # define vmsptr(v) (vmbeg[v>>24]+(v&0xffffff))
  606. # define vmaptr(v) ((struct object *)(vmsptr(v)))
  607. # define vmnptr(v) ((struct name *)(vmsptr(v)))
  608. # define vmdptr(v) ((struct dictionary *)(vmsptr(v)))
  609. # define vmvptr(v) ((void *)(vmsptr(v)))
  610.  
  611. /* Check if a virtual machine reference is newer than a save frame */
  612.  
  613. # define vmscheck(f,v) (v>=vmxref(f->vsegno,f->vnext))
  614.  
  615. /* Allocate a new array */
  616.  
  617. # define arrayalloc(length) \
  618.     vmalloc((length) * sizeof (struct object))
  619.  
  620. /* Save an array before updating it */
  621.  
  622. # define arraysave(aref, length) \
  623.     vmsavemem(aref, (length) * sizeof (struct object))
  624.  
  625. /* Copy an array */
  626.  
  627. # define arraycopy(aptr1, aptr2, length) \
  628.     memcpy((char *) (aptr1), (char *) (aptr2), \
  629.            (length) * sizeof (struct object))
  630.  
  631. extern void initint(int parms);
  632. extern void tidyint(void);
  633. extern void systemname(struct object *token, char *sptr, int flags);
  634. extern void systemop(void (*func)(), char *sptr);
  635. extern void interpret(struct object *interpreting);
  636. extern void pushint(void);
  637. extern void popint(void);
  638. extern void putch(FILE *fptr, int ch);
  639. extern void putstr(FILE *fptr, char *str);
  640. extern void putmem(FILE *fptr, char *str, int length);
  641. extern void putcheck(FILE *fptr, char *str, int length);
  642. extern void fileopen(struct object *token, int open, char *name, int length);
  643. extern void fileclose(struct object *token);
  644. extern struct file *filecheck(struct object *token, int open);
  645. extern int  getfseg(struct file *file);
  646. extern void fileeinit(struct object *token);
  647. extern int  readch(struct object *input, int depth);
  648. extern void unreadch(struct object *input, int ch);
  649. extern int  digitval(int ch);
  650. extern int  scantoken(struct object *token, struct object *input, int depth);
  651. extern int  numtoken(struct object *token, char *string);
  652. extern void nametoken(struct object *token, char *string,
  653.                       int length, int flags);
  654. extern void dicttoken(struct object *token, int size);
  655. extern void dictput(vmref dref, struct object *key, struct object *val);
  656. extern int  dictget(vmref dref, struct object *key, struct object *val,
  657.                     int flags);
  658. extern int  dictfind(struct object *key, struct object *val);
  659. extern vmref arraypack(struct object *aptr, int length);
  660. extern void arrayunpk(struct object *aptr, char *sptr, int length);
  661. extern int  pack(struct object *token, char *sptr);
  662. extern int  unpack(struct object *token, char *sptr);
  663. extern void vminit(int parms);
  664. extern void vmtidy(void);
  665. extern void vmparm(int parm, void *bag, int size);
  666. extern vmref vmalloc(int size);
  667. extern void *vmallocv(int size);
  668. extern void *vmxptr(vmref vref);
  669. extern char *vmstring(int length, int size);
  670. extern void vmallocseg(int blksize, int length);
  671. extern void vmsavemem(vmref vref, int length);
  672. extern void vmsave(struct object *token);
  673. extern void vmrest(int nest, int generation);
  674. extern void vmrestcheck(struct vmframe *vmframe,
  675.                         struct object *stackptr, int stackcnt);
  676. extern void vmrestfiles(int nest);
  677. extern void vmrestnames(struct vmframe *vmframe);
  678. extern void vmrestmem(int nest);
  679. extern int  cvstring(struct object *token, char *sptr, int length);
  680. extern void printequals(FILE *fptr, struct object *token);
  681. extern void printeqeq(FILE *fptr, struct object *token,
  682.                       int depth, int count);
  683. extern int  equal(struct object *token1, struct object *token2);
  684. extern int  compare(struct object *token1, struct object *token2);
  685. extern void bind(struct object *proc, int depth);
  686. extern int  usertime(void);
  687. extern void stop(void);
  688. extern void error(int errnum);
  689. extern void errorarray(struct object *token1, struct object *aptr,
  690.                        int length);
  691. extern void errorexit(void);
  692. extern void errormsg(void);
  693. extern void errorjmp(int nest, int num);
  694.  
  695. /* Routines  - file "postchar.c" */
  696.  
  697. extern void initchar(void);
  698. extern void vmrestfont(struct vmframe *vmframe);
  699. extern void definefont(struct object *key, struct object *font);
  700. extern void findfont(struct object *key, struct object *font);
  701. extern void makefont(struct object *font, float *matrix);
  702. extern void setfont(struct object *font);
  703. extern void checkfont(struct object *font, int fid);
  704. extern void show(struct object *string, int type,
  705.                  struct point *width, int wchar, struct object *proc);
  706. extern void charpath(void);
  707. extern void setcharwidth(struct point *width);
  708. extern void setcachedevice(struct point *ll, struct point *ur, int ftype);
  709. extern void cachestatus(int *status);
  710. extern void nulldevice(void);
  711. extern void cacheimage(struct fcrec *pfcrec, struct point *point);
  712.  
  713. /* Routines  - file "postfont.c" */
  714.  
  715. extern void initfont(void);
  716. extern void initbuild(vmref dref);
  717. extern void buildchar(int schar);
  718.  
  719. /* Routines  - file "postgraph.c" */
  720.  
  721. extern void initgstate(void);
  722. extern void initgraphics(void);
  723. extern void initctm(float newctm[]);
  724. extern void setdevice(struct device *ppage);
  725. extern void checkimagesize(int len);
  726. extern void checklinesize(int size);
  727. extern void checkpathsize(int size);
  728. extern void cliplength(int cliplen);
  729. extern void clippath(void);
  730. extern void gsave(void);
  731. extern void grest(void);
  732. extern void grestall(void);
  733. extern void getmatrix(vmref aref, float *matrix);
  734. extern void putmatrix(vmref aref, float *matrix);
  735. extern void multiplymatrix(float *mat1, float *mat2, float *mat3);
  736. extern void invertmatrix(float *mat1, float *mat2);
  737. extern void transform(struct point *ppoint, float *matrix);
  738. extern void dtransform(struct point *ppoint, float *matrix);
  739. extern void itransform(struct point *ppoint, float *matrix);
  740. extern void idtransform(struct point *ppoint, float *matrix);
  741. extern void arc(int dir, float radaa[3],
  742.                 struct point *centre, struct point *beg, struct point *end);
  743. extern void closepath(int type);
  744. extern void flattenpath(void);
  745. extern void strokepath(int fillflag);
  746. extern void clip(int eoflag);
  747.  
  748. /* Routines  - file "postdraw.c" */
  749.  
  750. extern void setupfill(void);
  751. extern void fill(int beg, int end, int eoflag);
  752. extern void filllines(struct point *ppoint, int count, int cdir, int fdir);
  753. extern void setybucket(int base, int size);
  754. extern void image(int width, int height, int bps, float *matrix, int mode,
  755.                   int ncol, int multi, struct object *procs);
  756. extern void erasepage(void);
  757.  
  758. /* Routines  - file "postshade.c" */
  759.  
  760. extern void mapcolour(int n1, float *colour1, int n2, float *colour2);
  761. extern void setcolour(int n, float *colour);
  762. extern void gethsbcolour(float *hsb);
  763. extern void sethsbcolour(float *hsb);
  764. extern void calltransfer(float *colour, float *shade);
  765. extern void setupshade(void);
  766. extern void setuphalf(void);
  767. extern void setupscreen(float *shade);
  768.  
  769. /* Routines  - files postop1.c, postop2.c, postop3.c, postop4.c */
  770.  
  771. extern void initop1(void);
  772. extern void initop2(void);
  773. extern void initop3(void);
  774. extern void initop4(void);
  775.  
  776. # endif
  777.  
  778. /* End of file "post.h" */
  779.