/*->h.wos */


#define MAXI 40


#define INFO       1   
#define SAVEFILE0  2
#define CONF       3
#define STATUS     4
#define FILER      5
#define PSTAT      6
#define ZOOM       7
#define PASSWORD   8
#define SX        10
#define AFTER     11
#define ENTRY     12
#define TDIR      13
#define VX        15
#define VXTOOLS   16
#define GROUP     17
#define SETNEWFAX 18
#define FINFO     19
#define PROCESS   20
#define VXPRINT   21
#define CONTROL   22
#define NEWFAX    23
#define FAX       24
#define MODEM     25
#define BATCH     26
#define PRINTER   27
#define LOG       28
#define VOICE     29
#define REPLAY    30
#define GRABBER   31
#define DBUG      32
#define SERVER    33
#define VINFO     34
#define DINFO     35
#define DWARN     36
#define STANDALONE 37



typedef struct {char * name;int tag;} windowname;

extern windowname windownames[MAXI];



#define CONYN  0
#define CONDC  1
#define CONSDC 2



#define FSMAXLEAF 256
#define FSMAXPATH 1024


typedef struct
{
  int  object;
  int  length;
  int  load;
  int  exec;
  int  acc;
  int  type;
} fstat;



typedef struct fxstat
{
 fstat f;
 char  name[FSMAXLEAF];
} fxstat;





typedef struct
{
 int mul;
 int div;
 int var;
} zoomer;






extern wimp_eventstr wimpevent,wimpfirst;
extern int           icon;
extern int           ewindow;
extern int           buttons;
extern int           mousex,mousey,mhandle,micon;
extern int           x0,x1,y0,y1,bx,by,bhandle,scx,scy,wflags;
extern int           ix0,ix1,iy0,iy1;
extern int           chandle,cicon;
extern int           ox0,ox1,oy0,oy1;

extern int           draghandle;
extern int           dragtype;

extern void seti(int,int,int,int);
extern void select(int,int);
extern void deselect(int,int);
extern void selectst(int handle,int icon,int state);
extern void shadeicon(int window,int icon);
extern void unshadeicon(int window,int icon);
extern void shadeicon2(int window,int icon);
extern void unshadeicon2(int window,int icon);
extern void shadeiconst(int window,int icon,int state);
extern void makemenust(int window,int icon,int state);
extern void makemenuicon(int window,int icon);
extern void unmakemenuicon(int window,int icon);
extern void writeableicon(int window,int icon);
extern void unwriteableicon(int window,int icon);
extern void setspa(int window,int icon,int len,char * name);
extern void setindirect(int window,int icon,int len,char * string);

extern void getpointer(void);
extern void getw(int);
extern void geti(int,int);
extern void dragicon(int mx,int my,int w,int i);
extern void dragasprite(int w,int i);
extern void dragaspritestop(void);
extern void geto(int);
extern char * iconaddr(int,int);

extern void caret(int,int,int,int,int,int);
extern void iecarrot(int,int);
extern void incarrot(int,int);
extern void setfocus(int handle);
extern void findcaret(void);
extern void writeicon(int,int,char *);
extern void writeiconf(int window,int icon,char * format, ...);
extern int  geticonint(int handle,int icon,int * val);
extern void radioon(int,int);
extern void radiooff(int,int);
extern void radiost(int window,int icon,int state);
extern void opton(int,int);
extern void optoff(int,int);
extern void optst(int window,int icon,int state);

extern int  confirm(int mode,char * string, ...);
extern int  doconfirm;

extern void conficon(void);
extern void confkey(int * key);

extern void centerwindow(wimp_wstate * wst,int handle,int i);
extern void popup(int handle,int i);
extern void popupc(int tag);
extern void menuwindow(int handle);
extern void openatscroll(int handle,int scx,int scy);
extern void clipwindow(wimp_openstr * wopen,int andscroll);

