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

 $AUT Holger Burkarth
 $DAT >>Menu.h<<   09 Jan 1997    09:42:31 - (C) ProDAD
*******************************************************************/
#ifndef __INC_POS_PEXEC_LIST_H
#include <pExec/List.h>
#endif
#ifndef __INC_POS_PLAYER_RECT_H
#include <pLayer/Rect.h>
#endif


/*----------------------------------
-----------------------------------*/
struct pOS_MenuTag
{
  UBYTE              mt_Type;          /* (enum pOS_MenuTagType) */
  UBYTE              mt_Pad;
  union {
    const CHAR      *mt_Lable;         /* Menu's lable */
  } mt_U;

  const CHAR        *mt_CommKey;       /* MenuItem Command Key Equiv */
  UWORD              mt_Flags;         /* (enum pOS_MenuItemFlags) */
  ULONG              mt_MutualExclude; /* MenuItem MutualExclude word */
  ULONG              mt_UserData[2];
  UBYTE              mt_Reserved[12];
  const struct pOS_TagItem *mt_Tags;
};


enum pOS_MenuTagType /* mt_Type */
{
  MENUTAGTYP_End=0,

  MENUTAGTYP_Title=1,
  MENUTAGTYP_Item,
  MENUTAGTYP_Sub,
  MENUTAGTYP_ItemBar,
  MENUTAGTYP_SubBar
};


/*----------------------------------
-----------------------------------*/
struct pOS_MenuNum
{
  union {
    ULONG men_Num;
    UBYTE men_Pck[3];  /* Index => (enum pOS_MenuNumPck) */
  } men_U;
};


enum pOS_MenuNumPck
{
  MENNUPCK_Title=0,
  MENNUPCK_Item,
  MENNUPCK_Sub
};


/*----------------------------------
-----------------------------------*/
struct pOS_MenuList
{
  struct pOS_ExList ml_List;
}; /* system datas */


/*----------------------------------
-----------------------------------*/
struct pOS_MenuItem
{
  struct pOS_ExNode    mi_Node;

  SWORD                mi_LeftEdge;
  SWORD                mi_TopEdge;
  UWORD                mi_Width;
  UWORD                mi_Height;

  ULONG                mi_Flags;       /* (enum pOS_MenuItemFlags) */
  ULONG                mi_UserData[2];

  struct pOS_IntuiObj *mi_Render;
  struct pOS_IntuiObj *mi_Select;

/*---------------------------------------------*/
  struct pOS_ExList    mi_MembList;    /* Members */
  struct pOS_MenuItem *mi_Parent;

  ULONG                mi_MutualExclude;
  UWORD                mi_NextSelect;

/** SYSTEM-DATAS **/
};



enum pOS_MenuItemFlags /* mi_Flags */
{

  MENUITF_Disabled    = 0x0008,
  MENUITF_Hook        = 0x0010, /* Menu ist kann abgehakt werden */
  MENUITF_Toggle      = 0x0020, /* Menu-Haken wechselt autom. ON/OFF */
  MENUITF_IsChecked   = 0x0040  /* Haken ist gesetzt */
};




#endif
