home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / DC-POS24.LZX / pOS / IncPOS.lzx / pIntui / GClass.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-03-18  |  16.3 KB  |  436 lines

  1. #ifndef __INC_POS_PINTUI_GCLASS_H
  2. #define __INC_POS_PINTUI_GCLASS_H
  3. /*******************************************************************
  4.  Includes Release 24
  5.  (C) Copyright 1995-1997 proDAD
  6.      All Rights Reserved
  7.  
  8.  $AUT Holger Burkarth
  9.  $DAT >>GClass.h<<   01 Mar 1997    14:53:21 - (C) ProDAD
  10. *******************************************************************/
  11. #ifndef __INC_POS_PINTUI_ICLASS_H
  12. #include <pIntui/IClass.h>
  13. #endif
  14.  
  15.  
  16. /*----------------------------------
  17. -----------------------------------*/
  18. struct pOS_GadgetMethod
  19. {
  20.   ULONG  imth_Method; /* (enum pOS_IntuiClassMethods) und (pOS_GadgetClassMethods) */
  21.  
  22.   union {
  23.     UBYTE imth_Reserved[32];   /* 24 Bytes used, 8 Bytes reserved */
  24.  
  25.     struct { /* ICLMTH_New */
  26.             ULONG                imnw_Pad;
  27.       const struct pOS_TagItem  *imnw_Tags;
  28.     } imth_New;
  29.  
  30.     /* ICLMTH_Dispose */
  31.  
  32.     struct { /* ICLMTH_Set */
  33.       const struct pOS_IClassInfo *imst_Info; /* NULL => without refresh */
  34.       const struct pOS_TagItem    *imst_Tags;
  35.     } imth_Set;
  36.  
  37.     struct { /* ICLMTH_Notify */
  38.       const struct pOS_IClassInfo *imny_Info;
  39.       const struct pOS_TagItem    *imny_Tags;
  40.             ULONG                  imny_Flags;
  41.     } imth_Notify;
  42.  
  43.     struct { /* ICLMTH_Update */
  44.       const struct pOS_IClassInfo *imud_Info;
  45.       const struct pOS_TagItem    *imud_Tags;
  46.             ULONG                  imud_Flags;
  47.     } imth_Update;
  48.  
  49.     struct { /* ICLMTH_Get */
  50.             ULONG    imgt_ID;
  51.             ULONG   *imgt_Variable;
  52.     } imth_Get;
  53.  
  54. /********************************************/
  55.  
  56.     struct { /* GCLMTH_HitTest */
  57.       const struct pOS_IClassInfo *imht_Info;
  58.             ULONG                  imht_Pad;      /* damit Mouse mit GoActive... übereinstimmt */
  59.       const struct pOS_Point      *imht_RMouse;   /* relativ zum Gadget */
  60.       const struct pOS_Point      *imht_AMouse;   /* absolut */
  61.             struct pOS_Gadget     *imht_HitGadget;
  62.             ULONG                  imht_Result;   /* => Returncode von pOS_DoIMethodA()
  63.                                                   ** wird von pOS_GadgetHitTest gesetzt
  64.                                                   */
  65.     } imth_HitTest;
  66.  
  67.  
  68.     struct { /* GCLMTH_Render */
  69.       const struct pOS_IClassInfo *imre_Info;
  70.             ULONG                  imre_Type;     /* (enum pOS_GadgetClassRender) */
  71.             ULONG                  imre_NewTick;  /* wird bei GCLMTHRE_TickFrame verwendet */
  72.             ULONG                  imre_OldTick;  /* Anzahl der IntuiTicks*100 => 1/1000 sec. */
  73.     } imth_Render;
  74.  
  75.  
  76.     struct { /* GCLMTH_GoActive */
  77.       const struct pOS_IClassInfo *imac_Info;
  78.       const struct pOS_InputEvent *imac_IE;     /* NULL => imac_RMouse/imac_AMouse sind nicht gültig */
  79.       const struct pOS_Point      *imac_RMouse;
  80.       const struct pOS_Point      *imac_AMouse;
  81.             ULONG                  imac_ResCode;  /* => im_Code  */
  82.             struct pOS_Gadget     *imac_NextActGad; /* zu aktivierendes Gadget */
  83.     } imth_GoActive;
  84.  
  85.  
  86.     struct { /* GCLMTH_HandleInput */
  87.       const struct pOS_IClassInfo *imhi_Info;
  88.       const struct pOS_InputEvent *imhi_IE;
  89.       const struct pOS_Point      *imhi_RMouse;
  90.       const struct pOS_Point      *imhi_AMouse;
  91.             ULONG                  imhi_ResCode;  /* => im_Code  */
  92.             struct pOS_Gadget     *imhi_NextActGad;
  93.     } imth_HandleInput;
  94.  
  95.  
  96.     struct { /* GCLMTH_GoInactive */
  97.       const struct pOS_IClassInfo *imia_Info;
  98.             UBYTE                  imia_Pad[12];
  99.             ULONG                  imia_ResCode;  /* => im_Code  */
  100.     } imth_GoInactive;
  101.  
  102.  
  103.     struct { /* GCLMTH_Abort */
  104.       const struct pOS_IClassInfo *imab_Info;
  105.             UBYTE                  imab_Pad[12];
  106.             ULONG                  imab_ResCode;  /* => im_Code  */
  107.             struct pOS_Gadget     *imab_NextActGad;
  108.     } imth_Abort;
  109.  
  110.  
  111.     struct { /* GCLMTH_Add */
  112.       const struct pOS_IClassInfo *imad_Info;
  113.     } imth_Add;
  114.  
  115.  
  116.     struct { /* GCLMTH_Rem */
  117.       const struct pOS_IClassInfo *imrm_Info;
  118.     } imth_Rem;
  119.  
  120.  
  121.     struct { /* GCLMTH_Layout */
  122.       const struct pOS_IClassInfo   *imly_Info;
  123.             ULONG                    imly_Flags;   /* (enum pOS_GadgetLayoutFlags) */
  124.       const struct pOS_IBox         *imly_IBox;
  125.             struct pOS_LayoutDamage *imly_LD;
  126.     } imth_Layout;
  127.  
  128.  
  129.     struct { /* GCLMTH_GetIBox */
  130.       const struct pOS_DrawInfo  *imgb_DrawInfo;
  131.             struct pOS_RastPort  *imgb_RastPort;
  132.             struct pOS_IBox      *imgb_MinIBox;
  133.             struct pOS_IBox      *imgb_MaxIBox;
  134.     } imth_GetIBox;
  135.  
  136.  
  137.     struct { /* GCLMTH_Help */
  138.       const struct pOS_IClassInfo *imhp_Info;
  139.             CHAR                  *imhp_String;
  140.       const struct pOS_Point      *imhp_RMouse;
  141.       const struct pOS_Point      *imhp_AMouse;
  142.             UWORD                  imhp_StringSize;
  143.             UWORD                  imhp_Level;      /* 0,1,2... */
  144.     } imth_Help;
  145.  
  146.  
  147.     struct { /* GCLMTH_Msg */
  148.       const struct pOS_IClassInfo   *immg_Info;
  149.             struct pOS_IntuiMessage *immg_Msg;
  150.     } imth_Msg;
  151.  
  152.  
  153.     struct { /* GCLMTH_WinBorder */
  154.       const struct pOS_IClassInfo   *imwb_Info;
  155.             struct pOS_Region       *imwb_Region;
  156.     } imth_WBor;
  157.  
  158.  
  159.     struct { /* GCLMTH_BeginDrag */
  160.       const struct pOS_IClassInfo   *imbd_Info;
  161.       const struct pOS_InputEvent   *imbd_IE;
  162.       const struct pOS_Point        *imbd_RMouse;
  163.       const struct pOS_Point        *imbd_AMouse;
  164.             struct pOS_Drag         *imbd_Result; /* wird vom Handler erzeugt und
  165.                                                   ** in GCLMTH_EndDrag gelöscht.
  166.                                                   */
  167.             struct pOS_Point        *imbd_Offset; /* PixelOffset, default={0,0} */
  168.     } imth_BDrag;
  169.  
  170.  
  171.     struct { /* GCLMTH_EndDrag */
  172.             UBYTE             imed_Pad[16];
  173.             struct pOS_Drag  *imed_Drag;
  174.     } imth_EDrag;
  175.  
  176.  
  177.     struct { /* GCLMTH_DropTest */
  178.       const struct pOS_IClassInfo *imdt_Info;
  179.             ULONG                  imdt_Pad;
  180.       const struct pOS_Point      *imdt_RMouse;   /* relativ zum Gadget */
  181.       const struct pOS_Point      *imdt_AMouse;   /* absolut */
  182.             struct pOS_Gadget     *imdt_HitGadget;
  183.             ULONG                  imdt_Result;  /* => Returncode von pOS_DoIMethodA()
  184.                                                  ** wird von pOS_GadgetDropTest gesetzt
  185.                                                  ** siehe GCLMTHR_DropHit */
  186.     } imth_DropTest;
  187.  
  188.  
  189.  
  190.     struct { /* GCLMTH_ActiveDrop */
  191.       const struct pOS_IClassInfo *imda_Info;
  192.       const struct pOS_InputEvent *imda_IE;
  193.       const struct pOS_Point      *imda_RMouse;
  194.       const struct pOS_Point      *imda_AMouse;
  195.             struct pOS_DragList   *imda_DragList;
  196.     } imth_ActiveDrop;
  197.  
  198.  
  199.     struct { /* GCLMTH_HandleDrop */
  200.       const struct pOS_IClassInfo *imhd_Info;
  201.       const struct pOS_InputEvent *imhd_IE;
  202.       const struct pOS_Point      *imhd_RMouse;
  203.       const struct pOS_Point      *imhd_AMouse;
  204.             struct pOS_DragList   *imhd_DragList;
  205.     } imth_HandleDrop;
  206.  
  207.  
  208.     struct { /* GCLMTH_InactiveDrop */
  209.       const struct pOS_IClassInfo *imid_Info;
  210.             UBYTE                  imid_Pad[12];
  211.             struct pOS_DragList   *imid_DragList;
  212.     } imth_InactiveDrop;
  213.  
  214.  
  215.     struct { /* GCLMTH_AbortDrop */
  216.       const struct pOS_IClassInfo *imbb_Info;
  217.             UBYTE                  imbb_Pad[12];
  218.             struct pOS_DragList   *imbb_DragList;
  219.     } imth_AbortDrop;
  220.  
  221.  
  222.     struct { /* GCLMTH_GetQuickDropObject */
  223.       const    struct pOS_IEDragDrop *imgqo_IEDD;
  224.                UBYTE                  imgqo_Pad[12];
  225.       __ARID__ struct pOS_DataType   *imgqo_Result;
  226.     } imth_GetQObj;
  227.  
  228.  
  229.     struct { /* GCLMTH_GetDropObject */
  230.       const    struct pOS_IEDragDrop *imgo_IEDD;
  231.                UBYTE                  imgo_Pad[12];
  232.       __ARID__ struct pOS_DataType   *imgo_Result;
  233.     } imth_GetObj;
  234.  
  235.  
  236.     struct { /* GCLMTH_SetDropObject */
  237.       const struct pOS_IClassInfo *imso_Info;    /* NULL => without refresh */
  238.       const struct pOS_InputEvent *imso_IE;      /* NULL => ignore */
  239.       const struct pOS_IEDragDrop *imso_IEDD;
  240.             UBYTE                  imso_Pad[4];
  241.       const struct pOS_DataType   *imso_Object;
  242.     } imth_SetObj;
  243.  
  244.  
  245.     struct { /* GCLMTH_HelpTest */
  246.       const struct pOS_IClassInfo *imhs_Info;
  247.             ULONG                  imhs_Pad;
  248.       const struct pOS_Point      *imhs_RMouse;   /* relativ zum Gadget */
  249.       const struct pOS_Point      *imhs_AMouse;   /* absolut */
  250.             struct pOS_Gadget     *imhs_HitGadget;
  251.             ULONG                  imhs_Result;
  252.     } imth_HelpTest;
  253.  
  254.  
  255.     struct { /* GCLMTH_DragTest */
  256.       const struct pOS_IClassInfo *imdt_Info;
  257.             ULONG                  imdt_Pad;
  258.       const struct pOS_Point      *imdt_RMouse;   /* relativ zum Gadget */
  259.       const struct pOS_Point      *imdt_AMouse;   /* absolut */
  260.             struct pOS_Gadget     *imdt_HitGadget;
  261.             ULONG                  imdt_Result;
  262.     } imth_DragTest;
  263.  
  264.  
  265.     struct { /* GCLMTH_PopUp */
  266.       const struct pOS_IClassInfo *impo_Info;
  267.             SLONG                  impo_Mode;  /* 1==start, 0==end, -1==abort */
  268.     } imth_PopUp;
  269.  
  270.  
  271.   } imth_U;
  272.  
  273. };
  274.  
  275.  
  276. enum pOS_GadgetClassRender /** imre_Type **/
  277. {
  278.   GCLMTHRE_Update=1,    /* 1 incremental update */
  279.   GCLMTHRE_Redraw,      /*   redraw gadget  */
  280.   GCLMTHRE_Toggle,      /*   toggle highlight */
  281.   GCLMTHRE_TickFrame,   /*   next Frame# */
  282.   GCLMTHRE_ToggleDrop,  /* 5 toggle drop-highlight */
  283.   GCLMTHRE_ToggleFocus, /*   toggle focus-highlight */
  284. };
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292. enum pOS_GadgetClassResult      /* Return-Wert vom Gadget-Dispatcher */
  293. {
  294.   GCLMTHR_None=0,
  295.  
  296.   GCLMTHR_Activate=     0x0001, /* Zeigt an, daß das Gadget aktiv sein soll.
  297.                                 ** Wird bei GCLMTH_GoActive oder GCLMTH_HandleInput
  298.                                 ** das Bit gelöscht, wird pIntui keine Events ans
  299.                                 ** Gadget schicken.
  300.                                 */
  301.   GCLMTHR_AbortIE=      0x0002, /* InputEvent wird nicht weitergereicht,
  302.                                 ** IE bleibt gültig. Dies hat zur Folge,
  303.                                 ** alle nachkommenden Handler diesen Event
  304.                                 ** nie bekommen.
  305.                                 */
  306.   GCLMTHR_GadgetHit=    0x0004, /* wird in GCLMTH_HitTest zurückgegeben,
  307.                                 ** fall der Mausklick im Gadget liegt und weiter
  308.                                 ** bearbeitet werden soll. pIntui wird dann ein
  309.                                 ** GCLMTH_GoActive auslösen, auf das das Gadget
  310.                                 ** dann Aggieren kann.
  311.                                 */
  312.   GCLMTHR_InputDone=    0x0004, /* InputHandle beenden.
  313.                                 ** Dieses Bit hat zur Folge, daß ein IECLASS_GADGETUP
  314.                                 ** Event ausgelöst wird. Bei einem GACT_RelVerify-Gadget
  315.                                 ** wird mittels GCLMTHR_Activate entschieden, ob ein
  316.                                 ** IECLASS_GADGETUP erzeugt wird. Ist GCLMTHR_Activate
  317.                                 ** nicht gesetzt, verliert das Gadget immer den
  318.                                 ** Eingabefocus (GACT_ActiveGadget wird gelöscht).
  319.                                 */
  320.   GCLMTHR_DropHit=      0x0004, /* Wird in GCLMTH_DropTest zurückgegeben.
  321.                                 ** Das Gadget signalisiert hiermit, daß ein Drag-
  322.                                 ** Object abgelegt werden kann.
  323.                                 */
  324.   GCLMTHR_DropDone=     0x0004, /* InputHandle beenden.
  325.                                 ** Der User hat das Drag-Objekt abgelegt.
  326.                                 */
  327.  
  328.   GCLMTHR_DragHit=      0x0008, /* wird in GCLMTH_DragTest zurückgegeben,
  329.                                 ** falls ein Drag möglich ist.
  330.                                 ** Ist das Bit gesetzt, so wird gegb. ein
  331.                                 ** GCLMTH_BeginDrag ausgelöst.
  332.                                 */
  333.   GCLMTHR_HelpHit=      0x0004, /* wird in GCLMTH_HelpTest zurückgegeben */
  334.  
  335.  
  336.   GCLMTHR_NextActive=   0x0010,
  337.   GCLMTHR_PrevActive=   0x0020,
  338.  
  339.   GCLMTHR_DoWRefresh=   0x0040, /* Win-Refresh auslösen */
  340.   GCLMTHR_DoGRefresh=   0x0080, /* Gadget-Refresh auslösen */
  341.   GCLMTHR_UpdateGadget= 0x0100, /* Gadget wurde verändert (IECLASS_UPDATEGADGET) */
  342.   GCLMTHR_GadgetAbort=  0x0200, /* */
  343.  
  344.  
  345. /****** GCLMTH_Msg *****/
  346.   GCLMTHR_NoneMsg = 0x00,       /* Msg wurde nicht bearbeitet */
  347.   GCLMTHR_DoneMsg = 0x01,       /* Msg ist bearbeitet und darf nicht an andere
  348.                                 ** Gadgets weitergereicht werden.
  349.                                 */
  350.   GCLMTHR_NoUsed  = 0x40,       /* Msg wurde vom Erzeugen-Gadget erkannt, konnte
  351.                                 ** aber nicht verwendet werden. Damit eine Msg nicht
  352.                                 ** an weitere Gadget zur Bearbeitung weitergereicht
  353.                                 ** wird, dient _NoUsed als Marke. (dient der verkürzten Suche)
  354.                                 */
  355.   GCLMTHR_NewMsg  = 0x80,       /* Msg erneut verschicken. Die Msg wurde modifiziert
  356.                                 ** und soll abermals als IDCMP-Message verschickt
  357.                                 ** werden.
  358.                                 */
  359.  
  360. };
  361.  
  362.  
  363.  
  364.  
  365. enum pOS_GadgetClassMethods
  366. {
  367.   GCLMTH_Dummy=  0x01,
  368.  
  369.   GCLMTH_HitTest,       /* Prüft, ob ein Gadgetklick im Gadget liegt */
  370.   GCLMTH_Render,        /* Gadget zeichnen (je noch Modus) */
  371.   GCLMTH_GoActive,      /* Gadget bekommt den Eingabefokus */
  372.   GCLMTH_HandleInput,   /*5 Gadget bekommt einen Inputevent */
  373.   GCLMTH_GoInactive,    /* Dem Gadget wird der Eingabefokus entzogen. */
  374.   GCLMTH_Help,          /* Help-String wird erstellt */
  375.   GCLMTH_Abort,         /* Der User hat die rechte Maustaste gerückt.
  376.                         ** Aktuell laufende Gadget-Aktion abbrechnen.
  377.                         ** Das Gadget verliert den Eingabefokus.
  378.                         */
  379.   GCLMTH_Add,           /* Gadget wird einem Window zugeordnet =>
  380.                         ** Info->ici_Window ist gültig gesetzt.
  381.                         ** siehe GFLG_UseMthAddRem
  382.                         */
  383.   GCLMTH_Rem,           /*10 Gadget wird aus dem Window entfernt */
  384.   GCLMTH_Layout,        /* Gadgets werden vom System-Layouter ausgerichtet.
  385.                         ** Alle Members der Gadget-Group werden immer über
  386.                         ** GCLMTH_Layout ausgerichtet.
  387.                         ** siehe GFLG_UseMthLayout
  388.                         */
  389.   GCLMTH_GetIBox,       /* Ermittlung der Größe vom Gadget */
  390.   GCLMTH_Msg,           /* Zweite Ebene der Nachrichtenauswertung.
  391.                         ** Mittels pOS_SysIMessage() gelangen IDCMPs
  392.                         ** zu den Gadgets
  393.                         */
  394.   GCLMTH_WinBorder,     /* Border-Gadgets aus dem Border herausschneiden. */
  395.   GCLMTH_BeginDrag,     /*15 Das Gadget wird aufgefordert ein Drag-Objekt bereit-
  396.                         ** zustellen.
  397.                         */
  398.   GCLMTH_EndDrag,       /* Drag-Objekt löschen */
  399.   GCLMTH_DropTest,      /* Es wird geprüft, ob ein Drag-Objekt abgelegt (drop)
  400.                         ** werden kann.
  401.                         */
  402.   GCLMTH_ActiveDrop,    /* Im Gadget kann ein Objekt abgelegt werden. */
  403.   GCLMTH_HandleDrop,    /* War das Gadget mit GCLMTH_ActiveDrop einverstanden,
  404.                         ** so werden alle InputEvents im Drop-Vorgang ans Gadget
  405.                         ** weitergegeben.
  406.                         */
  407.   GCLMTH_InactiveDrop,  /* Das Gadget muß ab jetzt nicht mehr aus Drop achten. */
  408.   GCLMTH_AbortDrop,     /* Drop-Vorgang wurde abgebrochen => rechte Maustaste */
  409.   GCLMTH_GetQuickDropObject,/* DataType-Objekt aus input.task erzeugen
  410.                         (kann verweigert werden)
  411.                         */
  412.   GCLMTH_GetDropObject, /* DataType-Objekt aus dem Anwerder-Prozeß heraus erzeugen. */
  413.  
  414.   GCLMTH_SetDropObject, /* Return von GCLMTHR_InputDone bedeutet, Drop hat
  415.                         ** funktioniert.
  416.                         */
  417.   GCLMTH_HelpTest,      /* Prüft, ob die Maus im Gadget liegt, um ein Bubble zu erzeugen */
  418.   GCLMTH_DragTest,      /* */
  419.   GCLMTH_PopUp,
  420. };
  421.  
  422.  
  423.  
  424. enum pOS_GadgetLayoutFlags
  425. {
  426.   GCLMTHLYF_ReSize   = 0x0001, /* Window-Resize */
  427.   GCLMTHLYF_AddGList = 0x0002, /* pOS_AddGadget() or pOS_AddGadgets() */
  428.  
  429.   GCLMTHLYF_Mask     = 0x000f, /* Work-Type-Mask */
  430.  
  431.   GCLMTHLYF_LD       = 0x0100, /* perform imly_LD (zuvor wird pOS_LockLayerInfo() aufgerufen)*/
  432.   GCLMTHLYF_SizeAbort= 0x0200, /* Bearbeitung wird beim ReSize sofort abgebrochen */
  433. };
  434.  
  435. #endif
  436.