#include "plplot.h"
#include "dispatch.h"

void amisetup PLARGS((PLFLT xdpi, PLFLT ydpi, PLINT xsize, PLINT ysize));
void amiselect PLARGS((PLINT or, char *file));
void amiinit PLARGS((void));
void amiline PLARGS((PLINT x1, PLINT y1, PLINT x2, PLINT y2));
void amiclear PLARGS((void));
void amipage PLARGS((void));
void amitidy PLARGS((void));
void amicolor PLARGS((PLINT color));
void amitext PLARGS((void));
void amigraph PLARGS((void));
void amiwidth PLARGS((PLINT width));

void prefsetup PLARGS((PLFLT xdpi, PLFLT ydpi, PLINT xsize, PLINT ysize));
void prefselect PLARGS((PLINT or, char *file));
void prefinit PLARGS((void));
void prefline PLARGS((PLINT x1, PLINT y1, PLINT x2, PLINT y2));
void prefclear PLARGS((void));
void prefpage PLARGS((void));
void preftidy PLARGS((void));
void prefcolor PLARGS((PLINT color));
void preftext PLARGS((void));
void prefgraph PLARGS((void));
void prefwidth PLARGS((PLINT width));

void iffsetup PLARGS((PLFLT xdpi, PLFLT ydpi, PLINT xsize, PLINT ysize));
void iffselect PLARGS((PLINT or, char *file));
void iffinit PLARGS((void));
void iffline PLARGS((PLINT x1, PLINT y1, PLINT x2, PLINT y2));
void iffclear PLARGS((void));
void iffpage PLARGS((void));
void ifftidy PLARGS((void));
void iffcolor PLARGS((PLINT color));
void ifftext PLARGS((void));
void iffgraph PLARGS((void));
void iffwidth PLARGS((PLINT width));

void hp7475setup PLARGS((PLFLT xdpi, PLFLT ydpi, PLINT xsize, PLINT ysize));
void hp7475select PLARGS((PLINT or, char *file));
void hp7475init PLARGS((void));
void hp7475line PLARGS((PLINT x1, PLINT y1, PLINT x2, PLINT y2));
void hp7475clear PLARGS((void));
void hp7475page PLARGS((void));
void hp7475tidy PLARGS((void));
void hp7475color PLARGS((PLINT color));
void hp7475text PLARGS((void));
void hp7475graph PLARGS((void));
void hp7475width PLARGS((PLINT width));

void aegissetup PLARGS((PLFLT xdpi, PLFLT ydpi, PLINT xsize, PLINT ysize));
void aegisselect PLARGS((PLINT or, char *file));
void aegisinit PLARGS((void));
void aegisline PLARGS((PLINT x1, PLINT y1, PLINT x2, PLINT y2));
void aegisclear PLARGS((void));
void aegispage PLARGS((void));
void aegistidy PLARGS((void));
void aegiscolor PLARGS((PLINT color));
void aegistext PLARGS((void));
void aegisgraph PLARGS((void));
void aegiswidth PLARGS((PLINT width));

void pssetup PLARGS((PLFLT xdpi, PLFLT ydpi, PLINT xsize, PLINT ysize));
void psselect PLARGS((PLINT or, char *file));
void psinit PLARGS((void));
void psline PLARGS((PLINT x1, PLINT y1, PLINT x2, PLINT y2));
void psclear PLARGS((void));
void pspage PLARGS((void));
void pstidy PLARGS((void));
void pscolor PLARGS((PLINT color));
void pstext PLARGS((void));
void psgraph PLARGS((void));
void pswidth PLARGS((PLINT width));

DISPATCH_TABLE plDispatchTable[] = {
   /* Amiga routines */
   {
      /* This string appears in the device menu list. */
      "Amiga Window",
      /* Page Setup routine */
      amisetup,
      /* Orientation and file name selection */
      amiselect,
      /* Device initialization function pointer. */
      amiinit,
      /* Function to draw line between two points */
      amiline,
      /* Clear screen (or eject page) function. */
      amiclear,
      /* New page set up. */
      amipage,
      /* Tidy up device (flush buffers, close file, etc.) */
      amitidy,
      /* Function to change pen color. */
      amicolor,
      /* Switch to text mode. */
      amitext,
      /* Switch to graphics mode. */
      amigraph,
      /* Set pen width */
      amiwidth
   },
   {
      "Preferences Printer",
      prefsetup,
      prefselect,
      prefinit,
      prefline,
      prefclear,
      prefpage,
      preftidy,
      prefcolor,
      preftext,
      prefgraph,
      prefwidth
   },
   {
      "IFF Graphics File",
      iffsetup,
      iffselect,
      iffinit,
      iffline,
      iffclear,
      iffpage,
      ifftidy,
      iffcolor,
      ifftext,
      iffgraph,
      iffwidth
   },
   {
      "HP7475A Plotter (PLT: device)",
      hp7475setup,
      hp7475select,
      hp7475init,
      hp7475line,
      hp7475clear,
      hp7475page,
      hp7475tidy,
      hp7475color,
      hp7475text,
      hp7475graph,
      hp7475width
   },
   {
      "Aegis Draw File",
      aegissetup,
      aegisselect,
      aegisinit,
      aegisline,
      aegisclear,
      aegispage,
      aegistidy,
      aegiscolor,
      aegistext,
      aegisgraph,
      aegiswidth
   },
   {
      "PostScript File",
      pssetup,
      psselect,
      psinit,
      psline,
      psclear,
      pspage,
      pstidy,
      pscolor,
      pstext,
      psgraph,
      pswidth
   }
};

int npldrivers = (sizeof(plDispatchTable)/sizeof(struct dispatch_table));
