159 lines
6.7 KiB
C
159 lines
6.7 KiB
C
/*
|
||
#ifndef lint
|
||
static char sccs_id[] = "@(#)rtlmenuD.h 5.6 9/1/88 Siemens Corporate Research and Support, Inc.";
|
||
#endif
|
||
*/
|
||
|
||
/*
|
||
RTL Menu Package Version 1.2
|
||
by Joe Camaratta and Mike Berman, Siemens RTL, Princeton NJ, 1988
|
||
|
||
rtlmenuD.h: macro definitions for RTLMenus package
|
||
*/
|
||
/*
|
||
|
||
Copyright 1988 by
|
||
Siemens Corporate Research and Support, Inc., Princeton, New Jersey
|
||
|
||
Permission to use, copy, modify, and distribute this software
|
||
and its documentation for any purpose and without fee is
|
||
hereby granted, provided that the above copyright notice
|
||
appear in all copies and that both that copyright notice and
|
||
this permission notice appear in supporting documentation, and
|
||
that the name of Siemens not be used in advertising or
|
||
publicity pertaining to distribution of the software without
|
||
specific, written prior permission. Siemens makes no
|
||
representations about the suitability of this software for any
|
||
purpose. It is provided "as is" without express or implied
|
||
warranty.
|
||
|
||
*/
|
||
|
||
/* Menu data structure access macros */
|
||
|
||
#define TheMenu(menu) (*(Menu *)menu)
|
||
#define MenuWidth(menu) ((Menu *)menu)->menuWidth
|
||
#define MenuHeight(menu) ((Menu *)menu)->menuHeight
|
||
#define MenuOldWidth(menu) ((Menu *)menu)->menuOldWidth
|
||
#define MenuOldHeight(menu) ((Menu *)menu)->menuOldHeight
|
||
#define MenuItemWidth(menu) ((Menu *)menu)->menuItemWidth
|
||
#define MenuItemHeight(menu) ((Menu *)menu)->menuItemHeight
|
||
#define MenuFlags(menu) ((Menu *)menu)->menuFlags
|
||
#define MenuMaxTextWidth(menu) ((Menu *)menu)->menuMaxTextWidth
|
||
#define MenuBorderWidth(menu) ((Menu *)menu)->menuBorderWidth
|
||
#define MenuOldBorderWidth(menu) ((Menu *)menu)->menuOldBorderWidth
|
||
#define MenuItemPad(menu) ((Menu *)menu)->menuItemPad
|
||
#define MenuDisplay(menu) ((Menu *)menu)->display
|
||
#define MenuScreen(menu) ((Menu *)menu)->screen
|
||
#define MenuWindow(menu) ((Menu *)menu)->menuWindow
|
||
#define MenuCursor(menu) ((Menu *)menu)->menuCursor
|
||
#define MenuSavedPixmap(menu) ((Menu *)menu)->savedPixmap
|
||
#define MenuSavedImage(menu) ((Menu *)->savedImage
|
||
#define MenuSavedImageX(menu) ((Menu *)menu)->menuSavedImageX
|
||
#define MenuSavedImageY(menu) ((Menu *)menu)->menuSavedImageY
|
||
#define MenuItems(menu) ((RTLMenuItem)((Menu *)menu)->menuItems)
|
||
#define MenuItemsPtr(menu) ((RTLMenuItem *)&((Menu *)menu)->menuItems)
|
||
#define MenuFontInfo(menu) ((Menu *)menu)->menuFontInfo
|
||
#define MenuNormalGC(menu) ((Menu *)menu)->normalGC
|
||
#define MenuInvertGC(menu) ((Menu *)menu)->invertGC
|
||
#define MenuHighlightedGC(menu) ((Menu *)menu)->highlightedGC
|
||
#define MenuGreyGC(menu) ((Menu *)menu)->greyGC
|
||
#define MenuGreyPixmap(menu) ((Menu *)menu)->greyPixmap
|
||
#define MenuCheckmarkPixmap(menu) ((Menu *)menu)->checkmarkPixmap
|
||
#define MenuArrowPixmap(menu) ((Menu *)menu)->arrowPixmap
|
||
#define MenuInitialItemText(menu) ((Menu *)menu)->menuInitialItemText
|
||
#define MenuItemHighlighted(menu) ((RTLMenuItem)((Menu *)menu)->highlightedItem)
|
||
#define ResetMenuItemHighlighted(menu) (((Menu *)menu)->highlightedItem = (MenuItem *)NULL)
|
||
#define MenuNested(menu) ((Menu *)menu)->menuNested
|
||
#define MenuX(menu) ((Menu *)menu)->menuX
|
||
#define MenuY(menu) ((Menu *)menu)->menuY
|
||
#define MenuParent(menu) ((RTLMenu)((Menu *)menu)->parentMenu)
|
||
#define SetMenuParent(menu, parent) (((Menu *)menu)->parentMenu = (Menu *)parent)
|
||
#define MenuDelta(menu) ((Menu *)menu)->delta
|
||
#define MenuOptions(menu) ((Menu *)menu)->menuOptions
|
||
#define NULLMENU ((RTLMenu) NULL)
|
||
|
||
/* Menu predicates */
|
||
#define MenuIsNull(menu) (menu == NULLMENU)
|
||
#define MenuIsDisplayed(menu) (MenuFlags(menu) & menuMapped)
|
||
#define MenuHasInitialItem(menu) (MenuInitialItemText(menu) != (char *) NULL)
|
||
|
||
/* Menu modifiers */
|
||
#define SetHighlightItem(menu, item) ((Menu *)menu)->highlightedItem = (MenuItem *) item
|
||
#define ResetHighlightItem(menu) ((Menu *)menu)->highlightedItem = (MenuItem *) NULL
|
||
#define SetMenuFlag(menu, flag) MenuFlags(menu) |= flag
|
||
#define ResetMenuFlag(menu,flag) MenuFlags(menu) &= ~flag
|
||
#define TestMenuFlag(menu,flag) (MenuFlags(menu) & flag)
|
||
#define TestOptionFlag(menu,option) (MenuOptions(menu) & option)
|
||
|
||
/* Item data structure access macros */
|
||
|
||
#define TheItem(item) (*(MenuItem *)item)
|
||
#define ItemFlags(item) ((MenuItem *)item)->itemFlags
|
||
#define ItemText(item) ((MenuItem *)item)->itemText
|
||
#define ItemTextLength(item) ((MenuItem *)item)->itemTextLength
|
||
#define ItemTextWidth(item) ((MenuItem *)item)->itemTextWidth
|
||
#define ItemNext(item) ((RTLMenuItem)((MenuItem *)item)->nextItem)
|
||
#define ItemNextPtr(item) ((RTLMenuItem *)&((MenuItem *)item)->nextItem)
|
||
#define ItemSubmenu(item) ((RTLMenu)((MenuItem *)item)->itemSubmenu)
|
||
#define SetItemSubmenu(item, submenu) (((MenuItem *)item)->itemSubmenu = (Menu *) submenu)
|
||
#define ItemTag(item) ((MenuItem *)item)->itemTag
|
||
#define ItemGenerator(item) ((MenuItem *)item)->generator
|
||
#define ItemCheckproc(item) ((MenuItem *)item)->checkproc
|
||
#define ItemCallback(item) ((MenuItem *)item)->itemCallback
|
||
#define ItemData(item) ((MenuItem *)item)->itemData
|
||
#define ItemWindow(item) ((MenuItem *)item)->itemWindow
|
||
#define ItemMenu(item) ((RTLMenu)((MenuItem *)item)->itemMenu)
|
||
#define SetItemMenu(item, menu) (((MenuItem *)item)->itemMenu = (Menu *)menu)
|
||
#define NULLITEM ((RTLMenuItem) NULL)
|
||
#define ItemGetArrowPosition(item) \
|
||
(((MenuItem *)item)->itemMenu->menuWidth - arrow_width)
|
||
|
||
/* Item predicates */
|
||
#define ItemIsNull(item) ((item) == NULLITEM)
|
||
#define ItemIsInitialItem(menu, item) \
|
||
(MenuInitialItemText(menu) && \
|
||
(streql(MenuInitialItemText(menu), ItemText(item))))
|
||
#define ItemIsLeaf(item) ((ItemSubmenu(item) == NULLMENU)? TRUE : FALSE)
|
||
#define ItemIsDisabled(item) (ItemFlags(item) & itemDisabled)
|
||
|
||
/* Item modifiers */
|
||
|
||
#define CheckItem(menu,item) SetItemCheck(menu,item,1)
|
||
#define DisableItem(menu,item) SetItemDisable(menu,item,1)
|
||
#define EnableItem(menu,item) SetItemDisable(menu,item,0)
|
||
#define UncheckItem(menu,item) SetItemCheck(menu,item,0)
|
||
#define SetItemFlag(item, flag) ItemFlags(item) |= flag
|
||
#define ResetItemFlag(item,flag) ItemFlags(item) &= ~flag
|
||
#define TestItemFlag(item,flag) (ItemFlags(item) & flag)
|
||
#define MoveItemFlag(item,flag1,flag2) \
|
||
if (TestItemFlag(item,flag1))\
|
||
SetItemFlag(item,flag2);\
|
||
else\
|
||
ResetItemFlag(item,flag2);\
|
||
ResetItemFlag(item,flag1);
|
||
|
||
/* Masks */
|
||
|
||
#define MenuEventMask \
|
||
((Mask)(LeaveWindowMask | EnterWindowMask | ButtonReleaseMask))
|
||
#define NormalItemEventMask MenuEventMask
|
||
#define SubmenuItemEventMask ((Mask) (MenuEventMask | PointerMotionMask))
|
||
#define MenuIgnoreMask ((Mask) 0)
|
||
#define MenuExposureMask ((Mask) ExposureMask)
|
||
|
||
/* Magic numbers */
|
||
|
||
#define checkMarkWidth 9
|
||
#define checkMarkHeight 8
|
||
#define defaultCursorWidth 16
|
||
#define defaultCursorHeight 16
|
||
#define defaultCursorX 1
|
||
#define defaultCursorY 1
|
||
#define lineSeparatorHeight 9
|
||
#define ItemBorder 1
|
||
#define Default_Delta 20 /* # pixels pulled right to get submenu */
|
||
#define Menu_Table_Size 8
|
||
#define Item_Table_Size 32
|
||
|