extern int  getcolnumber(int pal);
extern void seteorcol(int back,int front);
extern void seteorcolpal(int back,int front);
extern void setgcolour(int wcol,int eor);
extern int  setgcol(int pal);
extern int  setoppgcol(int pal);
extern os_error *selecttable(int sourcemode, int *sourcepal, int destmode,
                      int *destpal, char *transtab);

extern os_error * myreporterror(os_error* er, wimp_errflags flags);
extern void errorbox(char *);
extern void fatalerror(char *);
extern void report(os_error * e);

extern void closedown(int handle);
extern void closedownt(int tag);
extern void closedownhandle(int * handle);


extern int  createwindowsub(int tag,char * title);
extern int  createwindow(int tag);
extern int  whandle[MAXI];
extern wimp_wind * windpoi[MAXI];
extern void reopenw(int handle);
extern void open(int handle,int x0,int y0,int x1,int y1,int scx,int scy,
                                                                 int behind);
extern void extent(int handle,int x0,int y0,int x1,int y1);

extern void getdeltas(int mode,int * dx,int * dy);
extern void getcurdeltas(int * dx,int * dy);
extern void getbpp(int mode,int * rln2bpp,int * bitmask);
extern void getbpc(int mode,int * rln2bpp,int * bitmask);

extern void vdumodevars(void);
extern void vdupalvars(void);
extern void starttask(void);
extern void seticonbar(void);
extern void sethearsayicon(int which);
extern void loadsprites(void);
extern void loadtemps(void);
extern void writetitle(int tag,char * title);



extern int  screenx;
extern int  screeny;
extern int  deltax;
extern int  deltay;
extern int  maskx;
extern int  masky;
extern int  lndeltax;
extern int  lndeltay;
extern int  ncolours;
extern int  gcharsizex;
extern int  gcharsizey;
extern int  gcharspacex;
extern int  gcharspacey;
extern int  ln2bpp;

extern int  taskhandle;
extern int  iconbaricon;

extern void zapmenu(void);
extern char sprites[];

extern os_error * oscli(char * string);
extern void fx(int a,int x,int y);


extern int cstrcmp(char * first,char * second);
extern char * xstrncpy(char *s1,char *s2,int n);
extern void setftype(char * filename,int type);
extern char * leaf(char *);


extern int        filetype(int load);
extern os_error * stat(char * name,fstat * f);
extern os_error * statx(char * name,fstat * f);
extern os_error * stamp(char * name,fstat * f);
extern int        fexists(char * name);
extern os_error * createfile(char * name,int length,int type);
extern int filelength(char * filename);
extern char * kerror(void);

extern void startscan(void);
extern int  nextitem(char * dirname,fxstat * f,char * wild);
extern int  getdirposn(void);
extern void setdirposn(int posn);

extern void setmouse(int x,int y);
extern void refreshwindowtitle(int handle);
extern void refreshwindow(int handle);
extern void forward(int handle);

extern int hscrlbar;
extern int vscrlbar;

extern int  timeout;

extern int wimp_version;

extern void hourglassoff(void);
extern void hourglasson(void);

extern void savesignals(void);
extern void dprintf(int line,char * format, ...);

extern os_error * closescrap(int fh);
extern os_error * newscrap(int * fh);


extern os_error * throwbackstart(void);
extern os_error * throwbackend(void);
extern os_error * throwbacksend(int reason,...);


extern int iconinredraw(wimp_redrawstr * redrawstr);

extern int wimpfonthandle;
extern int wimpfontlead;
extern int wimpfontheight;
extern int wimpfontwidth;
extern int wimpavfontwidth;

extern void wimpfontstart(void);
extern void wimpfontend(void);
extern void plinthtext(int x,int y,int w,int h,char * string,int col);
extern void noplinthtext(int x,int y,int w,int h,char * string,int col);
extern void stringat(int x,int y,char * string,int col,int height);

extern int os3(void);
extern void addmessages(int * mess);

extern os_error * writevalid(int window,int icon,char * string);

extern os_error * findwindowtask(int handle,int icon,int * task);



