#ifndef VNC_PREFS_H
#define VNC_PREFS_H
/*********************************************************
 ** ViNCEd                                              **
 ** a DOS - window handler                              **
 **                                                     **
 ** © 1991-97 THOR-Software inc.                        **
 ** Version 3.40                                        **
 **                                                     **
 ** program version 1.23 05/03/91       THOR            **
 ** update  version 1.25 06/19/91       THOR            **
 ** header file 06/19/91                THOR            **
 ** updated to 3.30      03/31/97       THOR            **
 ** updated to 3.40      05/08/97       THOR            **
 ** updated to 3.41	 05/19/97	THOR		**
 **                                                     **
 ** ViNCEd Prefs Definitions                            **
 **-----------------------------------------------------**
 **                                                     **
 ** all use at your own risk,etc.,etc.                  **
 **                                                     **
 ** Everything declared as "reserved" or                **
 ** "not used" is NOT free for your use,                **
 ** it will propably used in a later release.           **
 ** All FREE entries are free for public                **
 ** use and are, if not otherwise noticed,              **
 ** initialized as ZERO                                 **
 *********************************************************/

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif

/*************************************************
 ** VNCPrefs                                    **
 ** contains the preferences of                 **
 ** all VNC-windows                             **
 *************************************************/

#define VPF_HEADERLONG          0x70004e75      /* moveq #0,d0:rts */
#define VPF_MAGIC1              (('V'<<24L)|('N'<<16L)|('C'<<8L)|('©'))
#define VPF_MAGIC2              (('T'<<24L)|('H'<<16L)|('O'<<8L)|('R'))
#define VPF_PREFVERSION         3
#define VPF_PREFREVISION        2
                /* current version information */

#define VPF_MAXBUTTONS          16
        /* maximal number of buttons here */

#define VPF_MACROS              20
        /* current number of macros. DO NOT DEPEND ON THIS NUMBER !*/

#define VPF_FUNCLENGTH          58
        /* maximal size of a macro */

#define VPF_SHORTLENGTH         16
        /* maximal size of a button title */


struct ViColorEntry {
        UWORD   vce_Flags;      /* color entry flags, see below */
        UWORD   vce_Red,vce_Green,vce_Blue;        /* 16 bit color */
};

#define VCE_SET_BIT     0
        /*set this to allocate the color */
#define VCE_SET_MASK    (1L<<0)

#define VCE_ANSI_BIT	1
	/*set if this defines an ANSI pen */
#define VCE_ANSI_MASK	(1L<<1)



struct VNCPrefs {
        ULONG vpf_Header;       /* should contain HEADERLONG */
        ULONG vpf_Magic1;       /* MUST contain MAGIC1 to be legal preferences */
        ULONG vpf_Magic2;       /* MUST contain MAGIC2 */
        UWORD vpf_Version;      /* version and... */
        UWORD vpf_Revision;     /* revision of THIS structure, now 3.2 */
        ULONG vpf_Flags;        /* bit settings, see below for definition */
        ULONG vpf_FMask;        /* valid bits above */
        ULONG vpf_DOSFlags;     /* more bit settings */
        ULONG vpf_DOSFMask;     /* valid bits */
        UWORD vpf_HistorySize;  /* # lines in the history */
        UWORD vpf_Macros;       /* number of macro-strings defined here.
                                   NEED NOT to be VPF_MACROS! */
        RPTR vpf_MacroOffset;   /* offset of the macro-strings to the
                                   start-address of this structure,
                                   the strings are saved as NUL-
                                   terminated strings */
        UWORD vpf_MacroSize;    /* max. length or macros: VPF_FUNCLENGTH */

        /* The next ones are new to 2.00 */

        UWORD vpf_UpperLines;   /* upper display size */
        UWORD vpf_LowerLines;   /* lower display size */

        /* New to 3.00 */

        ULONG vpf_DelayMicros;  /* intuition delay micros,
                                   320000 by default */
        ULONG vpf_RebuildMicros;/* rebuild delay     */
        ULONG vpf_SlowMicros;   /* scroll threshold  */
        ULONG vpf_BlinkMicros;  /* blink speed       */


        RPTR  vpf_ButtonOffset; /* offset to button strings,
                                   NUL terminated strings, name and
                                   title alternating */
        UWORD vpf_Buttons;      /* # of buttons */
        UWORD vpf_ButtonSize;   /* VPF_SHORTLENGTH */

        /* New to 3.30 */

