home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / amiga / utility / misc / toolmana.lha / ToolManager / Source / library / ToolManagerLib.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-09-26  |  6.4 KB  |  212 lines

  1. /*
  2.  * ToolManagerLib.h  V2.0
  3.  *
  4.  * shared library main include file
  5.  *
  6.  * (c) 1990-1992 Stefan Becker
  7.  */
  8.  
  9. /* System include files */
  10. #include <exec/types.h>
  11. #include <exec/libraries.h>
  12. #include <exec/memory.h>
  13. #include <dos/dos.h>
  14. #include <dos/dostags.h>
  15. #include <devices/timer.h>
  16. #include <graphics/gfxmacros.h>
  17. #include <intuition/intuitionbase.h>
  18. #include <libraries/iffparse.h>
  19. #include <libraries/locale.h>
  20. #include <libraries/toolmanager.h>
  21. #include <prefs/prefhdr.h>
  22. #include <rexx/errors.h>
  23. #include <workbench/workbench.h>
  24.  
  25. /* System function prototypes */
  26. #define IntuitionBase_DECLARED
  27. #include <clib/alib_protos.h>
  28. #include <clib/commodities_protos.h>
  29. #include <clib/diskfont_protos.h>
  30. #include <clib/dos_protos.h>
  31. #include <clib/exec_protos.h>
  32. #include <clib/gadtools_protos.h>
  33. #include <clib/graphics_protos.h>
  34. #include <clib/icon_protos.h>
  35. #include <clib/iffparse_protos.h>
  36. #include <clib/intuition_protos.h>
  37. #include <clib/locale_protos.h>
  38. #include <clib/rexxsyslib_protos.h>
  39. #include <clib/utility_protos.h>
  40. #include <clib/wb_protos.h>
  41.  
  42. /* ANSI C include files */
  43. #include <stdlib.h>
  44. #include <string.h>
  45.  
  46. /* Compiler specific include files */
  47. #include <lists.h>     /* GetHead() et al. */
  48.  
  49. /* Project specific include files */
  50. #include "WBStart.h"
  51. #undef STRINGARRAY
  52. #include "/locale/toolmanager.h"
  53. #include "/prefs/ToolManagerPrefs.h"
  54.  
  55. /* Library <-> Handler IPC commands */
  56. #define TMIPC_AllocTMHandle  0
  57. #define TMIPC_FreeTMHandle   1
  58. #define TMIPC_CreateTMObject 2
  59. #define TMIPC_DeleteTMObject 3
  60. #define TMIPC_ChangeTMObject 4
  61.  
  62. /* Image object activation commands */
  63. #define IOC_DEACTIVE 1
  64. #define IOC_ACTIVE   2
  65. #define IOC_FULLANIM 3
  66. #define IOC_CONTANIM 4
  67.  
  68. /* Menu IDs */
  69. #define MENU_CLOSE 0
  70. #define MENU_QUIT  1
  71.  
  72. /* Data structures */
  73. struct TMHandle {
  74.                  struct Message  tmh_Msg;      /* Library <-> Handler IPC */
  75.                  UBYTE           tmh_Command;  /* Library <-> Handler IPC */
  76.                  UBYTE           tmh_Type;     /* object type */
  77.                  char           *tmh_Object;   /* object name */
  78.                  struct TagItem *tmh_Tags;     /* object parameters */
  79.                  struct List     tmh_ObjectLists[TMOBJTYPES];
  80.                 };
  81.  
  82. struct TMObject {
  83.                  struct MinNode  tmo_Node;
  84.                  struct List     tmo_Links;
  85.                  char           *tmo_Name;
  86.                  UBYTE           tmo_Type;
  87.                  UBYTE           tmo_Pad;
  88.                  /* will be extended different for each object type */
  89.                 };
  90.  
  91. struct TMLink {
  92.                struct MinNode   tml_Node;
  93.                ULONG            tml_Size;     /* size of structure */
  94.                struct TMObject *tml_Linked;   /* linked object */
  95.                struct TMObject *tml_LinkedTo; /* obj. is linked to this obj. */
  96.                void            *tml_Active;   /* linked object is active */
  97.                /* will be extended different for each object type */
  98.               };
  99.  
  100. struct TMLinkImage { /* a link to an Image object */
  101.                     struct TMLink    tmli_Link;
  102.                     struct RastPort *tmli_RastPort; /* Draw images here */
  103.                     UWORD            tmli_LeftEdge; /* (x,y) in RastPort */
  104.                     UWORD            tmli_TopEdge;
  105.                     UWORD            tmli_Width;    /* Image size */
  106.                     UWORD            tmli_Height;
  107.                     struct Image    *tmli_Normal;
  108.                     struct Image    *tmli_Selected;
  109.                    };
  110.  
  111. struct TMTimerReq {
  112.                    struct timerequest  tmtr_Request;
  113.                    struct TMLink      *tmtr_Link;
  114.                   };
  115.  
  116. /* Library internal function prototypes */
  117. /* config.c */
  118. void ReadConfig(void);
  119. void FreeConfig(void);
  120.  
  121. /* dockobj.c */
  122. void HandleIDCMPEvents(void);
  123.  
  124. /* execobj.c */
  125. BOOL CopyPathList(struct PathList **pla, struct PathList **plc,
  126.                   struct PathList *oldpl);
  127. void FreePathList(struct PathList *pla);
  128.  
  129. /* handler.c */
  130. __geta4 void HandlerEntry(void);
  131.  
  132. /* locale.c */
  133. void GetLocale(void);
  134. void FreeLocale(void);
  135.  
  136. /* objects.c */
  137. BOOL InternalCreateTMObject(struct TMHandle *handle, char *object, ULONG type,
  138.                             struct TagItem *tags);
  139. BOOL CallDeleteTMObject(struct TMObject *tmobj);
  140. BOOL InternalDeleteTMObject(struct TMHandle *handle, char *object);
  141. BOOL InternalChangeTMObject(struct TMHandle *handle, char *object,
  142.                             struct TagItem *tags);
  143. struct TMObject *AllocateTMObject(ULONG size);
  144. struct TMLink *AddLinkTMObject(struct TMHandle *handle, char *object,
  145.                                ULONG type, struct TMObject *linkedto);
  146. void RemLinkTMObject(struct TMLink *tml);
  147. void DeleteAllLinksTMObject(struct TMObject *tmobj);
  148. void CallActivateTMObject(struct TMLink *tml, void *args);
  149.  
  150. /* readiff.c */
  151. struct TMImageData *ReadIFFData(char *name);
  152. void FreeIFFData(struct TMImageData *tmid);
  153.  
  154. /* rexx.c */
  155. BOOL SendARexxCommand(char *command, ULONG len);
  156.  
  157. /* safety.c */
  158. void SafeDeleteCxObjAll(struct CxObj *cxobj, struct TMLink *tml);
  159. void SafeRemoveAppMenuItem(void *appmenu, struct TMLink *tml);
  160. void SafeRemoveAppIcon(void *appicon, struct TMLink *tml);
  161. void SafeRemoveAppWindow(void *appwin, struct TMLink *tml);
  162.  
  163. /* tmhandle.c */
  164. BOOL InternalAllocTMHandle(struct TMHandle *handle);
  165. BOOL InternalFreeTMHandle(struct TMHandle *handle);
  166.  
  167. /* workbench.c */
  168. BOOL GetWorkbench(void);
  169. void FreeWorkbench(void);
  170.  
  171. /* Global data */
  172. extern struct MsgPort *LibraryPort;
  173. extern struct MsgPort *DummyPort;
  174. extern struct MsgPort *IDCMPPort;
  175. extern struct MsgPort *TimerPort;
  176. extern struct MsgPort *AppMsgPort;
  177. extern struct MsgPort *BrokerPort;
  178. extern struct timerequest *deftimereq;
  179. extern struct TMHandle *PrivateTMHandle;
  180. extern CxObj *Broker;
  181. extern struct PathList *GlobalPath;
  182. extern struct Library *IFFParseBase;
  183. extern struct IntuitionBase *IntuitionBase;
  184. extern BOOL Closing;
  185. extern struct NewBroker BrokerData;
  186. extern struct NewMenu DockMenu[];
  187. extern char PrefsFileName[];
  188. extern char DefaultNoName[];
  189. extern char DefaultDirName[];
  190. extern char DefaultOutput[];
  191. extern char DefaultPortName[];
  192.  
  193. /* Global defines */
  194. #define TMLIBDATE     "26.9.1992"
  195. #define TMVERSION     "2.0"
  196. #define TMLIBREVISION 0
  197. #define TMCRYEAR      "1990-92"
  198.  
  199. #ifdef DEBUG
  200. __stkargs void kputs(char *);
  201. __stkargs char kgetc(void);
  202. __stkargs void kprintf(char *,...);
  203.  
  204. #define DEBUG_PUTSTR(a) kputs(a);
  205. #define DEBUG_GETCHR    kgetc();
  206. #define DEBUG_PRINTF(a,b)  kprintf(a,b);
  207. #else
  208. #define DEBUG_PUTSTR(a)
  209. #define DEBUG_GETCHR
  210. #define DEBUG_PRINTF(a,b)
  211. #endif
  212.