#ifndef WORKBENCH_WORKBENCH_H
#define WORKBENCH_WORKBENCH_H
/*
** $Filename: workbench/workbench.h $
** $Release: 2.04 Includes, V37.4 $
** $Revision: 36.25 $
** $Date: 90/11/02 $
**
** workbench.library general definitions
**
** (C) Copyright 1985-1991 Commodore-Amiga, Inc.
** All Rights Reserved
*/

#ifndef EXEC_TYPES_H
#include "exec/types.h"
#endif

#ifndef EXEC_NODES_H
#include "exec/nodes.h"
#endif

#ifndef EXEC_LISTS_H
#include "exec/lists.h"
#endif

#ifndef EXEC_TASKS_H
#include "exec/tasks.h"
#endif

#ifndef INTUITION_INTUITION_H
#include "intuition/intuition.h"
#endif

#define WBDISK 1
#define WBDRAWER 2
#define WBTOOL 3
#define WBPROJECT 4
#define WBGARBAGE 5
#define WBDEVICE 6
#define WBKICK 7
#define WBAPPICON 8

struct OldDrawerData { 
 struct NewWindow dd_NewWindow; 
 LONG dd_CurrentX; 
 LONG dd_CurrentY; 
};

#define OLDDRAWERDATAFILESIZE (sizeof(struct OldDrawerData))

struct DrawerData {
 struct NewWindow dd_NewWindow; 
 LONG dd_CurrentX; 
 LONG dd_CurrentY; 
 ULONG dd_Flags; 
 UWORD dd_ViewModes; 
};

#define DRAWERDATAFILESIZE (sizeof(struct DrawerData))

struct DiskObject {
 UWORD do_Magic; 
 UWORD do_Version; 
 struct Gadget do_Gadget; 
 UBYTE do_Type;
 char * do_DefaultTool;
 char ** do_ToolTypes;
 LONG do_CurrentX;
 LONG do_CurrentY;
 struct DrawerData * do_DrawerData;
 char * do_ToolWindow; 
 LONG do_StackSize; 

};

#define WB_DISKMAGIC 0xe310 
#define WB_DISKVERSION 1 
#define WB_DISKREVISION 1 

#define WB_DISKREVISIONMASK 255

struct FreeList {
 WORD fl_NumFree;
 struct List fl_MemList;
};



#define MTYPE_PSTD 1 
#define MTYPE_TOOLEXIT 2 
#define MTYPE_DISKCHANGE 3 
#define MTYPE_TIMER 4 
#define MTYPE_CLOSEDOWN 5 
#define MTYPE_IOPROC 6 
#define MTYPE_APPWINDOW 7 
#define MTYPE_APPICON 8 
#define MTYPE_APPMENUITEM 9 
#define MTYPE_COPYEXIT 10 
#define MTYPE_ICONPUT 11 


#define GADGBACKFILL 0x0001


#define NO_ICON_POSITION (0x80000000)


#define WORKBENCH_NAME "workbench.library"


#define AM_VERSION 1

struct AppMessage {
 struct Message am_Message; 
 UWORD am_Type; 
 ULONG am_UserData; 
 ULONG am_ID; 
 LONG am_NumArgs; 
 struct WBArg *am_ArgList; 
 UWORD am_Version; 
 UWORD am_Class; 
 WORD am_MouseX; 
 WORD am_MouseY; 
 ULONG am_Seconds; 
 ULONG am_Micros; 
 ULONG am_Reserved[8]; 
};


struct AppWindow { void *aw_PRIVATE; };
struct AppIcon { void *ai_PRIVATE; };
struct AppMenuItem { void *ami_PRIVATE; };

#endif 
