[Contents] [Index] [Help] [Retrace] [browse <] [Browse >]

#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-1999 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 { /* pre V36 definition */
    struct NewWindow   dd_NewWindow;   /* args to open window */
    LONG               dd_CurrentX;    /* current x coordinate of origin */
    LONG                dd_CurrentY;    /* current y coordinate of origin */
};
/* the amount of DrawerData actually written to disk */
#define OLDDRAWERDATAFILESIZE   (sizeof(struct OldDrawerData))

struct DrawerData {
    struct NewWindow   dd_NewWindow;   /* args to open window */
    LONG               dd_CurrentX;    /* current x coordinate of origin */
    LONG               dd_CurrentY;    /* current y coordinate of origin */
    ULONG              dd_Flags;       /* flags for drawer */
    UWORD               dd_ViewModes;   /* view mode for drawer */
};
/* the amount of DrawerData actually written to disk */
#define DRAWERDATAFILESIZE      (sizeof(struct DrawerData))

struct DiskObject {
    UWORD              do_Magic; /* a magic number at the start of the file */
    UWORD              do_Version; /* a version number, so we can change it */
    struct Gadget      do_Gadget;      /* a copy of in core gadget */
    UBYTE              do_Type;
    char *             do_DefaultTool;
    char **            do_ToolTypes;
    LONG               do_CurrentX;
    LONG               do_CurrentY;
    struct DrawerData *        do_DrawerData;
    char *             do_ToolWindow;  /* only applies to tools */
    LONG                do_StackSize;   /* only applies to tools */

};

#define WB_DISKMAGIC   0xe310  /* a magic number, not easily impersonated */
#define WB_DISKVERSION 1       /* our current version number */
#define WB_DISKREVISION 1       /* our current revision number */
/* I only use the lower 8 bits of Gadget.UserData for the revision # */
#define WB_DISKREVISIONMASK     255

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

/* each message that comes into the WorkBenchPort must have a type field
** in the preceeding short.  These are the defines for this type
*/

#define MTYPE_PSTD             1       /* a "standard Potion" message */
#define MTYPE_TOOLEXIT         2       /* exit message from our tools */
#define MTYPE_DISKCHANGE       3       /* dos telling us of a disk change */
#define MTYPE_TIMER            4       /* we got a timer tick */
#define MTYPE_CLOSEDOWN                5       /* <unimplemented> */
#define MTYPE_IOPROC           6       /* <unimplemented> */
#define MTYPE_APPWINDOW                7       /* msg from an app window */
#define MTYPE_APPICON          8       /* msg from an app icon */
#define MTYPE_APPMENUITEM     9       /* msg from an app menuitem */
#define MTYPE_COPYEXIT                10      /* exit msg from copy process */
#define MTYPE_ICONPUT           11      /* msg from PutDiskObject in icon.library */

/* workbench does different complement modes for its gadgets.
** It supports separate images, complement mode, and backfill mode.
** The first two are identical to intuitions GADGIMAGE and GADGHCOMP.
** backfill is similar to GADGHCOMP, but the region outside of the
** image (which normally would be color three when complemented)
** is flood-filled to color zero.
*/
#define GADGBACKFILL    0x0001

/* if an icon does not really live anywhere, set its current position
** to here
*/
#define NO_ICON_POSITION        (0x80000000)

/* workbench now is a library.        this is it's name */
#define WORKBENCH_NAME          "workbench.library"

/* If you find am_Version >= AM_VERSION, you know this structure has
 * at least the fields defined in this version of the include file
 */
#define AM_VERSION      1

struct AppMessage {
    struct Message am_Message;        /* standard message structure */
    UWORD am_Type;            /* message type */
    ULONG am_UserData;                /* application specific */
    ULONG am_ID;              /* application definable ID */
    LONG am_NumArgs;          /* # of elements in arglist */
    struct WBArg *am_ArgList; /* the arguements themselves */
    UWORD am_Version;         /* will be AM_VERSION */
    UWORD am_Class;           /* message class */
    WORD am_MouseX;           /* mouse x position of event */
    WORD am_MouseY;           /* mouse y position of event */
    ULONG am_Seconds;         /* current system clock time */
    ULONG am_Micros;          /* current system clock time */
    ULONG am_Reserved[8];       /* avoid recompilation */
};

/*
 * The following structures are private.  These are just stub
 * structures for code compatibility...
 */
struct        AppWindow       { void *aw_PRIVATE;  };
struct        AppIcon         { void *ai_PRIVATE;  };
struct          AppMenuItem     { void *ami_PRIVATE; };

#endif  /* !WORKBENCH_WORKBENCH_H */