#ifndef __INC_POS_PINTUI_INTUMSG_H
#define __INC_POS_PINTUI_INTUMSG_H
/*******************************************************************
 Includes Release 24
 (C) Copyright 1995-1997 proDAD
     All Rights Reserved

 $AUT Holger Burkarth
 $DAT >>IntuMsg.h<<   23 Feb 1997    12:36:53 - (C) ProDAD
*******************************************************************/
#ifndef __INC_POS_PEXEC_MSGPORT_H
#include <pExec/MsgPort.h>
#endif
#ifndef __INC_POS_DEVICE_IEVENT_H
#include <pDevice/IEvent.h>
#endif



/*----------------------------------
     pIntui-Message
-----------------------------------*/
struct pOS_IntuiMessage
{
  struct pOS_Message  im_Message;
  ULONG               im_Class;    /* (enum pOS_IntuiMessageClass) */
  ULONG               im_Code;
  UWORD               im_Qualifier;
  APTR                im_IAddress;

  SLONG im_MouseX, im_MouseY; /* (pOS_DoubleClick*)&im_MouseX */
  ULONG im_Seconds,im_Micros; /* (struct pOS_TimeVal*)&im_Seconds */

  struct pOS_Window  *im_Window;
  APTR                im_Data;

}; /* more system datas */


/*----------------------------------
-----------------------------------*/
struct pOS_DoubleClick
{
  SLONG dk_MouseX, dk_MouseY;
  ULONG dk_Seconds,dk_Micros;
};



/*----------------------------------
 im_Class   =IDCMP_DragDrop
 im_Code    =IECODE_DROP_WORK
 im_IAddress=(struct pOS_Gadget*)  ( Drop-Gadget )
 im_Data    =(struct pOS_ISMDrop*)
-----------------------------------*/
struct pOS_ISMDrop
{
  struct pOS_IEDragDrop ismd_IEDD;
};





enum pOS_IntuiMessageClass /* im_Class */
{
  IDCMP_Abort=             0x80000000,

  IDCMP_SizeVerify=        0x00000001,
  IDCMP_NewSize=           0x00000002,
  IDCMP_RefreshWindow=     0x00000004,
  IDCMP_MouseButtons=      0x00000008,
  IDCMP_MouseMove=         0x00000010,
  IDCMP_GadgetDown=        0x00000020,
  IDCMP_GadgetUp=          0x00000040,
  IDCMP_GadgetAbort=       0x80000040,

  IDCMP_MenuPick=          0x00000100,
  IDCMP_CloseWindow=       0x00000200,
  IDCMP_RawKey=            0x00000400,
  IDCMP_DragDrop=          0x00000800,

  IDCMP_MenuVerify=        0x00002000,

  IDCMP_DiskInserted=      0x00008000,
  IDCMP_DiskRemoved=       0x00010000,

  IDCMP_ActiveWindow=      0x00040000,
  IDCMP_InactiveWindow=    0x00080000,
  IDCMP_UpdateGadget=      0x00100000, /* wird erst nach GadgetDown gesenden */
  IDCMP_VanillaKey=        0x00200000,
  IDCMP_IntuiTicks=        0x00400000,
  IDCMP_ChangeWindow=      0x02000000,
  IDCMP_Help=              0x04000000,

  IDCMP_Signal=            0x80000000,

  IDCMP_StdSysMsg = IDCMP_GadgetUp | IDCMP_GadgetDown | IDCMP_GadgetAbort |
                    IDCMP_RawKey   | IDCMP_VanillaKey | IDCMP_IntuiTicks  |
                    IDCMP_UpdateGadget | IDCMP_ActiveWindow |
                    IDCMP_InactiveWindow | IDCMP_DragDrop
};

/*\
*** NODE:
***
*** When cause a message like,
*** IDCMP_GadgetUp, IDCMP_GadgetDown, IDCMP_UpdateGadget, IDCMP_GadgetAbort
*** the im_Code are (enum pOS_InputEventGdUpCode).
\*/

#endif
