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