Annotation of 43BSD/contrib/X/uwm/uwm.h, revision 1.1.1.1

1.1       root        1: /* $Header: uwm.h,v 10.3 86/02/01 16:24:37 tony Rel $ */
                      2: /************************************************************************
                      3:  *                                                                     *
                      4:  *                     Copyright (c) 1986 by                           *
                      5:  *             Digital Equipment Corporation, Maynard, MA              *
                      6:  *                      All Rights Reserved.                           *
                      7:  *                                                                     *
                      8:  *     Permission to use, copy, modify, and distribute this software   *
                      9:  *     and its documentation is hereby granted only to licensees of    *
                     10:  *     The Regents of the University of California pursuant to their   *
                     11:  *     license agreement for the Berkeley Software Distribution        *
                     12:  *     provided that the following appears on all copies.              *
                     13:  *                                                                     *
                     14:  *            "LICENSED FROM DIGITAL EQUIPMENT CORPORATION             *
                     15:  *                      COPYRIGHT (C) 1986                             *       
                     16:  *                 DIGITAL EQUIPMENT CORPORATION                       *
                     17:  *                         MAYNARD, MA                                 *
                     18:  *                     ALL RIGHTS RESERVED.                            *
                     19:  *                                                                     *
                     20:  *      THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT  * 
                     21:  *     NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL   *
                     22:  *     EQUIPMENT CORPORATION.  DIGITAL MAKES NO REPRESENTATIONS        *
                     23:  *     ABOUT SUITABILITY OF THIS SOFTWARE FOR ANY PURPOSE. IT IS       *
                     24:  *     SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.           *
                     25:  *                                                                     *       
                     26:  *     IF THE UNIVERSITY OF CALIFORNIA OR ITS LICENSEES MODIFY         *       
                     27:  *     THE SOFTWARE IN A MANNER CREATING DERIVATIVE COPYRIGHT          *       
                     28:  *     RIGHTS APPROPRIATE COPYRIGHT LEGENDS MAY BE PLACED ON THE       *
                     29:  *     DERIVATIVE WORK IN ADDITION TO THAT SET FORTH ABOVE."           *       
                     30:  *                                                                     *
                     31:  ************************************************************************/
                     32:  
                     33: 
                     34: 
                     35: /*
                     36:  * MODIFICATION HISTORY
                     37:  *
                     38:  * 000 -- M. Gancarz, DEC Ultrix Engineering Group
                     39:  */
                     40: 
                     41: #include <errno.h>
                     42: #include <stdio.h>
                     43: #include <strings.h>
                     44: #include <X/Xlib.h>
                     45: 
                     46: #define MIN(x, y)      ((x) <= (y) ? (x) : (y))
                     47: #define MAX(x, y)      ((x) >= (y) ? (x) : (y))
                     48: 
                     49: typedef enum _bool {FALSE, TRUE} Bool;
                     50: 
                     51: #define DEF_DELTA              1
                     52: #define DEF_FONT               "6x10"
                     53: #define DEF_FUNC               GXcopy
                     54: #define DEF_ICON_BORDER_WIDTH  2
                     55: #define DEF_ICON_PADDING       4
                     56: #define DEF_POP_BORDER_WIDTH   2
                     57: #define DEF_POP_PADDING                4
                     58: #define DEF_MENU_BORDER_WIDTH  2
                     59: #define DEF_MENU_PADDING       4
                     60: #define DEF_VOLUME             4
                     61: 
                     62: #define INIT_PTEXT             {'0', '0', '0', 'x', '0', '0', '0'}
                     63: #define TEMPFILE               "/tmp/uwm.XXXXXX"
                     64: #define SYSFILE                        "/usr/new/lib/X/uwm/system.uwmrc"
                     65: 
                     66: #define CURSOR_WIDTH           16
                     67: #define CURSOR_HEIGHT          16
                     68: 
                     69: #define MAX_ZAP_VECTORS                16
                     70: #define MAX_BOX_VECTORS                26
                     71: 
                     72: #define DRAW_HEIGHT            1
                     73: #define DRAW_WIDTH             1
                     74: #define DRAW_VALUE             0xfd
                     75: #define DRAW_FUNC              GXxor
                     76: #define DRAW_PLANES            1
                     77: 
                     78: #define ROOT                   0x1
                     79: #define WINDOW                 0x2
                     80: #define ICON                   0x4
                     81: 
                     82: #define FAILURE                        0
                     83: #define NAME_LEN               256     /* Maximum length of filenames. */
                     84: #define KeyMask(x)     (x & (ControlMask|MetaMask|ShiftMask|ShiftLockMask))
                     85: #define EVENTMASK              (ButtonPressed | ButtonReleased)
                     86: #define ButtonValue(x)         (x & (LeftMask|MiddleMask|RightMask) >> 9)
                     87: 
                     88: #define DrawBox() XDraw(RootWindow,box,num_vectors,DRAW_HEIGHT,DRAW_WIDTH,DRAW_VALUE,DRAW_FUNC,AllPlanes)
                     89: #define DrawZap() XDraw(RootWindow,zap,num_vectors,DRAW_HEIGHT,DRAW_WIDTH,DRAW_VALUE,DRAW_FUNC,AllPlanes)
                     90: 
                     91: /*
                     92:  * Keyword table entry.
                     93:  */
                     94: typedef struct _keyword {
                     95:     char *name;
                     96:     int type;
                     97:     Bool *bptr;
                     98:     int *nptr;
                     99:     char *sptr;
                    100:     Bool (*fptr)();
                    101: } Keyword;
                    102: 
                    103: /*
                    104:  * Keyword table type entry.
                    105:  */
                    106: #define IsString       1
                    107: #define IsBoolTrue     2
                    108: #define IsBoolFalse    3
                    109: #define IsFunction     4
                    110: #define IsMenuMap      5
                    111: #define IsMenu         6
                    112: #define IsDownFunction 7
                    113: #define IsParser       8
                    114: #define IsNumeric      9
                    115: #define IsQuitFunction 10
                    116: 
                    117: /*
                    118:  * Button/key binding type.
                    119:  */
                    120: typedef struct _binding {
                    121:     struct _binding *next;
                    122:     int context;
                    123:     short mask;
                    124:     short button;
                    125:     Bool (*func)();
                    126:     char *menuname;
                    127:     struct _menuinfo *menu;
                    128: } Binding;
                    129: 
                    130: /*
                    131:  * Key expression type.
                    132:  */
                    133: typedef struct _keyexpr {
                    134:     char *name;
                    135:     short mask;
                    136: } KeyExpr;
                    137: 
                    138: /*
                    139:  * Context expression type.
                    140:  */
                    141: typedef struct _contexpr {
                    142:     char *name;
                    143:     int mask;
                    144: } ContExpr;
                    145: 
                    146: /*
                    147:  * Button modifier type.
                    148:  */
                    149: typedef struct _buttonmodifier {
                    150:     char *name;
                    151:     short mask;
                    152: } ButtonModifier;
                    153: 
                    154: /*
                    155:  * Button modifier mask definitions.
                    156:  * Note: The upper byte definitions are found in <X/X.h>.
                    157:  */
                    158: #define DoubleClick    0x1
                    159: #define DeltaMotion    0x2
                    160: #define ButtonUp       0x4
                    161: #define ButtonDown     0x8
                    162: #define ButtonMods     0xf
                    163: 
                    164: /*
                    165:  * MenuInfo data type.
                    166:  */
                    167: typedef struct _menuinfo {
                    168:     char *name;                        /* Name of this menu. */
                    169:     Window w;                  /* Menu window. */
                    170:     int iheight;               /* Height of an item. */
                    171:     int width;                 /* Width of this menu. */
                    172:     int height;                        /* Height of this menu. */
                    173:     Pixmap image;              /* Saved image of the menu. */
                    174:     char *foreground;          /* Name of foreground color. */
                    175:     char *background;          /* Name of background color. */
                    176:     char *fghighlight;         /* Name of hightlight foreground color. */
                    177:     char *bghighlight;         /* Name of highlight background color. */
                    178:     Color fg;                  /* Foreground color definition. */
                    179:     Color bg;                  /* Background color definition. */
                    180:     Color hlfg;                        /* Foreground highlight color definition. */
                    181:     Color hlbg;                        /* Background highlight color definition. */
                    182:     struct _menuline *line;    /* Linked list of menu items. */
                    183: } MenuInfo;
                    184: 
                    185: /*
                    186:  * Menu Line data type.
                    187:  */
                    188: typedef struct _menuline {
                    189:     struct _menuline *next;    /* Pointer to next line. */
                    190:     char *name;                        /* Name of this line. */
                    191:     int type;                  /* IsShellCommand, IsText, IsTextNL... */
                    192:     Window w;                  /* Subwindow for this line. */
                    193:     char *text;                        /* Text string to be acted upon. */
                    194:     Bool (*func)();            /* Window manager function to be invoked. */
                    195:     struct _menuinfo *menu;    /* Menu to be invoked. */
                    196:     char *foreground;          /* Name of foreground color. */
                    197:     char *background;          /* Name of background color. */
                    198:     Color fg;                  /* Foreground color definition. */
                    199:     Color bg;                  /* Background color definition. */
                    200: } MenuLine;
                    201: 
                    202: /*
                    203:  * MenuLine->type definitions.
                    204:  */
                    205: #define IsShellCommand         1
                    206: #define IsText                 2
                    207: #define IsTextNL               3
                    208: #define IsUwmFunction          4
                    209: #define IsMenuFunction         5
                    210: #define IsImmFunction          6     /* Immediate (context-less) function. */
                    211: 
                    212: /*
                    213:  * Menu Link data type.  Used by the parser when creating a linked list
                    214:  * of menus.
                    215:  */
                    216: typedef struct _menulink {
                    217:     struct _menulink *next;    /* Pointer to next MenuLink. */
                    218:     struct _menuinfo *menu;    /* Pointer to the menu in this link. */
                    219: } MenuLink;
                    220: 
                    221: /*
                    222:  * External variable definitions.
                    223:  */
                    224: extern int errno;
                    225: extern Window Pop;             /* Pop-up dimension display window. */
                    226: extern Window Frozen;          /* Contains window id of "gridded" window. */
                    227: extern Font IFont;             /* Icon text font. */
                    228: extern Font PFont;             /* Pop-up text font. */
                    229: extern Font MFont;             /* Menu text font. */
                    230: extern FontInfo IFontInfo;     /* Icon text font information. */
                    231: extern FontInfo PFontInfo;     /* Pop-up text font information. */
                    232: extern FontInfo MFontInfo;     /* Menu text font information. */
                    233: extern Pixmap GrayPixmap;      /* Gray pixmap. */
                    234: extern Pixmap IBorder;         /* Icon window border pixmap. */
                    235: extern Pixmap IBackground;     /* Icon window background pixmap. */
                    236: extern Pixmap PBorder;         /* Pop-Up Window border pixmap. */
                    237: extern Pixmap PBackground;     /* Pop-up Window background pixmap. */
                    238: extern Pixmap MBorder;         /* Menu Window border pixmap. */
                    239: extern Pixmap MBackground;     /* Menu Window background pixmap. */
                    240: extern Cursor ArrowCrossCursor; /* Arrow cross cursor. */
                    241: extern Cursor TextCursor;      /* Text cursor used in icon windows. */
                    242: extern Cursor IconCursor;      /* Icon Cursor. */
                    243: extern Cursor MenuCursor;      /* Menu cursor. */
                    244: extern Cursor MenuMaskCursor;  /* Menu mask cursor. */
                    245: extern Cursor LeftButtonCursor;        /* Left button main cursor. */
                    246: extern Cursor MiddleButtonCursor;/* Middle button main cursor. */
                    247: extern Cursor RightButtonCursor;/* Right button main cursor. */
                    248: extern int ScreenWidth;                /* Display screen width. */
                    249: extern int ScreenHeight;       /* Display screen height. */
                    250: extern int CursorFunc;         /* Mouse cursor function. */
                    251: extern int IconCursorFunc;     /* Icon Mouse Cursor function. */
                    252: extern int ITextForground;     /* Icon window text forground color. */
                    253: extern int ITextBackground;    /* Icon window text background color. */
                    254: extern int IBorderWidth;       /* Icon window border width. */
                    255: extern int PTextForground;     /* Pop-up window text forground color. */
                    256: extern int PTextBackground;    /* Pop-up window text background color. */
                    257: extern int PWidth;             /* Pop-up window width (including borders). */
                    258: extern int PHeight;            /* Pop-up window height (including borders). */
                    259: extern int PBorderWidth;       /* Pop-up window border width. */
                    260: extern int MTextForground;     /* Menu window text forground color. */
                    261: extern int MTextBackground;    /* Menu window text background color. */
                    262: extern int MBorderWidth;       /* Menu window border width. */
                    263: extern int PPadding;           /* Pop-up window padding. */
                    264: extern int ButtonMask;         /* Global mouse button event mask. */
                    265: extern int Delay;              /* Delay between clicks of double click. */
                    266: extern int Delta;              /* Mouse movement slop. */
                    267: extern int HIconPad;           /* Icon horizontal padding. */
                    268: extern int VIconPad;           /* Icon vertical padding. */
                    269: extern int HMenuPad;           /* Menu horizontal padding. */
                    270: extern int VMenuPad;           /* Menu vertical padding. */
                    271: extern int MaxColors;          /* Maximum number of colors to use. */
                    272: extern int Pushval;            /* Number of pixels to push window by. */
                    273: extern int Volume;             /* Audible alarm volume. */
                    274: extern int status;             /* Routine return status. */
                    275: extern int Maxfd;              /* Maximum file descriptors for select(2). */
                    276: extern MenuLink *Menus;                /* Linked list of menus. */
                    277: 
                    278: extern Bool Autoselect;                /* Warp mouse to default menu selection? */
                    279: extern Bool Freeze;            /* Freeze server during move/resize? */
                    280: extern Bool Grid;              /* Should the m/r box contain a 9 seg. grid. */
                    281: extern Bool NWindow;           /* Normalize windows? */
                    282: extern Bool NIcon;             /* Normalize icons? */
                    283: extern Bool Push;              /* Relative=TRUE, Absolute=FALSE. */
                    284: extern Bool Reverse;           /* Reverse video? */
                    285: extern Bool Zap;               /* Should the the zap effect be used. */
                    286: 
                    287: extern char PText[];           /* Pop-up window dummy text. */
                    288: extern int PTextSize;          /* Pop-up window dummy text size. */
                    289: 
                    290: extern int Lineno;             /* Line count for parser. */
                    291: extern Bool Startup_File_Error;        /* Startup file error flag. */
                    292: extern char Startup_File[];    /* Startup file name. */
                    293: extern char IFontName[];       /* Icon font name. */
                    294: extern char PFontName[];       /* Pop-up font name. */
                    295: extern char MFontName[];       /* Menu font name. */
                    296: extern char **Argv;            /* Pointer to command line parameters. */
                    297: extern char **Environ;         /* Pointer to environment. */
                    298: 
                    299: extern char *DefaultBindings[];        /* Default bindings string array. */
                    300: extern Keyword KeywordTable[]; /* Keyword lookup table. */
                    301: extern Binding *Blist;         /* Button/key bindings list. */
                    302: extern KeyExpr KeyExprTbl[];   /* Key expression table. */
                    303: extern ContExpr ContExprTbl[]; /* Context expression table. */
                    304: extern ButtonModifier ButtModTbl[];/* Button modifier table. */
                    305: 
                    306: #ifdef PROFIL
                    307: int ptrap();
                    308: #endif
                    309: 
                    310: /*
                    311:  * External routine typing.
                    312:  */
                    313: extern Bool Beep();
                    314: extern Bool CircleDown();
                    315: extern Bool CircleUp();
                    316: extern Bool Continue();
                    317: extern Bool Focus();
                    318: extern Bool GetButton();
                    319: extern Bool Iconify();
                    320: extern Bool Lower();
                    321: extern Bool Menu();
                    322: extern Bool Move();
                    323: extern Bool MoveOpaque();
                    324: extern Bool NewIconify();
                    325: extern Bool Pause();
                    326: extern Bool PushDown();
                    327: extern Bool PushLeft();
                    328: extern Bool PushRight();
                    329: extern Bool PushUp();
                    330: extern Bool Raise();
                    331: extern Bool Refresh();
                    332: extern Bool ResetBindings();
                    333: extern Bool ResetMenus();
                    334: extern Bool ResetVariables();
                    335: extern Bool Resize();
                    336: extern Bool Restart();
                    337: extern int StoreCursors();
                    338: extern int StoreBox();
                    339: extern int StoreGridBox();
                    340: extern int StoreZap();
                    341: extern int Error();
                    342: extern int XError();
                    343: extern int CreateMenus();
                    344: 
                    345: extern char *stash();

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.