/*  005  28-May-87  dialog.h

        Copyright (c) 1987 by Blue Sky Software.  All rights reserved.
*/

/* #define DBX_MACROS */       /* include to make some rtns macros */

/* define the Dialog BOX structure/type */

typedef struct _dbox {
   unsigned char row;                  /* start row */
   unsigned char col;                  /* start column */
   unsigned char nrows;                /* # rows */
   unsigned char ncols;                /* # columns */
   char *save;                         /* pointer to save area or NULL */
   char *title;                        /* pointer to title text or NULL */
} D_BOX;

/* define the Dialog FIELD structure/type */

typedef struct _dfld {
   unsigned char row;                  /* field start row (offset in box) */
   unsigned char col;                  /* field start col (offset in box) */
   unsigned char len;                  /* max length of value to read     */
   unsigned char pos;                  /* initial cursor pos when reading */
   char *value;                        /* field value/buffer              */
} D_FLD;

/* valid options to dbx_open() */

#define DBX_SAVE (1)                   /* save current image option */

#ifdef DBX_MACROS              /* declare rtns as macros if DBX_MACROS set */

/* dbx_*() routines implemented as macros */

#define dbx_disp(dbp,s,ro,co) disp_str_at(s,((dbp)->row)+ro,((dbp)->col)+co)
#define dbx_goto(dbp,ro,co)   gotorc(((dbp)->row)+ro,((dbp)->col)+co)
#endif

/* function declaration stuff */

#define ALTCALL pascal         /* alternate calling method reduces overhead */

void ALTCALL dbx_open(D_BOX *, unsigned int);
void ALTCALL dbx_close(D_BOX *);
char * ALTCALL dbx_rdfld(D_BOX *, D_FLD *);

#ifndef DBX_MACROS
void ALTCALL dbx_disp(D_BOX *, char *, int, int);
void ALTCALL dbx_goto(D_BOX *, int, int);
#endif
