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

void xtesetup PLARGS((PLFLT xdpi, PLFLT ydpi, PLINT xsize, PLINT ysize));
void xteselect PLARGS((PLINT or, char *file));
void xteinit PLARGS((void));
void xteline PLARGS((PLINT x1, PLINT y1, PLINT x2, PLINT y2));
void xteclear PLARGS((void));
void xtepage PLARGS((void));
void xtetidy PLARGS((void));
void xtecolor PLARGS((PLINT color));
void xtetext PLARGS((void));
void xtegraph PLARGS((void));
void xtewidth PLARGS((PLINT width));

void tektsetup PLARGS((PLFLT xdpi, PLFLT ydpi, PLINT xsize, PLINT ysize));
void tekfsetup PLARGS((PLFLT xdpi, PLFLT ydpi, PLINT xsize, PLINT ysize));
void tektselect PLARGS((PLINT or, char *file));
void tekfselect PLARGS((PLINT or, char *file));
void tektinit PLARGS((void));
void tekfinit PLARGS((void));
void tekline PLARGS((PLINT x1, PLINT y1, PLINT x2, PLINT y2));
void tektclear PLARGS((void));
void tekfclear PLARGS((void));
void tekpage PLARGS((void));
void tekttidy PLARGS((void));
void tekftidy PLARGS((void));
void tekcolor PLARGS((PLINT color));
void tektext PLARGS((void));
void tekgraph PLARGS((void));
void tekwidth PLARGS((PLINT width));

void dgsetup PLARGS((PLFLT xdpi, PLFLT ydpi, PLINT xsize, PLINT ysize));
void dgselect PLARGS((PLINT or, char *file));
void dginit PLARGS((void));
void dgline PLARGS((PLINT x1, PLINT y1, PLINT x2, PLINT y2));
void dgclear PLARGS((void));
void dgpage PLARGS((void));
void dgtidy PLARGS((void));
void dgcolor PLARGS((PLINT color));
void dgtext PLARGS((void));
void dggraph PLARGS((void));
void dgwidth PLARGS((PLINT width));

void hp7470setup PLARGS((PLFLT xdpi, PLFLT ydpi, PLINT xsize, PLINT ysize));
void hp7470select PLARGS((PLINT or, char *file));
void hp7470init PLARGS((void));
void hp7470line PLARGS((PLINT x1, PLINT y1, PLINT x2, PLINT y2));
void hp7470clear PLARGS((void));
void hp7470page PLARGS((void));
void hp7470tidy PLARGS((void));
void hp7470color PLARGS((PLINT color));
void hp7470text PLARGS((void));
void hp7470graph PLARGS((void));
void hp7470width PLARGS((PLINT width));

void hp7580setup PLARGS((PLFLT xdpi, PLFLT ydpi, PLINT xsize, PLINT ysize));
void hp7580select PLARGS((PLINT or, char *file));
void hp7580init PLARGS((void));
void hp7580line PLARGS((PLINT x1, PLINT y1, PLINT x2, PLINT y2));
void hp7580clear PLARGS((void));
void hp7580page PLARGS((void));
void hp7580tidy PLARGS((void));
void hp7580color PLARGS((PLINT color));
void hp7580text PLARGS((void));
void hp7580graph PLARGS((void));
void hp7580width PLARGS((PLINT width));

void impsetup PLARGS((PLFLT xdpi, PLFLT ydpi, PLINT xsize, PLINT ysize));
void impselect PLARGS((PLINT or, char *file));
void impinit PLARGS((void));
void impline PLARGS((PLINT x1, PLINT y1, PLINT x2, PLINT y2));
void impclear PLARGS((void));
void imppage PLARGS((void));
void imptidy PLARGS((void));
void impcolor PLARGS((PLINT color));
void imptext PLARGS((void));
void impgraph PLARGS((void));
void impwidth PLARGS((PLINT width));

void jetsetup PLARGS((PLFLT xdpi, PLFLT ydpi, PLINT xsize, PLINT ysize));
void jetselect PLARGS((PLINT or, char *file));
void jetinit PLARGS((void));
void jetline PLARGS((PLINT x1, PLINT y1, PLINT x2, PLINT y2));
void jetclear PLARGS((void));
void jetpage PLARGS((void));
void jettidy PLARGS((void));
void jetcolor PLARGS((PLINT color));
void jettext PLARGS((void));
void jetgraph PLARGS((void));
void jetwidth 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[] = {
   /* Xterm routines */
   {
      /* This string appears in the device menu list. */
      "Xterm Window",
      /* Page Setup routine */
      xtesetup,
      /* Orientation and file name selection */
      xteselect,
      /* Device initialization function pointer. */
      xteinit,
      /* Function to draw line between two points */
      xteline,
      /* Clear screen (or eject page) function. */
      xteclear,
      /* New page set up. */
      xtepage,
      /* Tidy up device (flush buffers, close file, etc.) */
      xtetidy,
      /* Function to change pen color. */
      xtecolor,
      /* Switch to text mode. */
      xtetext,
      /* Switch to graphics mode. */
      xtegraph,
      /* Set pen width */
      xtewidth
   },
   {
      "Tektronix Terminal",
      tektsetup,
      tektselect,
      tektinit,
      tekline,
      tektclear,
      tekpage,
      tekttidy,
      tekcolor,
      tektext,
      tekgraph,
      tekwidth
   },
   {
      "DG300 Terminal",
      dgsetup,
      dgselect,
      dginit,
      dgline,
      dgclear,
      dgpage,
      dgtidy,
      dgcolor,
      dgtext,
      dggraph,
      dgwidth
   },
   {
      "HP 7470 Plotter File (HPGL Cartridge, Small Plotter)",
      hp7470setup,
      hp7470select,
      hp7470init,
      hp7470line,
      hp7470clear,
      hp7470page,
      hp7470tidy,
      hp7470color,
      hp7470text,
      hp7470graph,
      hp7470width
   },
   {
      "HP 7580 Plotter File (Large Plotter)",
      hp7580setup,
      hp7580select,
      hp7580init,
      hp7580line,
      hp7580clear,
      hp7580page,
      hp7580tidy,
      hp7580color,
      hp7580text,
      hp7580graph,
      hp7580width
   },
   {
      "Impress File",
      impsetup,
      impselect,
      impinit,
      impline,
      impclear,
      imppage,
      imptidy,
      impcolor,
      imptext,
      impgraph,
      impwidth
   },
   {
      "Tektronix File",
      tekfsetup,
      tekfselect,
      tekfinit,
      tekline,
      tekfclear,
      tekpage,
      tekftidy,
      tekcolor,
      tektext,
      tekgraph,
      tekwidth
   },
   {
      "LaserJet II Bitmap File (150 dpi)",
      jetsetup,
      jetselect,
      jetinit,
      jetline,
      jetclear,
      jetpage,
      jettidy,
      jetcolor,
      jettext,
      jetgraph,
      jetwidth
   },
   {
      "PostScript File",
      pssetup,
      psselect,
      psinit,
      psline,
      psclear,
      pspage,
      pstidy,
      pscolor,
      pstext,
      psgraph,
      pswidth
   }
};

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