#ifndef POPUP_MENU_H #define POPUP_MENU_H #include #include #include #include /* The following constants are the font characteristics of topaz eight : * If you want a different font, you'll have to open it in the Init_MenuPackage * and set these constants to the appropriate values. */ #define FONT_HEIGHT 8 /* pixel height of an average character */ #define FONT_WIDTH 8 /* pixel width of an average character */ #define FONT_BASELINE 6 /* relative pixel location of character baseline */ #define MAX(a,b) ((a > b) ? a : b) #define NOITEM_SELECTED 0 /* returned from PopUp if no item was selected */ #define OUTSIDE_WINDOW -1 /* returned from PopUp if cursor outside of window */ struct PopUp_Item { char *text; /* text string to be displayed */ SHORT selection_id; /* id returned when this item is selected */ SHORT left, top; /* top/left offset within menu */ SHORT height,width; /* desired height/width of selection box */ UBYTE color; /* desired text color (= color register) */ struct PopUp_Item *next; /* link to next menu item */ }; struct PopUp_Menu { SHORT depth; /* number of bit-planes to use */ SHORT left,top, height; /* used internally */ SHORT width; /* desired width of menu */ USHORT deactivate; /* what MOUSEBUTTON deactives the menu */ UBYTE outline_color, area_color; /* color registers */ struct ClipRect cr; /* clipping rectangle for display */ struct RastPort rp; /* raster port for drawing into menu area */ struct BitMap bitmap; /* actual bitmap for rendering the menu */ struct PopUp_Item *first_item; /* first in list of menu items */ struct PopUp_Item *active_item; /* for internal use only */ }; #define Inside_Window(x,y,w)(((x)>0)&&((x)<(w)->Width)&&((y)>0)&&((y)<(w)->Height)) #endif