/*stscan.h function prototypes */

#define PAL 

#ifdef PAL
#define SCREENHEIGHT 512
#define VIEWHEIGHT 470
#else
#define SCREENHEIGHT 400
#define VIEWHEIGHT 358
#endif

#define BUFSIZ 65536
#define ADDLIN 6

struct Window *win;
struct IOStdReq *diskreq;
struct Viewport *vp;
struct RastPort *rp;
ULONG memneed;
UWORD memwidth, memheight, membpl; 
UBYTE memgray;
UBYTE *memptr;

typedef struct DefWindow /*might be scanner dependent*/
{  ULONG dummy1;
   UWORD dummy2;
   UWORD wpsize;
   UBYTE winnr;
   UBYTE dummy3;
   UWORD resx;
   UWORD resy;
   UWORD cornerx;
   UWORD cornery;
   UWORD width;
   UWORD height;
   UBYTE dummy4;
   UBYTE threshold;
   UBYTE size;     /* temporary storage, ignored by scanner */
   UBYTE halftone;
   UBYTE bitspixel;
   UBYTE dummy5;
   UWORD dummy6;
   ULONG dummy7;
};

typedef struct SCSICmd  /* included here because */
{   UWORD  *scsi_Data;	/* header file missing in Aztec C 5.0 */	
    ULONG   scsi_Length;	
    ULONG   scsi_Actual;	
    UBYTE  *scsi_Command;	
    UWORD   scsi_CmdLength;	
    UWORD   scsi_CmdActual;	
    UBYTE   scsi_Flags;		
    UBYTE   scsi_Status;
};


UBYTE numbits[256];

/* preset in stscan.c */
UBYTE graystep[];
UBYTE bitval[];
UBYTE invbitval[];
UBYTE revbit[];
struct DefWindow winpar;

/*scnplane.asm*/
void p64to16(UBYTE *ptr, ULONG size);
void clrscr(UBYTE *pl0, UBYTE *pl1, UBYTE *pl2, UBYTE *pl3);
void bwview(UBYTE *vp, UBYTE *pl0, UBYTE *pl1, UBYTE *pl2, UBYTE *pl3, ULONG vinc);
void grayview(UBYTE *vp, UBYTE *pl0, UBYTE *pl1, UBYTE *pl2, UBYTE *pl3, ULONG vinc);
void vplanesep(UBYTE *vp, UBYTE *pl0, UBYTE *pl1, UBYTE *pl2, UBYTE *pl3, ULONG count);
void fplanesep(UBYTE *vp, UBYTE *pl0, UBYTE *pl1, UBYTE *pl2, UBYTE *pl3, ULONG count);
void fplanegen(UBYTE *vp, UBYTE *pl0, UBYTE *pl1, UBYTE *pl2, UBYTE *pl3, ULONG count);

/*imginout.c*/
USHORT filerequest(char *titel, char *str_filenam);
void MessReq(UBYTE *string);
void NotAvailable();
UBYTE DoScsi(UBYTE *cmd, UWORD cmdlen, UWORD *data, ULONG datalen, UBYTE flags);
void inquiry();
void scan();
void view(UWORD x, UWORD y, UBYTE zoom);
void load();
void save(UWORD wx1,UWORD wy1,UWORD wx2,UWORD wy2,UBYTE cmp,UBYTE mf);
UWORD s2px(UWORD x);
UWORD s2py(UWORD y);
UWORD p2sx(UWORD x);
UWORD p2sy(UWORD y);
void drawbox(UWORD wx1,UWORD wy1,UWORD wx2,UWORD wy2,struct RastPort *wrp);
void cut(UWORD wx1,UWORD wy1,UWORD wx2,UWORD wy2,UBYTE mf);

/*pixelop.c*/
void floyd();
void ordered();
void thresh();
void togray();
void invert();
void mirrorh();
void mirrorv();
void viewhisto(struct RastPort *wrp);
void stretchhisto();

/*localop.c*/
void lowpass();
void highpass();
void blowpass();
void relief();
void minop();
void maxop();
void median();

/*vectorop.c*/
void thin();
void vectorize();
void accuracy();