#include <exec/types.h>
#include <dos.h>
#include <graphics/gfxbase.h>
#include <intuition/intuitionbase.h>

#include <proto/intuition.h>

#include <myinc/arq.h>      /*supports animated file requesters*/

#ifndef WA_NewLookMenus
#define WA_NewLookMenus (WA_Dummy + 0x30)
#endif

#ifndef GTMN_NewLookMenus
#define GTMN_NewLookMenus       GT_TagBase+67
#endif

#define ARR_U 1
#define ARR_D 2
#define ARR_L 3
#define ARR_R 4
#define VSCROLL 5
#define HSCROLL 6

#define FREQ_ALL 0x0000
#define FREQ_TEXT 0x0001
#define FREQ_CH 0x0002
#define FREQ_ASM 0x0004

#define MAXLINELEN 512
#define ASL_VER 37L
#define GADTOOLS_VER 37L
#define GRAPHICS_VER 37L
#define INTUITION_VER 37L
#define UTILITY_VER 37L

struct vLine {
    LONG number;
    UBYTE format;
    UBYTE fgColor;
    UBYTE bgColor;
    UBYTE mode;
    ULONG style;
    LONG len;
    char *string;
    };

struct vJet {
    struct Screen *scr;
    struct VisualInfo *vI;
    struct DrawInfo *dI;
    struct Window *win;
    struct Menu *menu;
    struct TextFont *dvF;       /*current default font*/
    struct TextAttr dtA;
    struct TextAttr *stA;       /*current Screen font attributes*/
    struct Image *upImage,*downImage,*leftImage,*rightImage;
    struct Gadget *vProp,*upArr,*downArr,*hProp,*leftArr,*rightArr;

    struct vLine *lineArray;
    TEXT path[5][FMSIZE-1];
    UBYTE pathNum;

    TEXT winTitle[100];
    TEXT find[100];
    LONG findpos[2];            //line and column
    LONG findLen;               //current find string length
    ULONG go;

//display attributes follow
    LONG topcolumn, topline;      /*number of top most line and leftcolumn*/
    LONG maxcolumn, maxline;      /*number of last column and line*/
    LONG linesPerPage,columnsPerPage;           /*as name shows*/

    BOOL customScreen;
    WORD depth;                 //limited to 1(1)4
    BOOL caseInSensitive;       //FALSE=case sensitiv, TRUE=...
    BOOL findDir;               //FALSE=forward, TRUE=backward
    BOOL handleCSI;
    };

extern struct Library *IconBase;
extern struct Library *UtilityBase;
extern struct GadToolsBase *GadToolsBase;
extern struct GfxBase *GfxBase;
extern struct IntuitionBase *IntuitionBase;
extern struct vJet *vjet;
extern BOOL customScreen;

//prototypes
// vgads.c
extern struct Gadget *createWindowGadgets(struct vJet *vjet);
extern BOOL handleDGad(struct vJet *,struct Gadget *);
extern BOOL handleUGad(struct vJet *,struct Gadget *);
extern VOID setHSlider(struct vJet *);
extern VOID setVSlider(struct vJet *);

// vdis.c
extern BOOL checkForFormats(struct vJet *vjet);
extern VOID checkWinSize(struct vJet *vjet);
extern LONG countLines(char *buffer, LONG len);
extern VOID displayPage(struct vJet *vjet,LONG lpos,LONG lcount,LONG col,LONG ccount);
extern VOID displayWholePage(struct vJet *vjet);
extern char *getCSI(char *c,LONG *CSIlen);
extern VOID getVSlider(struct vJet *);
extern VOID getHSlider(struct vJet *);
extern VOID initLines(struct vJet *vjet,char *buf,LONG bufSize);
extern ULONG initLPTR(struct vJet *vjet,char *buf,LONG bufSize,struct vLine lineArray[], LONG maxline);
extern LONG lineLength(char *string);
extern BOOL loadFile(struct vJet *vjet,STRPTR path);
extern VOID movePageHoriz(struct vJet *vjet,LONG columns);
extern VOID movePageVert(struct vJet *vjet,LONG lines);
extern VOID openFile(struct vJet *vjet,STRPTR path);
extern VOID printLine(struct vJet *vjet,struct vLine line,LONG linepos,LONG col,LONG ccount);
extern VOID setCSIcode(char *CSItok,UBYTE *mode,ULONG *style,UBYTE *fgColor,UBYTE *bgColor);
extern void setDefaultStyle(struct vJet *vjet);
extern VOID unLoadFile(struct vJet *vjet);

// vfind.c
extern VOID findNext(struct vJet *vjet);
extern VOID findPrevious(struct vJet *vjet);
extern BOOL findReq(struct vJet *vjet,char *string);


// vFR.c
extern struct EasyStruct openFail;
extern VOID about(struct vJet *vjet);
extern BOOL arqEasyRequest(struct Window *w,struct EasyStruct es,WORD id,ULONG *ip,APTR arg1,...);
extern BOOL fileReq(struct vJet *vjet,struct Window *win,char *hail,char *fileName,UWORD mode);

// vJet.c
extern void cleanExit(int returnValue );
extern BOOL handleIDCMP(void);
extern BOOL handleMenu(struct vJet *vjet,UWORD code);
extern VOID OpenGen(void);
extern VOID titleWin(struct vJet* vjet,char *string);


//vkeys.c
extern BOOL handleRaw(struct vJet *vjet,USHORT code,USHORT qual);
extern BOOL handleVanilla(struct vJet *vjet,USHORT code,USHORT qual);
extern VOID gotoLine(struct vJet *vjet);

/*end of file*/