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

 $AUT Holger Burkarth
 $DAT >>OClass.h<<   23 Feb 1997    18:44:58 - (C) ProDAD
*******************************************************************/
#ifndef __INC_POS_PINTUI_ICLASS_H
#include <pIntui/IClass.h>
#endif
#ifndef __INC_POS_PLAYER_RECT_H
#include <pLayer/Rect.h>
#endif


/*----------------------------------
-----------------------------------*/
struct pOS_IObjectMethod
{
  ULONG  imth_Method;

  union {
    struct { /* ICLMTH_New */
            ULONG               *imnw_Pad;
      const struct pOS_TagItem  *imnw_Tags;
    } imth_New;

    /* ICLMTH_Dispose */


    struct { /* ICLMTH_Set */
      const struct pOS_IClassInfo *imst_Info;
      const struct pOS_TagItem    *imst_Tags;
    } imth_Set;


    struct { /* ICLMTH_Get */
            ULONG           imgt_ID;
            ULONG          *imgt_Variable;
    } imth_Get;


    struct { /* IOBMTH_DrawAll/Draw */
      const struct pOS_DrawInfo  *imdr_DrawInfo;
            struct pOS_RastPort  *imdr_RastPort;
      const struct pOS_Rectangle *imdr_LayBox;   /* Layout-Box */
            ULONG                 imdr_Mode;     /* (enum pOS_IObjectDrawMode) */
            ULONG                 imdr_Layout;   /* (enum pOS_IObjectClassLayout) */
            ULONG                 imdr_FrameNum; /* FrameNummer (0,1,2,...) */
      const struct pOS_Rectangle *imdr_ClipBox;  /* nur innerhalb dieser Box anzeigen (darf NULL sein) */
    } imth_Draw;


    struct { /* IOBMTH_GetIBox */
      const struct pOS_DrawInfo  *imgb_DrawInfo;
            struct pOS_RastPort  *imgb_RastPort;
            struct pOS_IBox      *imgb_IBox;
    } imth_GetIBox;


    struct { /* IOBMTH_GetObject */
               UBYTE                  imgo_Pad[8];
      __ARID__ struct pOS_DataType   *imgo_Result;
    } imth_GetObj;

  } imth_U;

};




enum pOS_IObjectDrawMode
{
  IOBDMF_Normal=        0x0000,
  IOBDMF_Selected=      0x0001,
  IOBDMF_Disabled=      0x0002,
  IOBDMF_Busy=          0x0004,
  IOBDMF_Border=        0x0008, /* Window-Border-Gad */
  IOBDMF_ActiveWindow=  0x0010, /* Window ist aktiv */
  IOBDMF_Drag=          0x0020, /* Object in DragMode */
  IOBDMF_Drop=          0x0040, /* Object in DropMode */

  IOBDMF_Update=        0x8000  /* vergleichbar mit GCLMTHRE_Update,
                                ** nur die Veränderung zeichnen
                                */
};



enum pOS_IObjectClassMethods
{
  IOBMTH_Dummy=  0x200,
  IOBMTH_DrawAll,
  IOBMTH_Draw,
  IOBMTH_GetIBox,
  IOBMTH_GetObject
};



enum pOS_IObjectClassLayout
{
  IOBLAY_HVCenter=  0x00, /* Horiz & Vert zentiert */
  IOBLAY_Left=      0x01, /*  */
  IOBLAY_Right=     0x02, /*  */
  IOBLAY_Top=       0x04, /*  */
  IOBLAY_Bottom=    0x08, /*  */

  IOBLAY_DynWidth=  0x10, /* dynamic width => always calc width, else use fix width */
  IOBLAY_DynHeight= 0x20  /*  */
};


#endif
