Copyright (c) Hyperion Entertainment and contributors.
DTYP IFF DataType Identification
Jump to navigation
Jump to search
DataTypes Identification
#ifndef LIBRARIES_DATATYPES_H #define LIBRARIES_DATATYPES_H /* ** $Id: datatypes.h,v 39.1 91/12/13 10:17:52 davidj Exp $ ** ** (C) Copyright 1991-1999 Amiga, Inc. ** All Rights Reserved */ #ifndef EXEC_TYPES_H #include <exec/types.h> #endif #ifndef EXEC_LISTS_H #include <exec/lists.h> #endif #ifndef EXEC_NODES_H #include <exec/nodes.h> #endif #ifndef EXEC_LIBRARIES_H #include <exec/libraries.h> #endif #ifndef LIBRARIES_IFFPARSE_H #include <libraries/iffparse.h> #endif /*****************************************************************************/ #define ID_DTYP MAKE_ID('D','T','Y','P') /*****************************************************************************/ #define ID_DTHD MAKE_ID('D','T','H','D') struct DataTypeHeader { STRPTR dth_Name; /* Descriptive name of the data type */ STRPTR dth_BaseName; /* Base name of the data type */ STRPTR dth_Pattern; /* Match pattern for file name. */ WORD *dth_Mask; /* Comparision mask */ ULONG dth_GroupID; /* Group that the DataType is in */ ULONG dth_ID; /* ID for DataType (same as IFF FORM type) */ WORD dth_MaskLen; /* Length of comparision mask */ WORD dth_Pad; /* Unused at present (must be 0) */ UWORD dth_Flags; /* Flags */ UWORD dth_Priority; /* Priority */ }; #define DTHSIZE sizeof(struct DataTypeHeader) /*****************************************************************************/ /* Basic file type */ #define DTF_TYPE_MASK 0x000F #define DTF_BINARY 0x0000 #define DTF_ASCII 0x0001 #define DTF_IFF 0x0002 #define DTF_MISC 0x0003 /* Set if case is important */ #define DTF_CASE 0x0010 /* Reserved for system use */ #define DTF_SYSTEM1 0x1000 /***************************************************************************** * * GROUP ID and ID * * This is used for filtering out objects that you don't want. For * example, you could make a filter for the ASL file requester so * that it only showed the files that were pictures, or even to * narrow it down to only show files that were ILBM pictures. * * Note that the Group ID's are in lower case, and always the first * four characters of the word. * * For ID's; If it is an IFF file, then the ID is the same as the * FORM type. If it isn't an IFF file, then the ID would be the * first four characters of name for the file type. * *****************************************************************************/ /* System file, such as; directory, executable, library, device, font, etc. */ #define GID_SYSTEM MAKE_ID ('s','y','s','t') /* Formatted or unformatted text */ #define GID_TEXT MAKE_ID ('t','e','x','t') /* Formatted text with graphics or other DataTypes */ #define GID_DOCUMENT MAKE_ID ('d','o','c','u') /* Sound */ #define GID_SOUND MAKE_ID ('s','o','u','n') /* Musical instruments used for musical scores */ #define GID_INSTRUMENT MAKE_ID ('i','n','s','t') /* Musical score */ #define GID_MUSIC MAKE_ID ('m','u','s','i') /* Still picture */ #define GID_PICTURE MAKE_ID ('p','i','c','t') /* Animated picture */ #define GID_ANIMATION MAKE_ID ('a','n','i','m') /* Animation with audio track */ #define GID_MOVIE MAKE_ID ('m','o','v','i') /*****************************************************************************/ /* A DTCD chunk contains an embedded executable that can be loaded * with InternalLoadSeg. */ #define ID_CODE MAKE_ID('D','T','C','D') /* DataTypes comparision hook context (Read-Only). This is the * argument that is passed to a custom comparision routine. */ struct DTHookContext { /* Libraries that are already opened for your use */ struct Library *dthc_SysBase; struct Library *dthc_DOSBase; struct Library *dthc_IFFParseBase; struct Library *dthc_UtilityBase; /* File context */ BPTR dthc_Lock; struct FileInfoBlock *dthc_FIB; BPTR dthc_FileHandle; struct IFFHandle *dthc_IFF; STRPTR dthc_Buffer; /* Buffer */ ULONG dthc_BufferLength; /* Length of the buffer */ }; /*****************************************************************************/ #define ID_DTTL MAKE_ID('D','T','T','L') struct Tool { UWORD tn_Which; /* Which tool is this */ UWORD tn_Flags; /* Flags */ STRPTR tn_Program; /* Application to use */ }; #define TSIZE sizeof(struct Tool) /* defines for tn_Which */ #define TW_INFO 1 #define TW_BROWSE 2 #define TW_EDIT 3 #define TW_PRINT 4 #define TW_MAIL 5 /* defines for tn_Flags */ #define TF_LAUNCH_MASK 0x000F #define TF_SHELL 0x0001 #define TF_WORKBENCH 0x0002 #define TF_RX 0x0003 /*****************************************************************************/ #ifndef DATATYPE #define DATATYPE struct DataType { struct Node dtn_Node1; /* Reserved for system use */ struct Node dtn_Node2; /* Reserved for system use */ struct DataTypeHeader *dtn_Header; /* Pointer to the DataTypeHeader */ struct List dtn_ToolList; /* List of tool nodes */ STRPTR dtn_FunctionName; /* Name of comparision routine */ ULONG dtn_Length; /* Length of the memory block */ }; #endif #define DTNSIZE sizeof(struct DataType) /*****************************************************************************/ struct ToolNode { struct Node tn_Node; /* Embedded node */ struct Tool tn_Tool; /* Embedded tool */ ULONG tn_Length; /* Length of the memory block */ }; #define TNSIZE sizeof(struct ToolNode) /*****************************************************************************/ #ifndef ID_NAME #define ID_NAME MAKE_ID('N','A','M','E') #endif #endif /* LIBRARIES_DATATYPES_H */