        ULONG vpf_DefModeID;    /* default mode ID */
        UWORD vpf_PathOnlyQ;    /* path only icon drop modifier */
        UWORD vpf_NameOnlyQ;    /* name only icon drop modifier */

        ULONG vpf_MoreFlags;    /* used since 3.40, see below */
        ULONG vpf_MoreFMask;    /* mask for the field above. Now used */

        ULONG vpf_Reserved[4];  /* leave blank */

        struct ViColorEntry vpf_Colors[16];       /* color definitions */

/* More here... DO NOT ALLOCATE YOURSELF, USE THE vnc.library FUNCTIONS
   for handling or extracting the strings */
};


#define VPF_FIRSTMACRO(prefs) ((char *)(prefs)+(prefs)->vpf_MacroOffset)
                           /* How to get the first macro */

#define VPF_FIRSTBUTTON(prefs) ((char *)(prefs)+(prefs)->vpf_ButtonOffset)
                           /* How to get the first button */

#define VPF_NEXTSTRING(macro)   ((macro)+strlen(macro))
                           /* How to get the next string if you have one */


/* flags set in vpf_Flags */

/* DOS cursor mode */
#define VPFF_DOSMODE_BIT                0
#define VPFF_DOSMODE_MASK               (1L<<0)

/* add close gadget by default */
#define VPFF_NODEFAULTCLOSE_BIT         1
#define VPFF_NODEFAULTCLOSE_MASK        (1L<<1)

/* copy automatically ? */
#define VPFF_AUTOCOPY_BIT               2
#define VPFF_AUTOCOPY_MASK              (1L<<2)

/* auto close queue ? */
#define VPFF_ALLPENDING_BIT             3
#define VPFF_ALLPENDING_MASK            (1L<<3)

/* partial path ?*/
#define VPFF_PARTIALPATH_BIT            6
#define VPFF_PARTIALPATH_MASK           (1L<<6)

/* no middle mouse button ?*/
#define VPFF_NOMMB_BIT                  9
#define VPFF_NOMMB_MASK                 (1L<<9)

/* editor mode ?*/
#define VPFF_EDITMODE_BIT               10
#define VPFF_EDITMODE_MASK              (1L<<10)

/* chunky by default?*/
#define VPFF_CHUNKYPRESET_BIT           11
#define VPFF_CHUNKYPRESET_MASK          (1L<<11)

/* shell mode by default ?*/
#define VPFF_SHELLMODE_BIT              12
#define VPFF_SHELLMODE_MASK             (1L<<12)

/* CR inserts at line start?*/
#define VPFF_CRMODE_BIT                 13
#define VPFF_CRMODE_MASK                (1L<<13)

/* TAB inserts/moves only ?*/
#define VPFF_TABMODE_BIT                14
#define VPFF_TABMODE_MASK               (1L<<14)

/* cut inputs only ?*/
#define VPFF_CUTMODE_BIT                15
#define VPFF_CUTMODE_MASK               (1L<<15)

/* disable iconify ?*/
#define VPFF_NOICONIC_BIT               17
#define VPFF_NOICONIC_MASK              (1L<<17)

/* alternate movement ?*/
#define VPFF_ALTMOVE_BIT                18
#define VPFF_ALTMOVE_MASK               (1L<<18)

/* use TAB for expansion ?*/
#define VPFF_ALTTAB_BIT                 19
#define VPFF_ALTTAB_MASK                (1L<<19)

/* double TAB requester?*/
#define VPFF_DOUBLETAB_BIT              20
#define VPFF_DOUBLETAB_MASK             (1L<<20)

/* keep bottom line adjusted ?*/
#define VPFF_BOTTOMADJUST_BIT		21
#define VPFF_BOTTOMADJUST_MASK		(1L<<21)

/* overwrite mode ?*/
#define VPFF_OVERWRITE_BIT              22
#define VPFF_OVERWRITE_MASK             (1L<<22)

/* delayed refresh ?*/
#define VPFF_ALLOWDELAY_BIT             23
#define VPFF_ALLOWDELAY_MASK            (1L<<23)

/* sort dirs first ?*/
#define VPFF_TABDIRSFIRST_BIT           24
#define VPFF_TABDIRSFIRST_MASK          (1L<<24)

/* wrap around buffer?*/
#define VPFF_WRAP_BIT                   25
#define VPFF_WRAP_MASK                  (1L<<25)

/* first TAB expands fully?*/
#define VPFF_FULLFIRSTTAB_BIT           26
#define VPFF_FULLFIRSTTAB_MASK          (1L<<26)

