home *** CD-ROM | disk | FTP | other *** search
- /**
- *
- * BWINDOW.H Header file for Turbo C TOOLS Window Functions
- *
- * Version 6.00 (C)Copyright Blaise Computing Inc. 1986,1987,1989
- *
- **/
-
-
- #ifndef DEF_BWINDOW /* Prevent second reading of */
- #define DEF_BWINDOW 1 /* these definitions. */
-
- #include <bscreens.h> /* Turbo C TOOLS Screen functions. */
- #include <bkeybrd.h> /* Turbo C TOOLS Keyboard functions.*/
-
- #define WN_EXT_ERROR 1 /* 1 if wnerror() is external, 0 if */
- /* it's a macro. */
-
-
-
- /********************************************************************/
- /* Definitions of data types. */
- /********************************************************************/
-
- typedef struct /* LOC structure: */
- { /* row and column relative to a */
- int row,col; /* rectangular region. */
- } LOC;
-
-
- typedef struct /* REGION structure: */
- { /* rectangular region on a */
- /* screen. */
- LOC ul; /* Upper left corner. */
- LOC lr; /* Lower right corner. */
- } REGION;
-
-
- typedef struct /* CELL structure: */
- { /* character and attribute byte on */
- char ch,attr; /* a PC screen. */
- } CELL;
-
-
- typedef struct /* DIM structure: */
- { /* height and width of a */
- int h,w; /* rectangular region. */
- } DIM;
-
-
- typedef struct /* IMAGE structure: */
- { /* a copy of a rectangular */
- /* portion of a screen's data. */
- DIM dim; /* Dimensions of the rectangle. */
- CELL *pdata; /* Pointer to array of cells */
- /* containing the data, row */
- /* by row. */
- } IMAGE;
-
-
- typedef struct /* WHERE structure: */
- { /* device, page, and location */
- /* where a window may be shown. */
- /* */
- int dev; /* Device where shown: COLOR, */
- /* MONO, or ABSENT if not shown. */
- /* */
- int page; /* Video page number: 0 to 7 */
- /* */
- LOC corner; /* Upper left corner of region */
- /* where window data is shown */
- /* (does not include border). */
- } WHERE;
-
-
- typedef struct bjoint {
- unsigned char row; /* Row and column of joint relative */
- unsigned char col; /* to upper-left of border. (0,0). */
- char jtype; /* IBM graphic char for joint. */
- char _dummy; /* Structure alignment. */
- struct bjoint *next; /* Pointer to next joint in linked */
- } BJOINT; /* list of joints. */
-
-
- typedef struct {
- int type; /* Type of border: */
- /* 0 = no border. */
- /* 31 = Character "ch" border. */
- /* */
- /* T R B L */
- /* o t o f */
- /* p t t */
- /* */
- /* 1 = S S S S no title. */
- /* 2 = S S S D no title. */
- /* 3 = D S S S no title. */
- /* 4 = D S S D no title. */
- /* 5 = S D S S no title. */
- /* 6 = S D S D no title. */
- /* 7 = D D S S no title. */
- /* 8 = D D S D no title. */
- /* 9 = S S D S no title. */
- /* 10 = S S D D no title. */
- /* 11 = D S D S no title. */
- /* 12 = D S D D no title. */
- /* 13 = S D D S no title. */
- /* 14 = S D D D no title. */
- /* 15 = D D D S no title. */
- /* 16 = D D D D no title. */
- /* */
- /* OR the above with: */
- /* 0x0020- top-left-title */
- /* 0x0040- top-center-title */
- /* 0x0080- top-right-title */
- /* 0x0100- bottom-left-title */
- /* 0x0200- bottom-center-title */
- /* 0x0400- bottom-right-title */
- /* */
- /* OR the above with: */
- /* 0x0800- border has joints. */
- /* */
- int attr; /* Attribute of border. */
- char ch; /* Border character (if type==0). */
- char _dummy; /* Structure alignment. */
- char *pttitle; /* Title on top border. */
- char *pbtitle; /* Title on bottom border. */
- int ttattr; /* Attributes of top title. */
- int btattr; /* Attributes of bottom title. */
- BJOINT *pjoints; /* Pointer to linked list of joints.*/
- } BORDER;
-
-
- typedef enum
- { /* Values for the WN_SENSOR type */
- /* field. */
- WN_LEFT_ARROW, /* Left scroll arrow. */
- WN_RIGHT_ARROW, /* Right scroll arrow. */
- WN_UP_ARROW, /* Up scroll arrow. */
- WN_DOWN_ARROW, /* Down scroll arrow. */
- WN_IN_WINDOW, /* Inside window's viewport. */
- WN_ON_BORDER, /* On window's border. */
- WN_OUT_WINDOW /* Outside the window completely. */
- } WN_SENSOR_TYPE;
-
- #define WN_LAST_SENSOR WN_OUT_WINDOW
-
-
- #define WN_VIEWPORT 0
- #define WN_DATA 1
- #define WN_SCREEN 2
-
- typedef struct wn_sensor /* WN_SENSOR structure: linked list */
- { /* of window sensors. */
- WN_SENSOR_TYPE type; /* The type of sensor this is. */
- unsigned relative; /* Whether the sensor is relative */
- /* to the screen, viewport, or */
- /* data area. */
- REGION hot; /* The "hot" region for the sensor. */
- LOC corner; /* Displayed corner for the sensor. */
- DIM size; /* Displayed size of the sensor. */
- CELL *pimage; /* Sensor's image. */
- struct wn_sensor *pnext; /* Pointers to the next and */
- struct wn_sensor *pprev; /* previous sensors in the list. */
- } WN_SENSOR;
-
-
- typedef enum /* WN_ACTION: */
- { /* values for the WN_EVENT action */
- /* field. */
- WN_NULL, /* No action. */
- WN_SCROLL_LEFT, /* Move left. */
- WN_SCROLL_RIGHT, /* Move right. */
- WN_SCROLL_UP, /* Move up. */
- WN_SCROLL_DOWN, /* Move down. */
- WN_PAGE_LEFT, /* Page left. */
- WN_PAGE_RIGHT, /* Page right. */
- WN_PAGE_UP, /* Page up. */
- WN_PAGE_DOWN, /* Page down. */
- WN_LEFT_EDGE, /* Go to left edge. */
- WN_RIGHT_EDGE, /* Go to right edge. */
- WN_TOP_EDGE, /* Go to top edge. */
- WN_BOTTOM_EDGE, /* Go to bottom edge. */
- WN_ABORT, /* Abort read. */
- WN_TRANSMIT, /* Finish read. */
- WN_INVALID_ACTION /* Invalid window action. */
- } WN_ACTION;
-
-
- #define WN_ABSENT_EVENT 0
- #define WN_KB_EVENT 1
- #define WN_MOUSE_EVENT 2
-
-
- typedef struct /* MOUSE_EVENT structure: */
- { /* */
- unsigned long event; /* Mouse characteristics to pay */
- unsigned long ignore; /* attention to & ignore. */
- unsigned location; /* Location code. */
- } MOUSE_EVENT;
-
-
- typedef struct
- { /* WN_EVENT structure: */
- unsigned event_type;/* WN_KB_EVENT or WN_MOUSE_EVENT. */
- union /* event union: */
- { /* The basic data of a keyboard or */
- KEY_SEQUENCE keystroke; /* mouse event. */
- MOUSE_EVENT mouse; /* */
- } event; /* */
- void *pdata; /* Event related data. */
- unsigned data_size; /* Size of data pointed to by pdata.*/
- } WN_EVENT;
-
-
- typedef struct wn_event_list /* WN_EVENT_LIST structure: */
- { /* WN_EVENT, identifying */
- unsigned signature; /* signature, & pointers */
- WN_EVENT win_event; /* to next and previous */
- struct wn_event_list *pnext; /* items in event list. */
- struct wn_event_list *pprev;
- } WN_EVENT_LIST;
-
-
-
- typedef struct /* BWINDOW structure: */
- { /* everything needed to control */
- /* an individual window. */
- /* */
- unsigned signature; /* Identifying signature. */
- /* */
- LOC cur_loc; /* Location of window's own */
- /* cursor relative to window's */
- /* data area. */
- /* */
- CUR_TYPE cur_type; /* Cursor type. */
- /* */
- IMAGE img; /* Contents of data area. */
- /* */
- DIM view_size; /* Size of window's viewport. */
- /* */
- LOC data_origin; /* Coordinates of data area which */
- /* appear at (0,0) in the viewport. */
- /* */
- WHERE where_shown; /* Where window is currently */
- /* shown. */
- /* */
- IMAGE prev; /* Previous contents of screen */
- /* (before window was shown), */
- /* including data under border. */
- /* */
- WHERE where_prev; /* Region occupied by window */
- /* (including border). */
- /* */
- struct bwin_node *pnode; /* Pointer to window node */
- /* among all windows on a video */
- /* display page. */
- /* */
- BORDER bord; /* Border description. */
- /* */
- WN_SENSOR *psensors; /* Window sensor list. */
- /* */
- WN_EVENT_LIST *pevent_list; /* Window event list. */
- /* */
- int attr; /* Default attributes for data */
- /* area. */
- unsigned cur_left_marg, /* Left, right, top, and bottom */
- cur_right_marg, /* margins to maintain during */
- cur_top_marg, /* cursor "auto-track" feature. */
- cur_bottom_marg; /* */
-
- struct /* "options" substructure: */
- { /* items set by user request. */
- /* */
- unsigned delayed : 1; /* Output postponed until next */
- /* update. */
- /* */
- unsigned cur_off : 1; /* Cursor invisible. */
- /* */
- unsigned removable : 1; /* Removable (hence previous */
- /* contents of screen must be */
- /* preserved). */
- /* */
- unsigned hidden : 1; /* Invisible, yet attached to a */
- /* location on a display page. */
- /* */
- unsigned cur_track : 1; /* Always keep cursor visible in */
- /* the viewport. */
- /* */
- unsigned _dummy :11; /* Pad to word boundary */
- } options;
-
- struct /* "internals" substructure: */
- { /* not directly set by user. */
- /* */
- unsigned frozen :1; /* Updates postponed involuntarily. */
- /* */
- unsigned dirty :1; /* Output request(s) are */
- /* awaiting update. */
- /* */
- unsigned /* Some portion of data area is */
- any_data_covered:1; /* covered by another window. */
- /* */
- unsigned cur_frozen :1; /* Not selected for visible */
- /* cursor. */
- /* */
- unsigned temp_hid :1; /* Temporarily hidden by */
- /* internal operations. */
- /* */
- unsigned _dummy :11; /* Pad to word boundary */
- } internals;
- } BWINDOW;
-
-
- typedef struct bwin_node /* WIN_NODE structure: */
- { /* node in the linked lists which */
- /* govern the hierarchy of */
- /* windows on each display page. */
- /* */
- unsigned signature; /* Identifying signature. */
- /* */
- struct bwin_node *above; /* Window above this one (or */
- /* NIL if this is top window). */
- /* */
- struct bwin_node *below; /* Window below this one (or */
- /* NIL if this is bottom window). */
- /* */
- BWINDOW *pwin; /* BWINDOW structure belonging */
- /* to this node. */
- } WIN_NODE;
-
-
-
- /********************************************************************/
- /* Internal Data Types. */
- /********************************************************************/
-
- typedef struct
- {
- WN_ACTION action; /* The action to be taken. */
- KEY_SEQUENCE key_sequence; /* Key sequence to trigger it. */
- } WN_KEY;
-
-
- typedef struct
- {
- WN_ACTION action; /* The action to be taken. */
- MOUSE_EVENT mouse; /* Mouse event to trigger it. */
- } WN_MOUSE;
-
-
- /********************************************************************/
- /* Internal Windows Macros. */
- /********************************************************************/
-
- /* Signature to identify genuine BWINDOW structure. */
- #define BWIN_SIGN 0xe928
- #define BWIN_DEAD 0
-
- /* Signature to identify genuine WIN_NODE structure.*/
- #define BNODE_SIGN 0xd928
- #define BNODE_DEAD 0
-
- /* Signature to identify genuine WN_EVENT_LIST */
- /* structure. */
- #define BEVENT_SIGN 0x65ab
- #define BEVENT_DEAD 0
-
- /* Height of a REGION */
- #define REGION_H(region) ((region).lr.row - (region).ul.row + 1)
-
- /* Width of a REGION */
- #define REGION_W(region) ((region).lr.col - (region).ul.col + 1)
-
- #define BBRD_HASJOINTS 0x800
- #define BBRD_TYPE 0x01f
- #define BBRD_TITLE 0x7e0
-
- #define B_WNPRBF_SIZE 1024
-
- #define B_NATIVE_MAX_ROWS 25 /* Max rows supported by compiler's */
- /* native text windows. */
-
- #define wnreterr(errnum) return ((wnerror (errnum)), NIL)
- #define wnreterz(errnum) return ((wnerror (errnum)), 0)
- #define wnretern(errnum) return (wnerror (errnum))
-
- #define wnreterv(errnum) \
- { \
- wnerror (errnum); \
- return; \
- }
-
- #define wnvalidn(pnode) \
- { \
- if (wnvalnod (pnode) == NIL) \
- wnreterr (WN_BAD_NODE); \
- }
-
- #define wnvalidw(pwin) \
- { \
- if (wnvalwin (pwin) == NIL) \
- wnreterr (WN_BAD_WIN); \
- }
-
- #define wnvalide(pevent) \
- { \
- if (wnvalevn (pevent) == NIL) \
- wnreterr (WN_BAD_EVENT); \
- }
-
- #define wnvalnod(pnode) (wnvalno0((pnode),(BNODE_SIGN)))
-
- #define wnvalwin(pwin) (wnvalwi0((pwin),(BWIN_SIGN)))
-
- #define wnvalevn(pevent) (wnvalev0((pevent),(BEVENT_SIGN)))
-
- /* Construct a new attribute from a given attribute */
- /* and fore and back, either of which may be -1. */
- #define wndoattr(attr, fore, back) \
- utnybbyt ((back) == -1 ? uthinyb (attr) : (back), \
- (fore) == -1 ? utlonyb (attr) : (fore))
-
- /* Update a window's image. */
- #define wnputimg(pwin) \
- wnnupblk((pwin), 0, 0, (wndata_h(pwin) - 1), \
- (wndata_w(pwin) - 1), WN_UPDATE)
-
- /* Macros to find a window's dimensions. */
-
- /* Width & height of data area (no border). */
- #define wndata_w(pwin) ((pwin)->img.dim.w)
- #define wndata_h(pwin) ((pwin)->img.dim.h)
-
- /* Width & height of window's border. */
- #define wnbord_w(pwin) ((pwin)->prev.dim.w)
- #define wnbord_h(pwin) ((pwin)->prev.dim.h)
-
- /* Width & height of window's viewport (no border). */
- #define wnview_w(pwin) ((pwin)->view_size.w)
- #define wnview_h(pwin) ((pwin)->view_size.h)
-
-
- /********************************************************************/
- /* Error codes. */
- /********************************************************************/
-
- #define WN_NO_ERROR 0
- #define WN_NO_MEMORY 1
- #define WN_ILL_DIM 2
- #define WN_NULL_PTR 3
- #define WN_BAD_WIN 4
- #define WN_BAD_DEV 5
- #define WN_BAD_PAGE 6
- #define WN_BAD_NODE 7
- #define WN_ALREADY_SHOWN 8
- #define WN_NOT_SHOWN 9
- #define WN_CANT_HIDE 10
- #define WN_COVERED 11
- #define WN_BAD_OPT 12
- #define WN_HARD 13
- #define WN_ILL_VALUE 14
- #define WN_PR_OVERFLOW 15
-
- #define WN_NO_EVENT 30
- #define WN_EVENT_EXISTS 31
- #define WN_BAD_EVENT 32
- #define WN_NO_EXIT 33
-
-
-
- /********************************************************************/
- /* Constants (type of borders and title(s)) for WNPUTBOR/WNDSPLAY. */
- /********************************************************************/
-
- #define BBRD_NO_BORDER 0x000
- #define BBRD_CHAR 0x01f
-
- /* The letters in the part after the underscore in */
- /* the following definitions are symbolic names for */
- /* line styles. A border style with double lines */
- /* on the top and left, and single lines on the */
- /* right and bottom would be BBRD_DSDS. The order */
- /* of sides in the definition is clockwise from the */
- /* top. */
- #define BBRD_SSSS 0x001
- #define BBRD_SSSD 0x002
- #define BBRD_DSSS 0x003
- #define BBRD_DSSD 0x004
- #define BBRD_SDSS 0x005
- #define BBRD_SDSD 0x006
- #define BBRD_DDSS 0x007
- #define BBRD_DDSD 0x008
- #define BBRD_SSDS 0x009
- #define BBRD_SSDD 0x00a
- #define BBRD_DSDS 0x00b
- #define BBRD_DSDD 0x00c
- #define BBRD_SDDS 0x00d
- #define BBRD_SDDD 0x00e
- #define BBRD_DDDS 0x00f
- #define BBRD_DDDD 0x010
-
- /* The letters in the part after the underscore in */
- /* the following definitions are symbolic names for */
- /* title styles. A title style with a top centered */
- /* title would be BBRD_TCT; one with a bottom right */
- /* title would be BBRD_BRT, and so on. */
- #define BBRD_NO_TITLE 0x000
- #define BBRD_TLT 0x020
- #define BBRD_TCT 0x040
- #define BBRD_TRT 0x080
- #define BBRD_BLT 0x100
- #define BBRD_BCT 0x200
- #define BBRD_BRT 0x400
-
-
-
- /********************************************************************/
- /* Constants (direction of scroll) for WNSCRBLK. */
- /********************************************************************/
-
- #define WNSCR_UP 0
- #define WNSCR_DOWN 1
- #define WNSCR_RIGHT 2
- #define WNSCR_LEFT 3
-
-
-
- /********************************************************************/
- /* Constants (option OR values) for WNWRSTRN. */
- /********************************************************************/
-
- #define WN_NO_UPDATE 0x04
- #define WN_UPDATE 0x00
- #define WN_LF_LF 0x08
- #define WN_LF_CRLF 0x00
- #define WN_NO_SCROLL 0x10
- #define WN_SCROLL 0x00
- #define WN_NO_TRACK 0x20
- #define WN_CHAR_TRACK 0x00
-
-
-
- /********************************************************************/
- /* Window control items & status items for WNGETOPT & WNSETOPT. */
- /* Negative item codes require the window to be currently */
- /* displayed (although it may be hidden). */
- /********************************************************************/
-
- #define WN_DEVICE 1 /* Where the window is */
- #define WN_PAGE (-2) /* displayed */
- #define WN_ROW_CORNER (-3) /* */
- #define WN_COL_CORNER (-4) /* */
- /* */
- #define WN_HIDDEN (-5) /* Whether it's hidden. */
- /* */
- #define WN_CUR_OFF 6 /* Cursor on/off state */
- #define WN_CUR_HIGH 7 /* Cursor scan lines */
- #define WN_CUR_LOW 8 /* */
-
- /* User-controllable options */
- #define WN_DELAYED 9 /* */
- #define WN_REMOVABLE 10 /* */
-
- #define WN_FROZEN 11 /* Internal effects of */
- #define WN_DIRTY 12 /* displaying windows */
- #define WN_ANY_DATA_COVERED 13 /* */
-
- #define WN_ROWS 14 /* Dimensions of data area */
- #define WN_COLS 15 /* */
- /* */
- #define WN_ROW_REL 16 /* Cursor location relative to */
- #define WN_COL_REL 17 /* data area */
- /* */
- #define WN_ROW_ABS (-18) /* Absolute cursor location on */
- #define WN_COL_ABS (-19) /* screen */
-
- #define WN_ROW_OVERALL (-27) /* Location of window with */
- #define WN_COL_OVERALL (-28) /* border. */
- #define WN_HT_OVERALL (-29) /* Dimensions of window with */
- #define WN_WID_OVERALL (-30) /* existing border. */
- /* */
- #define WN_ATTR 20 /* Default attributes for data */
- /* area */
- /* */
- #define WN_BOR_TYPE 22 /* Border type */
- #define WN_BOR_CHAR 23 /* Border character */
- #define WN_BOR_ATTR 24 /* Border attribute */
- #define WN_BOR_TTATTR 32 /* Border top title attribute */
- #define WN_BOR_BTATTR 33 /* Border bottom title attribute */
- /* */
- #define WN_IS_CURRENT 25 /* Whether this is the current */
- /* window */
- /* */
- #define WN_ACTIVE_CUR (-26) /* Whether this window (among */
- /* all the windows displayed on */
- /* its page) is the one whose */
- /* cursor is active. */
- /* */
- #define WN_PREV_ALLOC 31 /* Whether space has been allocated */
- /* for the text underneath this */
- /* window (when displayed and not */
- /* hidden). */
- /* */
- #define WN_CUR_TRACK 34 /* Whether the window's data area */
- /* will always be positioned so */
- /* so that the cursor is visible in */
- /* the viewport. */
- /* */
- #define WN_CUR_L_MARG 35 /* The number of columns to leave */
- #define WN_CUR_R_MARG 36 /* as a margin on the left and */
- /* right when performing cursor */
- /* auto tracking. */
- /* */
- #define WN_CUR_T_MARG 37 /* The number of rows to leave as a */
- #define WN_CUR_B_MARG 38 /* margin on the top and bottom */
- /* when performing cursor auto */
- /* tracking. */
- /* */
- #define WN_HT_VIEW (-39) /* The height and width of the */
- #define WN_WID_VIEW (-40) /* window's viewport. */
- /* */
-
-
-
- /********************************************************************/
- /* Constants (option OR values) for WNSCRLBR. */
- /********************************************************************/
-
- #define WN_HORIZONTAL 0x01
- #define WN_VERTICAL 0x02
-
-
-
- /********************************************************************/
- /* Constants (option OR values) for WNREAD and WNPOLL. */
- /********************************************************************/
-
- #define WN_KNOWN_EVENTS 0x00
- #define WN_UNKNOWN_TRANSMIT 0x01
- #define WN_ALL_TRANSMIT 0x03
- #define WN_KBIGNORE 0x04
-
- #define WN_USE_MOUSE 0x00
- #define WN_NO_MOUSE 0x08
-
-
-
- /********************************************************************/
- /* User Macros. */
- /********************************************************************/
-
- #define wncreate(height,width,attr) \
- (wncreat0((height),(width),(attr),(BWIN_SIGN),(BNODE_SIGN)))
-
- #define wndsplay(pwin, pwhere, pbord) \
- (wnvdisp((pwin),(pwhere),wndata_h((pwin)),wndata_w((pwin)), \
- 0,0,(pbord)))
-
- /* Write a character to the current window */
- /* TTY-style. */
- #define wnwrtty(ch, fore, back) \
- (wnwrttyx (b_pcurwin, (ch), (fore), (back), \
- WN_UPDATE | WN_LF_LF))
-
- /* Write a string to the current window TTY-style */
- /* with scrolling and end-of-line character wrap. */
- #define wnwrstr(pbuffer, fore, back) \
- (wnwrstrn (b_pcurwin, (pbuffer), 0, (fore), (back), \
- WN_UPDATE | CHARS_ONLY))
-
- /* Change attributes on current window (but don't */
- /* change default). */
- #define wnattr(fore, back) \
- (wnatrblk(b_pcurwin, 0, 0, (wndata_h(b_pcurwin) - 1), \
- (wndata_w(b_pcurwin) - 1), (fore), (back), \
- WN_UPDATE))
-
- /* Set up and allow user input in a window oriented */
- /* edit field. */
- #define wnfield(pwin,pinitstr,pretstr,target_size,pfield_control,pfinal) \
- (edbase((pwin), (pinitstr), (pretstr), (target_size), \
- (pfield_control), (pfinal), (PED_RET_FUNC) wnretinf, \
- (PED_SET_FUNC) wnsetcur, (PED_WRITE_FUNC) wnwrrect))
-
-
- /********************************************************************/
- /* Global variables */
- /********************************************************************/
-
- extern int b_wnerr; /* Most recent error */
- /* (WN_NO_ERROR if none). */
-
- extern BWINDOW *b_pcurwin; /* Window selected for I/O */
- /* (NIL if none). */
-
- extern long b_win_hold; /* Amount of time to wait before */
- /* reporting MO_HOLD events. */
-
- extern unsigned b_win_delay; /* Amount of time to wait between */
- /* successive window polls. */
-
- extern WN_KEY b_winkeys[]; /* Array of default window key */
- /* assignments. */
-
- extern WN_MOUSE b_winmouse[]; /* Array of default window mouse */
- /* assignments. */
-
-
- /********************************************************************/
- /* Global variables for internal use only */
- /********************************************************************/
-
- extern char *b_wnprbf; /* Buffer allocated for WNPRINTF. */
-
- extern unsigned int b_wnbfsz; /* Size of buffer allocated for */
- /* WNPRINTF. */
-
- /* List of windows displayed on */
- /* each page (NIL if none). */
- extern WIN_NODE *(b_wnlist[MAX_DEVICES][MAX_PAGES]);
-
- /* The window (on each page) */
- /* selected to have a visible */
- /* cursor (NIL if none). */
- extern WIN_NODE *(b_pactnode[MAX_DEVICES][MAX_PAGES]);
-
-
-
-
- /********************************************************************/
- /* User function declarations by category. */
- /********************************************************************/
- /* Window destruction. */
-
- int cdecl wndstroy (BWINDOW *); /* Detach from screen & discard */
- /* memory structures (does not */
- /* alter screen). */
-
-
- /* Controlling/retrieving window options & status. */
-
- BWINDOW *cdecl wnsetopt ( /* Set option. */
- BWINDOW *, /* */
- int, int); /* */
- /* */
- BWINDOW *cdecl wngetopt ( /* Retrieve option or status. */
- BWINDOW *, /* */
- int,int *); /* */
-
-
- /* Error reporting. */
-
- #if WN_EXT_ERROR /* */
- /* External version: */
- int cdecl wnerror(int); /* Set or clear error code and */
- /* return it. */
- #else /* Macro version: */
- #define wnerror(ercode) \ /* */
- (b_wnerr = (ercode)) /* */
- #endif /* */
-
-
- /* Displaying/removing windows. */
-
- BWINDOW *cdecl wnremove ( /* Remove window from display page. */
- BWINDOW *); /* */
- /* */
- BWINDOW *cdecl wnupdate ( /* Satisfy pending output requests. */
- BWINDOW *); /* */
- /* */
- BWINDOW *cdecl wnrevupd (void); /* Read image of current window */
- /* from the screen. */
- /* */
- int cdecl wnredraw (int, /* Redisplay all windows on a */
- int); /* display page and restore cursor. */
-
-
- /* Cursor action. */
-
- BWINDOW *cdecl wncursor ( /* Select for visible cursor */
- BWINDOW *); /* (deselect other windows shown */
- /* on this display page.) */
- /* */
- BWINDOW *cdecl wncurmov (int, /* Move current window's cursor */
- int); /* relative to the window's data */
- /* area. */
- /* */
- BWINDOW *cdecl wncurpos (int *, /* Return current window's cursor */
- int *); /* position relative to the */
- /* window's data area. */
-
-
- /* Miscellaneous. */
-
- BWINDOW *cdecl wnselect ( /* Select window for I/O (deselect */
- BWINDOW *); /* all other windows) making this */
- /* the "current" window. */
- /* */
- unsigned cdecl wnsetbuf ( /* Make scratch buffer for WNPRINTF.*/
- unsigned); /* */
- /* */
- BWINDOW *cdecl wnscrlbr ( /* Make scrollbar sensors. */
- BWINDOW *, int,/* */
- int, unsigned, /* */
- int); /* */
- void cdecl wnzapsen( /* Zap a window's sensor list. */
- BWINDOW *); /* */
-
- /* Window output. */
-
- void cdecl wnwrap (int, /* Write a string TTY-style with */
- const char *, int, /* word wrap. */
- int, int); /* */
- /* */
- void cdecl wnwrstrn ( /* Write a string of a given length */
- BWINDOW *, /* TTY-style with end-of-line */
- const char *, int, /* character wrap. */
- int, int, int);/* */
- /* */
- int cdecl wnwrbuf (int, /* Write a buffer to a given */
- int, int, /* location in the current window's */
- const char *, int, /* data area. */
- int, int); /* */
- /* */
- int cdecl wnprintf ( /* Do a PRINTF to the current */
- const char *, ...); /* window. */
- /* */
- BWINDOW *cdecl wnwrrect ( /* Write to a rectangular region of */
- BWINDOW *, int,/* a window. */
- int, int, int, /* */
- const char *, /* */
- int, int, int);/* */
- /* */
-
-
- /* Window input. */
-
- int cdecl wnrdbuf (int, /* Read part of the current */
- int, int, /* window's data area into a */
- char *, int); /* buffer. */
- /* */
- char cdecl wnquery (char *, /* Return input from operator. */
- int,int *); /* */
- /* */
- WN_EVENT *cdecl wnread ( /* Display a window and accept user */
- BWINDOW *, /* responses. */
- const WHERE *,/* */
- int, int, /* */
- int, int, /* */
- const /* */
- BORDER *, /* */
- WN_EVENT *, /* */
- int); /* */
- /* */
- WN_EVENT *cdecl wnpoll( /* Poll the mouse/keyboard once for */
- WN_EVENT_LIST *,/* a user response belonging to a */
- unsigned *, /* specified set of events. */
- unsigned *, /* */
- WN_EVENT *); /* */
- /* */
- int cdecl wninitev ( /* Initialize window event list. */
- BWINDOW *); /* */
- /* */
- int cdecl wnchgevn ( /* Change a window event in the */
- WN_EVENT_LIST **,/* specified event list. */
- WN_EVENT *, /* */
- WN_ACTION); /* */
- /* */
- int cdecl wnremevn( /* Delete a window event in the */
- WN_EVENT_LIST **,/* specified event list. */
- const /* */
- WN_EVENT *); /* */
- /* */
- void cdecl wnzapevn( /* Release the entire event list */
- WN_EVENT_LIST **);/* specified. . */
- /* */
-
-
- /* Window scrolling. */
-
- BWINDOW *cdecl wnscrblk ( /* Scroll a block-section of a */
- BWINDOW *, /* window a specified number of */
- int, int, int, /* rows/columns. */
- int, int, int, /* */
- int, int, int);/* */
- /* */
- BWINDOW *cdecl wnscroll ( /* Vertically scroll current window.*/
- int, int, /* */
- int, int); /* */
- /* */
- BWINDOW *cdecl wnhoriz ( /* Horizontally scroll current */
- int, int, /* window. */
- int, int); /* */
- /* */
-
-
- /* Attribute manipulation. */
-
- BWINDOW *cdecl wnatrblk ( /* Change attributes on a block- */
- BWINDOW *, /* section of a window. */
- int, int, int, /* */
- int, int, int, /* */
- int); /* */
- /* */
- BWINDOW *cdecl wnatrstr ( /* Change attributes on a stream- */
- BWINDOW *, /* section of a window. */
- int, int, int, /* */
- int, int, /* */
- int); /* */
- /* */
-
- /* Virtual windows. */
-
- BWINDOW *cdecl wnvdisp ( /* Display virtual window with */
- BWINDOW *, /* border. */
- const WHERE *, /* */
- int, int, /* */
- int, int, /* */
- const /* */
- BORDER *); /* */
- /* */
- BWINDOW *cdecl wnorigin ( /* Set the coordinates of the data */
- BWINDOW *, int,/* area which will appear in the */
- int, int); /* viewport's origin. */
- /* */
- BWINDOW *cdecl wnshoblk ( /* Shift the window's data area to */
- BWINDOW *, /* show a specified block. */
- const REGION *,/* */
- const LOC *, /* */
- const LOC *, /* */
- int); /* */
- /* */
-
-
-
- /********************************************************************/
- /* Internal functions by category */
- /********************************************************************/
-
- /* Window creation. */
-
- BWINDOW *cdecl wncreat0(int,int,int,unsigned,unsigned);
-
-
- /* Device & page switching. */
-
- int cdecl wnseldev(const WHERE *,const DIM *,int *);
-
-
- /* Error detection. */
-
- BWINDOW *cdecl wnvalwi0(BWINDOW *,unsigned);
- WIN_NODE *cdecl wnvalno0(WIN_NODE *,unsigned);
- WN_EVENT_LIST *cdecl wnvalev0(WN_EVENT_LIST *,unsigned);
-
-
- /* Restoring previous screen contents. */
-
- BWINDOW *cdecl wnresprv(BWINDOW *);
-
-
- /* Handling IMAGE structures. */
-
- BWINDOW *cdecl wnpimblk(BWINDOW *,int,int,int,int);
- IMAGE *cdecl wngetimg(IMAGE *,const WHERE *);
-
-
- /* Manipulating chains of WIN_NODEs. */
-
- WIN_NODE *cdecl wnpgadd(BWINDOW *,int,int);
- BWINDOW *cdecl wnpgrem(BWINDOW *);
-
-
- /* Building borders. */
-
- int cdecl wnputbor(const DIM *,const BORDER *,const WHERE *);
-
-
- /* Building sensor lists. */
-
- int cdecl wnputsen(BWINDOW *);
-
- /* Handling window events. */
-
- WN_EVENT *cdecl wnretevn(WN_EVENT_LIST *, const WN_EVENT *);
-
- /* Handling inter-window effects: displaying, */
- /* overlapping, removing. */
-
- BWINDOW *cdecl wnneedup(BWINDOW *);
- BWINDOW *cdecl wnnupblk(BWINDOW *,int,int,int,int,int);
- WIN_NODE *cdecl wncover(WIN_NODE *,const LOC *,const DIM *);
- int cdecl wnovrlap(const LOC *,const DIM *,const LOC *,const DIM *);
- BWINDOW *cdecl wnforget(BWINDOW *);
- BWINDOW *cdecl wnhide(BWINDOW *);
- BWINDOW *cdecl wnunhide(BWINDOW *);
-
-
- /* Window output. */
-
- void cdecl wnwrttyx(BWINDOW *,char,int,int,int);
-
-
- /* Cursor handling. */
-
- BWINDOW *cdecl wncurtrk(BWINDOW *, int, int);
- void cdecl wncurset(BWINDOW *);
-
-
- /* Native text window handling. */
-
- void cdecl wncmove(BWINDOW *, int, int);
- void cdecl wnsetwin(int,int,int,int);
- int cdecl wnchkdm(BWINDOW *);
- void cdecl wngetatr(BWINDOW *);
- void cdecl wnsetatr(int);
-
- /* Window edit fields. */
-
- int cdecl wnretinf(BWINDOW *, CUR_INFO *, const LOC *, int, int);
- int cdecl wnsetcur(BWINDOW *, int, CUR_TYPE *, int, int);
-
-
- #endif /* Ends "#ifndef DEF_BWINDOW" */