home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / INCLUDE / MEVDECL.H < prev    next >
Text File  |  1990-09-23  |  4KB  |  103 lines

  1. /*
  2.     mevdecl.h
  3.  
  4.     % Mouse event declarations
  5.  
  6.     11/18/88  by Ted.
  7.  
  8.     OWL 1.2
  9.     Copyright (c) 1988, by Oakland Group, Inc.
  10.     ALL RIGHTS RESERVED.
  11.  
  12.     Revision History:
  13.     -----------------
  14.     12/20/88 jmd    Changed values of MOU codes
  15.      1/10/89 jdc    Fixed mev_IsButton macros
  16.      3/10/89 ted    Moved MOU codes into scancode.h for portability
  17.      3/30/89 ted    Renamed mouevent_struct to mev_struct
  18.      5/11/89 ted    Added MEV_STARTCUR and MEV_STOPCUR messages.
  19.      9/23/90 ted    Added 'outside' flag mev element for efficiency in trapped - mouse situations.
  20. */
  21. /* -------------------------------------------------------------------------- */
  22.  
  23. typedef struct _moupos {
  24.     opcoord  x;            /* Absolute screen coordinates of mouse */
  25.     opcoord  y;
  26.     unsigned event;        /* Mouse event as defined below */
  27. } moupos_struct;
  28.  
  29. /* -------------------------------------------------------------------------- */
  30. /* Mouse event structure - it is (and should stay) like a moupos_struct with */
  31. /* a window tacked on. Most of the mev_ macros will therefore work on both */
  32. /* structures. */
  33.  
  34. typedef struct _mev {
  35.     opcoord     x;            /* Window coordinates of mouse */
  36.     opcoord     y;
  37.     unsigned     event;        /* Mouse event as defined below */
  38.  
  39.     obj_type     win;        /* Window mouse is in */
  40.     unsigned    inborder:1;
  41.     unsigned    incurrent:1;
  42.     unsigned    outside:1;    /* If trapping is on, win can get an external event */
  43. } mev_struct;
  44. /* -------------------------------------------------------------------------- */
  45.  
  46. #define MEV_MOVE            0x0001
  47. #define MEV_BUT1MOVE        0x0002
  48. #define MEV_BUT1            0x0004
  49. #define MEV_BUT2MOVE        0x0008
  50. #define MEV_BUT2            0x0010
  51. #define MEV_BUT3MOVE        0x0020
  52. #define MEV_BUT3            0x0040
  53.  
  54. /* -------------------------------------------------------------------------- */
  55. #define mev_GetWin(mev)                ((mev)->win)
  56. #define mev_GetRow(mev)                                \
  57.     opcoord_GetYRow(mev_GetY(mev),win_GetFont(mev_GetWin(mev)))
  58.  
  59. #define mev_GetCol(mev)                                \
  60.     opcoord_GetXCol(mev_GetX(mev),win_GetFont(mev_GetWin(mev)))
  61.  
  62. /* The following macros will work on mouevent_struc's or moupos_struc's */
  63. #define mev_GetX(mev)                ((mev)->x)
  64. #define mev_GetY(mev)                ((mev)->y)
  65. #define mev_GetEvent(mev)            ((mev)->event)
  66.  
  67. #define mevbmask(ev)                                \
  68.     (((ev) | ((ev) << 1)) & (MEV_BUT1 | MEV_BUT2 | MEV_BUT3))
  69.  
  70. #define mev_IsButtonDown(mev)        (mevbmask(mev_GetEvent(mev)) != 0)
  71. #define mev_IsButton1Down(mev)        ((mev_GetEvent(mev) & (MEV_BUT1 | MEV_BUT1MOVE)) != 0)
  72. #define mev_IsButton2Down(mev)        ((mev_GetEvent(mev) & (MEV_BUT2 | MEV_BUT2MOVE)) != 0)
  73. #define mev_IsButton3Down(mev)        ((mev_GetEvent(mev) & (MEV_BUT3 | MEV_BUT3MOVE)) != 0)
  74. #define mev_ClearEvent(mev)            ((mev)->event = 0xF000)
  75. #define mev_IsEventClear(mev)        ((mev)->event == 0xF000)
  76.  
  77. #define mev_ButtonGoneUp(oev, nev)                    \
  78.     (mevbmask((nev)|(oev)) > mevbmask(nev))
  79.  
  80. #define mev_ButtonGoneDown(oev, nev)                \
  81.     (mevbmask((nev)|(oev)) > mevbmask(oev))
  82.  
  83. #define mev_MovedOut(fmev, cmev, dist)        \
  84.     (oabs((cmev)->x - (fmev)->x) > (dist) || oabs((cmev)->y - (fmev)->y) > (dist))
  85.  
  86. /* -------------------------------------------------------------------------- */
  87. /* Messages a mouse handler receives when its window is not current */
  88. #define MEV_STARTOFFER        1
  89. #define MEV_OFFER            2
  90. #define MEV_ENDOFFER        3
  91.  
  92. /* Messages a mouse handler receives when its window is current */
  93. #define MEV_REQUEST            4
  94. #define MEV_STARTEVENT        5
  95. #define MEV_EVENT            6
  96. #define MEV_ENDEVENT        7
  97.  
  98. /* Messages a mouse handler receives when its window becomes current */
  99. #define MEV_STARTCUR        8
  100. #define MEV_STOPCUR            9
  101. /* -------------------------------------------------------------------------- */
  102.  
  103.