/* ViNCEd requester ?*/
#define VPFF_VINCREQ_BIT                27
#define VPFF_VINCREQ_MASK               (1L<<27)

/* request if not unique ?*/
#define VPFF_AMBIGREQ_BIT               28
#define VPFF_AMBIGREQ_MASK              (1L<<28)

/* close requester ?*/
#define VPFF_CLOSEREQ_BIT               29
#define VPFF_CLOSEREQ_MASK              (1L<<29)

/* safer close ?*/
#define VPFF_SAFERCLOSE_BIT             30
#define VPFF_SAFERCLOSE_MASK            (1L<<30)

/* close with macro ?*/
#define VPFF_CLEVERSHUT_BIT             31
#define VPFF_CLEVERSHUT_MASK            (1L<<31)


/* flags in vpf_DOSFlags */

/* VT-220 compatibility? */
#define VPFD_VT220MODE_BIT              1
#define VPFD_VT220MODE_MASK             (1L<<1)

/* disable full screen edit?*/
#define VPFD_ROWLOCKED_BIT              3
#define VPFD_ROWLOCKED_MASK             (1L<<3)

/* underscore cursor ?*/
#define VPFD_UNDERSCORE_BIT             4
#define VPFD_UNDERSCORE_MASK            (1L<<4)

/* dos inserts */
#define VPFD_DOSINSERT_BIT              5
#define VPFD_DOSINSERT_MASK             (1L<<5)

/* blinking cursor */
#define VPFD_BLINKING_BIT               6
#define VPFD_BLINKING_MASK              (1L<<6)

/* ANSI reverse coloring */
#define VPFD_ANSIINVERSE_BIT            8
#define VPFD_ANDIINVERSE_MASK           (1L<<8)

/* numeric keypad for cursor functions ? */
#define VPFD_NUMPADMODE_BIT             9
#define VPFD_NUMPADMODE_MASK            (1L<<9)

/* inhibit scrolling?*/
#define VPFD_NOXSCROLL_BIT              18
#define VPFD_NOXSCROLL_MASK             (1L<<18)

/* don't scroll at right border, break line */
#define VPFD_SMALLSCROLL_BIT            19
#define VPFD_SMALLSCROLL_MASK           (1L<<19)

/* no backspace at start of line */
#define VPFD_NOLINEBACK_BIT             20
#define VPFD_NOLINEBACK_MASK            (1L<<20)

/* disable scroll */
#define VPFD_DISABLESCROLL_BIT          21
#define VPFD_DISABLESCROLL_MASK         (1L<<21)

/* disable wrap */
#define VPFD_DISABLEWRAP_BIT            22
#define VPFD_DISABLEWRAP_MASK           (1L<<22)

/* erasing backspace */
#define VPFD_ERASEINGBS_BIT             24
#define VPFD_ERASEINGBS_MASK            (1L<<24)

/* automatic paste disable */
#define VPFD_AUTOPASTE_BIT              25
#define VPFD_AUTOPASTE_MASK             (1L<<25)

/* XTerm mode */
#define VPFD_XTERMMODE_BIT              30
#define VPFD_XTERMMODE_MASK             (1L<<30)

/* ANSI mode by default */
#define VPFD_ANSIDEFAULT_BIT            31
#define VPFD_ANSIDEFAULT_MASK           (1L<<31)


/* flags in vpf_MoreFlags, used since 3.40 */

/* hard bounded scroll borders */
#define VPFM_PARTIALSCROLL_BIT          0
#define VPFM_PARTIALSCROLL_MASK         (1L<<0)

/* asynchronious type ahead */
#define VPFM_TYPEAHEAD_BIT              1
#define VPFM_TYPEAHEAD_MASK             (1L<<<1)

/* don't add devices implicitly for tab expansion */
#define VPFM_NODEVICES_BIT              2
#define VPFM_NODEVICES_MASK             (1L<<2)

/* don't add horizontal scroller by default */
#define VPFM_NODEFPROPX_BIT             3
#define VPFM_NODEFPROPX_MASK            (1L<<3)

/* don't add vertical scroller by default */
#define VPFM_NODEFPROPY_BIT             4
#define VPFM_NODEFPROPY_MASK            (1L<<4)

/* ignore .info files for TAB expansion */
#define VPFM_IGNOREINFO_BIT		8
#define VPFM_IGNOREINFO_MASK		(1L<<8)

/* swap Alt+Del/BS with S+Alt+Del/BS */
#define VPFM_ALTDEL_BIT			10
#define VPFM_ALTDEL_MASK		(1L<<10)

#endif

