home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / include / Xm / CascadeBGP.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-30  |  7.4 KB  |  223 lines

  1. /* 
  2.  * (c) Copyright 1989, 1990, 1991, 1992 OPEN SOFTWARE FOUNDATION, INC. 
  3.  * ALL RIGHTS RESERVED 
  4. */ 
  5. /* 
  6.  * Motif Release 1.2.1
  7. */ 
  8. /*   $RCSfile: CascadeBGP.h,v $ $Revision: 10.1 $ $Date: 1994/02/03 15:35:12 $ */
  9. /*
  10. *  (c) Copyright 1989, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
  11. /*
  12. *  (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 HEWLETT-PACKARD COMPANY */
  13. #ifndef  _XmCascadeBGP_h
  14. #define  _XmCascadeBGP_h
  15.  
  16. #include <Xm/CascadeBG.h>
  17. #include <Xm/LabelGP.h>
  18.  
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22.  
  23. /*********************************************************************
  24.  * The Arrow Cache record for the menu cascade button
  25.  *********************************************************************/
  26. typedef struct _XmArrowPixmap
  27. {
  28.    Dimension height, width;
  29.    unsigned int depth;
  30.    Pixel top_shadow_color, bottom_shadow_color, foreground_color;
  31.    Display *display;
  32.    Screen *screen;
  33.    Pixmap pixmap;
  34. } XmArrowPixmap;
  35.  
  36.  
  37. /*********************************************************************/
  38. /* The CascadeButton Gadget Cache Object's class and instance records*/
  39. /*********************************************************************/
  40.  
  41.  
  42. typedef struct _XmCascadeButtonGCacheObjClassPart
  43. {
  44.     int foo;
  45.  
  46. } XmCascadeButtonGCacheObjClassPart;
  47.  
  48.  
  49. typedef struct _XmCascadeButtonGCacheObjClassRec
  50. {
  51.         ObjectClassPart                     object_class;
  52.         XmExtClassPart                      ext_class;
  53.         XmLabelGCacheObjClassPart           label_class_cache;
  54.         XmCascadeButtonGCacheObjClassPart   cascade_button_class_cache;
  55.  
  56. } XmCascadeButtonGCacheObjClassRec;
  57.  
  58. externalref XmCascadeButtonGCacheObjClassRec xmCascadeButtonGCacheObjClassRec;
  59.  
  60.  
  61. typedef struct _XmCascadeButtonGCacheObjPart
  62. {
  63.     Pixmap              cascade_pixmap;         /* pixmap for the cascade */
  64.     int                 map_delay;              /* time delay for posting */
  65.     Pixmap        armed_pixmap;
  66. } XmCascadeButtonGCacheObjPart;
  67.  
  68. typedef struct _XmCascadeButtonGCacheObjRec
  69. {
  70.     ObjectPart                   object;
  71.     XmExtPart                    ext;
  72.     XmLabelGCacheObjPart         label_cache;
  73.     XmCascadeButtonGCacheObjPart cascade_button_cache;
  74. } XmCascadeButtonGCacheObjRec;
  75.  
  76. /* The CascadeButtonGadget instance record */
  77.  
  78. typedef    struct _XmCascadeButtonGadgetPart
  79. {            /* resources */
  80.     Widget        submenu;        /* the menu to pull down */
  81.     XtCallbackList    activate_callback;    /* widget fired callback */
  82.     XtCallbackList    cascade_callback;    /* optional callback, called */
  83.                         /* when the menu is about */
  84.                         /* to be pulled down */
  85.             /* internal fields */
  86.     Boolean        armed;            /* armed flag */
  87.     XRectangle        cascade_rect;        /* location of cascade*/
  88.     int         timer;            /* timeout id */
  89.     XmCascadeButtonGCacheObjPart         *cache;
  90.  
  91. } XmCascadeButtonGadgetPart;
  92.  
  93.  
  94. /* Full instance record declaration */
  95.  
  96. typedef struct _XmCascadeButtonGadgetRec
  97. {
  98.     ObjectPart               object;
  99.     RectObjPart                rectangle;
  100.     XmGadgetPart               gadget;
  101.     XmLabelGadgetPart          label;
  102.     XmCascadeButtonGadgetPart  cascade_button;
  103. } XmCascadeButtonGadgetRec;
  104.  
  105.  
  106.  
  107. /* CascadeButton class structure */
  108.  
  109. typedef struct 
  110. {
  111.     XtPointer    extension;    /* Pointer to extension record */
  112. } XmCascadeButtonGadgetClassPart;
  113.  
  114.  
  115. /* Full class record declaration for CascadeButton class */
  116.  
  117. typedef struct _XmCascadeButtonGadgetClassRec 
  118. {
  119.     RectObjClassPart               rect_class;
  120.     XmGadgetClassPart              gadget_class;
  121.     XmLabelGadgetClassPart         label_class;
  122.     XmCascadeButtonGadgetClassPart cascade_button_class;
  123. } XmCascadeButtonGadgetClassRec;
  124.  
  125.  
  126. externalref XmCascadeButtonGadgetClassRec   xmCascadeButtonGadgetClassRec;
  127.  
  128. /* Access macro definitions  for UNcached fields*/
  129.  
  130. #define CBG_Submenu(cb)        (((XmCascadeButtonGadget)             \
  131.                                   cb)->cascade_button.submenu)
  132. #define CBG_ActivateCall(cb)    (((XmCascadeButtonGadget)                    \
  133.                                   cb)->cascade_button.activate_callback)
  134. #define CBG_CascadeCall(cb)    (((XmCascadeButtonGadget)                    \
  135.                                   cb)->cascade_button.cascade_callback)
  136. #define CBG_Armed(cb)        (((XmCascadeButtonGadget)                    \
  137.                                   cb)->cascade_button.armed)
  138. #define CBG_CascadeRect(cb)    (((XmCascadeButtonGadget)                    \
  139.                                   cb)->cascade_button.cascade_rect)
  140. #define CBG_Timer(cb)           (((XmCascadeButtonGadget)                    \
  141.                   cb)->cascade_button.timer)
  142. #define CBG_Cascade_x(cb)    (((XmCascadeButtonGadget)                    \
  143.                                   cb)->cascade_button.cascade_rect.x)
  144. #define CBG_Cascade_y(cb)    (((XmCascadeButtonGadget)                    \
  145.                                   cb)->cascade_button.cascade_rect.y)
  146. #define CBG_Cascade_width(cb)    (((XmCascadeButtonGadget)                    \
  147.                                   cb)->cascade_button.cascade_rect.width)
  148. #define CBG_Cascade_height(cb)    (((XmCascadeButtonGadget)                    \
  149.                                   cb)->cascade_button.cascade_rect.height)
  150. #define CBG_HasCascade(cb)      (((LabG_MenuType(cb) == XmMENU_PULLDOWN)  || \
  151.                       (LabG_MenuType(cb) == XmMENU_POPUP) ||     \
  152.                                   (LabG_MenuType(cb) == XmMENU_OPTION)) &&   \
  153.                      (CBG_Submenu(cb)))
  154.  
  155. #define XmCBG_ARMED_BIT          (1 << 0)    
  156. #define XmCBG_TRAVERSE_BIT     (1 << 1)
  157.  
  158. #define CBG_IsArmed(cb)     (((XmCascadeButtonGadget)(cb))->cascade_button.armed \
  159.               & XmCB_ARMED_BIT)
  160. #define CBG_Traversing(cb) (((XmCascadeButtonGadget)                          \
  161.                 (cb))->cascade_button.armed & XmCBG_TRAVERSE_BIT)
  162.  
  163. #define CBG_SetBit(byte,bit,v)  byte = (byte & (~bit)) | (v ? bit : 0)
  164.  
  165. #define CBG_SetArmed(cb,v)  CBG_SetBit (((XmCascadeButtonGadget)         \
  166.                        (cb))->cascade_button.armed,          \
  167.                       XmCBG_ARMED_BIT, v)
  168.  
  169. #define CBG_SetTraverse(cb,v)  CBG_SetBit (((XmCascadeButtonGadget)         \
  170.                        (cb))->cascade_button.armed,          \
  171.                       XmCBG_TRAVERSE_BIT, v)
  172.  
  173.  
  174.                   
  175. /* Access macro definitions  for Cached fields*/
  176.  
  177. #define CBG_CascadePixmap(cb)   (((XmCascadeButtonGadget)                    \
  178.                   cb)->cascade_button.cache->cascade_pixmap)
  179. #define CBG_MapDelay(cb)        (((XmCascadeButtonGadget)                    \
  180.                   cb)->cascade_button.cache->map_delay)
  181. #define CBG_ArmedPixmap(cb)    (((XmCascadeButtonGadget)                    \
  182.                   cb)->cascade_button.cache->armed_pixmap)
  183.  
  184.  
  185. /******************************/
  186. /* Convenience Macros         */
  187. /******************************/
  188.  
  189.  
  190. #define CBG_Cache(w)                    (((XmCascadeButtonGadget)(w))->\
  191.                        cascade_button.cache)
  192. #define CBG_ClassCachePart(w) \
  193.     (((XmCascadeButtonGadgetClass)xmCascadeButtonGadgetClass)->gadget_class.cache_part)
  194.  
  195.  
  196. /********    Private Function Declarations    ********/
  197. #ifdef _NO_PROTO
  198.  
  199. extern int _XmArrowPixmapCacheCompare() ;
  200. extern void _XmArrowPixmapCacheDelete() ;
  201. extern void _XmCreateArrowPixmaps() ;
  202.  
  203. #else
  204.  
  205. extern int _XmArrowPixmapCacheCompare( 
  206.                         XtPointer A,
  207.                         XtPointer B) ;
  208. extern void _XmArrowPixmapCacheDelete( 
  209.                         XtPointer data) ;
  210. extern void _XmCreateArrowPixmaps( 
  211.                         Widget wid) ;
  212.  
  213. #endif /* _NO_PROTO */
  214. /********    End Private Function Declarations    ********/
  215.  
  216.  
  217. #ifdef __cplusplus
  218. }  /* Close scope of 'extern "C"' declaration which encloses file. */
  219. #endif
  220.  
  221. #endif  /* _XmCascadeBGP_h */
  222. /* DON'T ADD STUFF AFTER THIS #endif */
  223.