/* UNISRC_ID: %W% %E% */ /********************************************************************* * file: h/scrn/wmcom.h * part #: * internal sequence #: * * ************************************************************ * * "(c) Copyright Hewlett-Packard Company, 1984. All * * * rights are reserved. Copying or other reproduction * * * of this program except for archival purposes is * * * prohibited without the prior written consent of * * * Hewlett-Packard Company." * * ************************************************************ * * * This file contains definitions for common window managment protocols. * Note that this is a striped down version for user programs. * * Pisces Q-DOS project * Jon Brewster PCD * ---------------------------------------------------- * initial 4/4/83 jb * striped down 8/23/83 jb * menu stuff in 9/2/83 jb * * $Log: /usr/src/uts.p/h/scrn/wmcom.h,v $ * Revision 2.7 84/09/13 17:14:36 jon * Release 12 * * Revision 2.6 84/07/30 21:42:16 jon * *** empty log message *** * * Revision 2.5 84/06/08 15:24:42 jon * move menu structure from wmicom.h to wmcom.h * * Revision 2.4 84/05/30 15:27:27 jon * syncronize with ,v * * Revision 2.3 84/04/06 15:17:36 jon * This checkin just garentees that everything is in sync * * Revision 2.2 84/03/26 11:56:13 jon * added w_list and w_llist structures * changed the mouse structures to have unique element names * * Revision 2.1 84/03/12 19:47:32 jon * Release 8 * * Revision 1.7 84/03/06 10:16:30 jon * bring up to date with 2/14/84 ers * * Revision 1.6 84/02/23 13:44:44 jon * added recover bit * * Revision 1.5 84/02/02 20:51:08 jon * Start using RCS log * * ********************************************************************/ #define T0TYPE 0 /* terminal 0 type */ #define PETYPE 1 /* plotter emulator type */ #define MAXEVENT 15 /* number of pollable events - 1 */ /*********************************************** * ioctl command for the window control module * ***********************************************/ #define WMCREATE (('w'<<8)|0) #define WMGET (('w'<<8)|1) #define WMSET (('w'<<8)|2) #define WMDESTROY (('w'<<8)|3) #define WMGETMOUSE (('w'<<8)|4) #define WMSETMOUSE (('w'<<8)|5) #define WMEVENTPOLL (('w'<<8)|6) #define WMGETSPRITE (('w'<<8)|7) #define WMSETSPRITE (('w'<<8)|8) #define WMGETMSREL (('w'<<8)|9) #define WMSETMSREL (('w'<<8)|10) #define WMLOCK (('w'<<8)|11) #define WMUNLOCK (('w'<<8)|12) #define WMLIST (('w'<<8)|13) #define WMLLIST (('w'<<8)|14) #define WMMENU (('w'<<8)|15) /*************** * w_stat bits * ***************/ #define INVERT 000001 /* window has black background */ #define ACTIVE 000002 /* window is active */ #define AUTO_ACT 000004 /* window becomes active on show */ #define SHOWING 000010 /* window is showing (obsolete) */ #define FRONT 000010 /* window is showing */ #define AUTO_SH 000020 /* window shows on write (obsolete) */ #define AUTO_FRONT 000020 /* window shows on write */ #define CORK 000040 /* window is corked */ #define ON_SCREEN 000100 /* window is on the screen */ #define NO_DESTROY 000200 /* window can not be destroyed */ #define AUTO_DEST 000400 /* destroy window on close */ #define IGNORE_KEY 001000 /* dont activate automatically on */ /* on hide, etc. */ #define NO_BANNER 002000 /* no banner */ #define RECOVER 004000 /* destroy window on next create */ #define SHRUNK 010000 /* window is shrunk to banner only */ #define KEY_SCAN 020000 /* key scan mode */ /*********************** * event and mask bits * ***********************/ #define EVENT_B1_DOWN 00000001 /* button 1 pressed */ #define EVENT_B1_UP 00000002 /* button 1 released */ #define EVENT_B2_DOWN 00000004 /* button 2 pressed */ #define EVENT_B2_UP 00000010 /* button 2 released */ #define EVENT_B3_DOWN 00000020 /* button 3 pressed */ #define EVENT_B3_UP 00000040 /* button 3 released */ #define EVENT_B4_DOWN 00000100 /* button 4 pressed */ #define EVENT_B4_UP 00000200 /* button 4 released */ #define EVENT_B5_DOWN 00000400 /* button 5 pressed */ #define EVENT_B5_UP 00001000 /* button 5 released */ #define EVENT_B6_DOWN 00002000 /* button 6 pressed */ #define EVENT_B6_UP 00004000 /* button 6 released */ #define EVENT_B7_DOWN 00010000 /* button 7 pressed */ #define EVENT_B7_UP 00020000 /* button 7 released */ #define EVENT_B8_DOWN 00040000 /* button 8 pressed */ #define EVENT_B8_UP 00100000 /* button 8 released */ #define EVENT_SPRITE 00200000 /* sprite moved */ #define EVENT_MOVE 00400000 /* window moved */ #define EVENT_STRETCH 01000000 /* window stretched */ #define EVENT_ACTIVE 02000000 /* w_stat ACTIVE bit changed */ /************************* * structure definitions * *************************/ struct windio { char w_path[40]; /* path name for node */ long w_minor; /* window minor device number */ short w_type; /* type of window */ unsigned short w_stat; /* window status */ short w_xloc; /* left edge of desired window */ short w_yloc; /* top of desired window */ short w_height; /* height of desired window */ short w_width; /* width of desired window */ short w_gen1; /* general purpose var */ short w_gen2; /* general purpose var */ short w_gen3; /* general purpose var */ short w_gen4; /* general purpose var */ }; struct m_stat { double s_xloc; /* x coord. of sprite */ double s_yloc; /* y coord. of sprite */ unsigned short s_buttons; /* button status */ unsigned long s_mask; /* interrupt mask */ unsigned long s_event; /* interrupt reason */ }; struct m_event { unsigned long e_event; /* desired event */ short e_count; /* number of times event has occured */ double e_xloc; /* sprite x last time event occured */ double e_yloc; /* sprite y last time event occured */ }; struct sprt_stat { char sprite[32]; /* sprite image */ short hot_x; /* hot spot x */ short hot_y; /* hot spot y */ }; struct msrel_stat { int m_exist; /* mouse exists (number of buttons) */ int m_xshift; /* horizontal multiplier */ int m_yshift; /* vertical multiplier */ }; struct w_llist { int l_active; int l_lastactive; int l_bottom; char llist[256][2]; }; struct w_list { char list[5][2]; }; struct menu { char items[16][8]; /* menu labels */ unsigned char upper; /* indicates whether shifted key is defined, one bit per shifted key */ };