home *** CD-ROM | disk | FTP | other *** search
/ Fish 'n' More 2 / fishmore-publicdomainlibraryvol.ii1991xetec.iso / dirs / popupmenu_422.lzh / PopUpMenu / Source / PopUpMenu.h < prev    next >
C/C++ Source or Header  |  1990-12-31  |  3KB  |  120 lines

  1. #define ABSEXECBASE ((struct ExecBase **)4L)
  2.  
  3. /* this is for lattice bug with 16-bit ints */
  4. #undef    RMBTRAP
  5. #define RMBTRAP 0x00010000L
  6.  
  7. /* this is for missing limits */
  8. #define WORD_MIN   SHRT_MIN
  9. #define WORD_MAX   SHRT_MAX
  10. #define UWORD_MIN  USHRT_MIN
  11. #define UWORD_MAX  USHRT_MAX
  12.  
  13. /* this is for bug in AddSemaphore */
  14. #undef AddSemaphore
  15. #define AddSemaphore(SS) InitSemaphore(SS),\
  16.              Enqueue(&((*ABSEXECBASE)->SemaphoreList),\
  17.                  &((SS)->ss_Link))
  18.  
  19. /* this is a fake intuimessage-class used to quit the popupmenu program */
  20. #define QUITPOPUPMENU       0
  21.  
  22. #define HIGHLIGHTON       0
  23. #define HIGHLIGHTOFF       1
  24.  
  25. #define BORDERSIZE       2
  26. #define OVERLAP        7
  27.  
  28. #define AND          &&
  29. #define OR          ||
  30.  
  31. #define ITEMWINDOW 0
  32. #define SUBWINDOW  SHRT_MAX
  33. /* used for drawing commandkeys */
  34. #define LORESSCREEN      TRUE
  35. #define HIRESSCREEN      FALSE
  36.  
  37. /* used by DrawMenuItem */
  38. #define SELECTFILL   1
  39. #define ITEMFILL     0
  40.  
  41. #define VERIFYOK   0x0001
  42. #define QUIT       0x0002
  43.  
  44. struct WindowSize {
  45.   WORD Left, Top, Right, Bottom;
  46. };
  47.  
  48. struct WindowData {
  49.   BOOL    BitMapOk;
  50.   BOOL    ItemsEnabled;
  51.   WORD    LeftEdge, TopEdge;
  52.   WORD    RightEdge, Bottom;
  53.   WORD    Width, Height;
  54.   WORD    TopValue, LeftValue;
  55.   struct MenuItem *Items;
  56.   struct BitMap Bm;
  57. };
  58.  
  59. struct SignalData {
  60.   struct Task *PopUpMenuTask;
  61.   LONGBITS MenuUpSig;
  62.   LONGBITS MenuDownSig;
  63.   LONGBITS MouseMovedSig;
  64.   LONGBITS SelectDownSig;
  65.   BOOL    Down;
  66. };
  67.  
  68. struct MenuSort {
  69.   struct MenuSort *Next;
  70.   struct Menu      *MenuPtr;
  71. };
  72.  
  73. /* My functioms */
  74.  
  75. VOID           InitPopUpMenu(VOID);
  76. VOID           WriteAndClose(STRPTR,ULONG);
  77. VOID           PopUpMainLoop(struct SignalData *);
  78. struct MsgPort      *MyCreatePort(STRPTR);
  79. VOID           MyDeletePort(struct MsgPort *);
  80. VOID           PopUpMenu(struct SignalData *);
  81. VOID           QueTimer(VOID);
  82. VOID           InitGlobals(VOID);
  83. BOOL           OpenMenuWindow(WORD);
  84. VOID           DrawAllMenues(VOID);
  85. VOID           HighLightItem(struct MenuItem *, struct WindowData *, UWORD);
  86. VOID           HighLightCurrItemBehind(UWORD);
  87. struct MenuItem   *FindMouseItem(struct WindowData *);
  88. VOID           SelectItem(VOID);
  89. VOID           OpenItemWindow(struct WindowData *, struct WindowData *, WORD, UWORD);
  90. VOID           CheckItemSize(struct MenuItem *, APTR);
  91. VOID           CloseItemWindow(struct WindowData *);
  92. VOID           ToggleMenu(UWORD,struct Menu *);
  93. VOID           DrawAllItems(struct WindowData *);
  94. VOID           DrawMenuItem(struct MenuItem *, struct WindowData *, UWORD);
  95. struct Menu      *FindMenuPtr(UWORD);
  96. WORDBITS       FinalSelect(VOID);
  97. VOID           CheckMark(struct MenuItem *, struct MenuItem *);
  98. UWORD           FindItemNr(struct MenuItem *, struct MenuItem *);
  99. VOID           TellWindow(WORDBITS);
  100. BOOL           BuildBitMap(struct WindowData *);
  101. VOID           ClearWindow(struct WindowData *);
  102. VOID           RemoveBitMap(struct WindowData *);
  103. BOOL           MouseInWindow(struct WindowData *);
  104. WORD           SendMessage(VOID);
  105. struct IntuiMessage *BuildIntuiMsg(struct MsgPort *, ULONG, UWORD);
  106. struct InputEvent *PopUpHandler(struct InputEvent *, struct SignalData *);
  107. VOID           MySetMenuStrip();
  108. VOID           MyClearMenuStrip();
  109. VOID           MyOnMenu();
  110. VOID           MyOffMenu();
  111. ULONG           Mystrlen(STRPTR);
  112. VOID           SwapBits(struct WindowData *);
  113. BOOL           FindWindow(VOID);
  114. VOID           FindItemWinSize(struct WindowData *, UWORD);
  115. VOID           PosItemWinLeft(struct WindowData *, struct WindowData *, UWORD);
  116. VOID           PosItemWinTop(struct WindowData *, WORD);
  117.  
  118. #define DeleteStdIO(IOReq) FreeMem((IOReq),sizeof(struct IOStdReq))
  119.  
  120.