siemens-rtl/rtlmenuD.h
2023-07-11 14:40:13 +02:00

159 lines
6.7 KiB
C
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
#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