|
@@ -0,0 +1,1475 @@
|
|
|
+{
|
|
|
+ This file is part of the Free Pascal run time library.
|
|
|
+ Copyright (c) 2005 Karoly Balogh
|
|
|
+
|
|
|
+ datatypes.library interface unit for MorphOS/PowerPC
|
|
|
+
|
|
|
+ Based on work of Nils Sjoholm member of the Amiga RTL
|
|
|
+ development team.
|
|
|
+
|
|
|
+ MorphOS port was done on a free Pegasos II/G4 machine
|
|
|
+ provided by Genesi S.a.r.l. <www.genesi.lu>
|
|
|
+
|
|
|
+ See the file COPYING.FPC, included in this distribution,
|
|
|
+ for details about the copyright.
|
|
|
+
|
|
|
+ This program is distributed in the hope that it will be useful,
|
|
|
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
+
|
|
|
+ **********************************************************************}
|
|
|
+{$INLINE ON}
|
|
|
+{$PACKRECORDS 2}
|
|
|
+unit datatypes;
|
|
|
+
|
|
|
+interface
|
|
|
+
|
|
|
+uses exec, doslib, intuition, utility,
|
|
|
+ graphics{, iffparse, amigaprinter, prtbase};
|
|
|
+
|
|
|
+const
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+ ID_DTYP = 1146378576;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+ ID_DTHD = 1146374212;
|
|
|
+
|
|
|
+Type
|
|
|
+ pDataTypeHeader = ^tDataTypeHeader;
|
|
|
+ tDataTypeHeader = record
|
|
|
+ dth_Name, { Descriptive name of the data type }
|
|
|
+ dth_BaseName, { Base name of the data type }
|
|
|
+ dth_Pattern : PChar; { Match pattern for file name. }
|
|
|
+ dth_Mask : Pointer; { Comparision mask }
|
|
|
+ dth_GroupID, { Group that the DataType is in }
|
|
|
+ dth_ID : longword; { ID for DataType (same as IFF FORM type) }
|
|
|
+ dth_MaskLen, { Length of comparision mask }
|
|
|
+ dth_Pad : smallint; { Unused at present (must be 0) }
|
|
|
+ dth_Flags, { Flags }
|
|
|
+ dth_Priority : WORD; { Priority }
|
|
|
+ end;
|
|
|
+
|
|
|
+const
|
|
|
+ DTHSIZE = 32;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+{ Basic type }
|
|
|
+ DTF_TYPE_MASK = $000F;
|
|
|
+ DTF_BINARY = $0000;
|
|
|
+ DTF_ASCII = $0001;
|
|
|
+ DTF_IFF = $0002;
|
|
|
+ DTF_MISC = $0003;
|
|
|
+
|
|
|
+{ Set if case is important }
|
|
|
+ DTF_CASE = $0010;
|
|
|
+
|
|
|
+{ Reserved for system use }
|
|
|
+ DTF_SYSTEM1 = $1000;
|
|
|
+
|
|
|
+{****************************************************************************
|
|
|
+ *
|
|
|
+ * 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. }
|
|
|
+ GID_SYSTEM = 1937339252;
|
|
|
+
|
|
|
+{ Formatted or unformatted text }
|
|
|
+ GID_TEXT = 1952807028;
|
|
|
+
|
|
|
+{ Formatted text with graphics or other DataTypes }
|
|
|
+ GID_DOCUMENT = 1685021557;
|
|
|
+
|
|
|
+{ Sound }
|
|
|
+ GID_SOUND = 1936684398;
|
|
|
+
|
|
|
+{ Musical instruments used for musical scores }
|
|
|
+ GID_INSTRUMENT = 1768846196;
|
|
|
+
|
|
|
+{ Musical score }
|
|
|
+ GID_MUSIC = 1836413801;
|
|
|
+
|
|
|
+{ Still picture }
|
|
|
+ GID_PICTURE = 1885954932;
|
|
|
+
|
|
|
+{ Animated picture }
|
|
|
+ GID_ANIMATION = 1634625901;
|
|
|
+
|
|
|
+{ Animation with audio track }
|
|
|
+ GID_MOVIE = 1836021353;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+{ A code chunk contains an embedded executable that can be loaded
|
|
|
+ * with InternalLoadSeg. }
|
|
|
+ ID_CODE = 1146372932;
|
|
|
+
|
|
|
+Type
|
|
|
+{ DataTypes comparision hook context (Read-Only). This is the
|
|
|
+ * argument that is passed to a custom comparision routine. }
|
|
|
+
|
|
|
+ pDTHookContext = ^tDTHookContext;
|
|
|
+ tDTHookContext = record
|
|
|
+ { Libraries that are already opened for your use }
|
|
|
+ dthc_SysBase,
|
|
|
+ dthc_DOSBase,
|
|
|
+ dthc_IFFParseBase,
|
|
|
+ dthc_UtilityBase : pLibrary;
|
|
|
+
|
|
|
+ { File context }
|
|
|
+ dthc_Lock : longword; { Lock on the file }
|
|
|
+ dthc_FIB : pFileInfoBlock; { Pointer to a FileInfoBlock }
|
|
|
+ dthc_FileHandle : longword; { Pointer to the file handle (may be NULL) }
|
|
|
+{$WARNING FIX ME!!! IFF handle type}
|
|
|
+// dthc_IFF : pIFFHandle; { Pointer to an IFFHandle (may be NULL) }
|
|
|
+ dthc_IFF : Pointer; { Pointer to an IFFHandle (may be NULL) }
|
|
|
+ dthc_Buffer : PChar; { Buffer }
|
|
|
+ dthc_BufferLength : longword; { Length of the buffer }
|
|
|
+ end;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+const
|
|
|
+ ID_TOOL = 1146377292;
|
|
|
+
|
|
|
+Type
|
|
|
+ pTool = ^tTool;
|
|
|
+ tTool = record
|
|
|
+ tn_Which, { Which tool is this }
|
|
|
+ tn_Flags : WORD; { Flags }
|
|
|
+ tn_Program : PChar; { Application to use }
|
|
|
+ end;
|
|
|
+
|
|
|
+const
|
|
|
+ TSIZE = 8;
|
|
|
+
|
|
|
+{ defines for tn_Which }
|
|
|
+ TW_INFO = 1;
|
|
|
+ TW_BROWSE = 2;
|
|
|
+ TW_EDIT = 3;
|
|
|
+ TW_PRINT = 4;
|
|
|
+ TW_MAIL = 5;
|
|
|
+
|
|
|
+{ defines for tn_Flags }
|
|
|
+ TF_LAUNCH_MASK = $000F;
|
|
|
+ TF_SHELL = $0001;
|
|
|
+ TF_WORKBENCH = $0002;
|
|
|
+ TF_RX = $0003;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+ ID_TAGS = 1146377287;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+Type
|
|
|
+ pDataType = ^tDataType;
|
|
|
+ tDataType = record
|
|
|
+ dtn_Node1, { Reserved for system use }
|
|
|
+ dtn_Node2 : tNode; { Reserved for system use }
|
|
|
+ dtn_Header : pDataTypeHeader; { Pointer to the DataTypeHeader }
|
|
|
+ dtn_ToolList: tList; { List of tool nodes }
|
|
|
+ dtn_FunctionName : PChar; { Name of comparision routine }
|
|
|
+ dtn_AttrList : pTagItem; { Object creation tags }
|
|
|
+ dtn_Length : longword; { Length of the memory block }
|
|
|
+ end;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+ pToolNode = ^tToolNode;
|
|
|
+ tToolNode = Record
|
|
|
+ tn_Node : tNode; { Embedded node }
|
|
|
+ tn_Tool : tTool; { Embedded tool }
|
|
|
+ tn_Length : longword; { Length of the memory block }
|
|
|
+ end;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+const
|
|
|
+ ID_NAME = 1312902469;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+{ text ID's }
|
|
|
+ DTERROR_UNKNOWN_DATATYPE = 2000;
|
|
|
+ DTERROR_COULDNT_SAVE = 2001;
|
|
|
+ DTERROR_COULDNT_OPEN = 2002;
|
|
|
+ DTERROR_COULDNT_SEND_MESSAGE = 2003;
|
|
|
+
|
|
|
+{ new for V40 }
|
|
|
+ DTERROR_COULDNT_OPEN_CLIPBOARD = 2004;
|
|
|
+ DTERROR_Reserved = 2005;
|
|
|
+ DTERROR_UNKNOWN_COMPRESSION = 2006;
|
|
|
+ DTERROR_NOT_ENOUGH_DATA = 2007;
|
|
|
+ DTERROR_INVALID_DATA = 2008;
|
|
|
+
|
|
|
+{ New for V44 }
|
|
|
+ DTERROR_NOT_AVAILABLE = 2009;
|
|
|
+
|
|
|
+{ Offset for types }
|
|
|
+ DTMSG_TYPE_OFFSET = 2100;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+ DATATYPESCLASS : Pchar = 'datatypesclass';
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+ DTA_Dummy = (TAG_USER+$1000);
|
|
|
+
|
|
|
+{ Generic attributes }
|
|
|
+ DTA_TextAttr = (DTA_Dummy+10);
|
|
|
+ { (struct TextAttr ) Pointer to the default TextAttr to use for
|
|
|
+ * the text within the object. }
|
|
|
+
|
|
|
+ DTA_TopVert = (DTA_Dummy+11);
|
|
|
+ { (LONG) Current top vertical unit }
|
|
|
+
|
|
|
+ DTA_VisibleVert = (DTA_Dummy+12);
|
|
|
+ { (LONG) Number of visible vertical units }
|
|
|
+
|
|
|
+ DTA_TotalVert = (DTA_Dummy+13);
|
|
|
+ { (LONG) Total number of vertical units }
|
|
|
+
|
|
|
+ DTA_VertUnit = (DTA_Dummy+14);
|
|
|
+ { (LONG) Number of pixels per vertical unit }
|
|
|
+
|
|
|
+ DTA_TopHoriz = (DTA_Dummy+15);
|
|
|
+ { (LONG) Current top horizontal unit }
|
|
|
+
|
|
|
+ DTA_VisibleHoriz = (DTA_Dummy+16);
|
|
|
+ { (LONG) Number of visible horizontal units }
|
|
|
+
|
|
|
+ DTA_TotalHoriz = (DTA_Dummy+17);
|
|
|
+ { (LONG) Total number of horizontal units }
|
|
|
+
|
|
|
+ DTA_HorizUnit = (DTA_Dummy+18);
|
|
|
+ { (LONG) Number of pixels per horizontal unit }
|
|
|
+
|
|
|
+ DTA_NodeName = (DTA_Dummy+19);
|
|
|
+ { (UBYTE ) Name of the current element within the object. }
|
|
|
+
|
|
|
+ DTA_Title = (DTA_Dummy+20);
|
|
|
+ { (UBYTE ) Title of the object. }
|
|
|
+
|
|
|
+ DTA_TriggerMethods = (DTA_Dummy+21);
|
|
|
+ { (struct DTMethod ) Pointer to a NULL terminated array of
|
|
|
+ * supported trigger methods. }
|
|
|
+
|
|
|
+ DTA_Data = (DTA_Dummy+22);
|
|
|
+ { (Pointer) Object specific data. }
|
|
|
+
|
|
|
+ DTA_TextFont = (DTA_Dummy+23);
|
|
|
+ { (struct TextFont ) Default font to use for text within the
|
|
|
+ * object. }
|
|
|
+
|
|
|
+ DTA_Methods = (DTA_Dummy+24);
|
|
|
+ { (longword ) Pointer to a ~0 terminated array of supported
|
|
|
+ * methods. }
|
|
|
+
|
|
|
+ DTA_PrinterStatus = (DTA_Dummy+25);
|
|
|
+ { (LONG) Printer error message. Error numbers are defined in
|
|
|
+ * <devices/printer.h> }
|
|
|
+
|
|
|
+ DTA_PrinterProc = (DTA_Dummy+26);
|
|
|
+ { PRIVATE (struct Process ) Pointer to the print process. }
|
|
|
+
|
|
|
+ DTA_LayoutProc = (DTA_Dummy+27);
|
|
|
+ { PRIVATE (struct Process ) Pointer to the layout process. }
|
|
|
+
|
|
|
+ DTA_Busy = (DTA_Dummy+28);
|
|
|
+ { Used to turn the applications' busy pointer off and on }
|
|
|
+
|
|
|
+ DTA_Sync = (DTA_Dummy+29);
|
|
|
+ { Used to indicate that new information has been loaded into
|
|
|
+ * an object. This is for models that cache the DTA_TopVert-
|
|
|
+ * like tags }
|
|
|
+
|
|
|
+ DTA_BaseName = (DTA_Dummy+30);
|
|
|
+ { The base name of the class }
|
|
|
+
|
|
|
+ DTA_GroupID = (DTA_Dummy+31);
|
|
|
+ { Group that the object must belong in }
|
|
|
+
|
|
|
+ DTA_ErrorLevel = (DTA_Dummy+32);
|
|
|
+ { Error level }
|
|
|
+
|
|
|
+ DTA_ErrorNumber = (DTA_Dummy+33);
|
|
|
+ { datatypes.library error number }
|
|
|
+
|
|
|
+ DTA_ErrorString = (DTA_Dummy+34);
|
|
|
+ { Argument for datatypes.library error }
|
|
|
+
|
|
|
+ DTA_Conductor = (DTA_Dummy+35);
|
|
|
+ { New for V40. (UBYTE ) specifies the name of the
|
|
|
+ * realtime.library conductor. Defaults to "Main". }
|
|
|
+
|
|
|
+ DTA_ControlPanel = (DTA_Dummy+36);
|
|
|
+ { New for V40. (BOOL) Indicate whether a control panel should be
|
|
|
+ * embedded within the object (in the animation datatype, for
|
|
|
+ * example). Defaults to TRUE. }
|
|
|
+
|
|
|
+ DTA_Immediate = (DTA_Dummy+37);
|
|
|
+ { New for V40. (BOOL) Indicate whether the object should
|
|
|
+ * immediately begin playing. Defaults to FALSE. }
|
|
|
+
|
|
|
+ DTA_Repeat = (DTA_Dummy+38);
|
|
|
+ { New for V40. (BOOL) Indicate that the object should repeat
|
|
|
+ * playing. Defaults to FALSE. }
|
|
|
+
|
|
|
+ { New for V44. Address of a DTST_MEMORY source type
|
|
|
+ * object (Pointer).
|
|
|
+ }
|
|
|
+ DTA_SourceAddress = (DTA_Dummy+39);
|
|
|
+
|
|
|
+ { New for V44. Size of a DTST_MEMORY source type
|
|
|
+ * object (longword).
|
|
|
+ }
|
|
|
+ DTA_SourceSize = (DTA_Dummy+40);
|
|
|
+
|
|
|
+ { Reserved tag; DO NOT USE (V44) }
|
|
|
+ DTA_Reserved = (DTA_Dummy+41);
|
|
|
+
|
|
|
+{ DTObject attributes }
|
|
|
+ DTA_Name = (DTA_Dummy+100);
|
|
|
+ DTA_SourceType = (DTA_Dummy+101);
|
|
|
+ DTA_Handle = (DTA_Dummy+102);
|
|
|
+ DTA_DataType = (DTA_Dummy+103);
|
|
|
+ DTA_Domain = (DTA_Dummy+104);
|
|
|
+
|
|
|
+{ DON'T USE THE FOLLOWING FOUR TAGS. USE THE CORRESPONDING TAGS IN
|
|
|
+ * <intuition/gadgetclass.h> }
|
|
|
+ DTA_Left = (DTA_Dummy+105);
|
|
|
+ DTA_Top = (DTA_Dummy+106);
|
|
|
+ DTA_Width = (DTA_Dummy+107);
|
|
|
+ DTA_Height = (DTA_Dummy+108);
|
|
|
+
|
|
|
+ DTA_ObjName = (DTA_Dummy+109);
|
|
|
+ DTA_ObjAuthor = (DTA_Dummy+110);
|
|
|
+ DTA_ObjAnnotation = (DTA_Dummy+111);
|
|
|
+ DTA_ObjCopyright = (DTA_Dummy+112);
|
|
|
+ DTA_ObjVersion = (DTA_Dummy+113);
|
|
|
+ DTA_ObjectID = (DTA_Dummy+114);
|
|
|
+ DTA_UserData = (DTA_Dummy+115);
|
|
|
+ DTA_FrameInfo = (DTA_Dummy+116);
|
|
|
+
|
|
|
+{ DON'T USE THE FOLLOWING FOUR TAGS. USE THE CORRESPONDING TAGS IN
|
|
|
+ * <intuition/gadgetclass.h> }
|
|
|
+ DTA_RelRight = (DTA_Dummy+117);
|
|
|
+ DTA_RelBottom = (DTA_Dummy+118);
|
|
|
+ DTA_RelWidth = (DTA_Dummy+119);
|
|
|
+ DTA_RelHeight = (DTA_Dummy+120);
|
|
|
+
|
|
|
+ DTA_SelectDomain = (DTA_Dummy+121);
|
|
|
+ DTA_TotalPVert = (DTA_Dummy+122);
|
|
|
+ DTA_TotalPHoriz = (DTA_Dummy+123);
|
|
|
+ DTA_NominalVert = (DTA_Dummy+124);
|
|
|
+ DTA_NominalHoriz = (DTA_Dummy+125);
|
|
|
+
|
|
|
+{ Printing attributes }
|
|
|
+ DTA_DestCols = (DTA_Dummy+400);
|
|
|
+ { (LONG) Destination X width }
|
|
|
+
|
|
|
+ DTA_DestRows = (DTA_Dummy+401);
|
|
|
+ { (LONG) Destination Y height }
|
|
|
+
|
|
|
+ DTA_Special = (DTA_Dummy+402);
|
|
|
+ { (UWORD) Option flags }
|
|
|
+
|
|
|
+ DTA_RastPort = (DTA_Dummy+403);
|
|
|
+ { (struct RastPort ) RastPort to use when printing. (V40) }
|
|
|
+
|
|
|
+ DTA_ARexxPortName = (DTA_Dummy+404);
|
|
|
+ { (PChar) Pointer to base name for ARexx port (V40) }
|
|
|
+
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+ DTST_RAM = 1;
|
|
|
+ DTST_FILE = 2;
|
|
|
+ DTST_CLIPBOARD = 3;
|
|
|
+ DTST_HOTLINK = 4;
|
|
|
+ DTST_MEMORY = 5; { New for V44 }
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+{ Attached to the Gadget.SpecialInfo field of the gadget. Don't access directly,
|
|
|
+ * use the Get/Set calls instead.
|
|
|
+ }
|
|
|
+Type
|
|
|
+
|
|
|
+ pDTSpecialInfo = ^tDTSpecialInfo;
|
|
|
+ tDTSpecialInfo = record
|
|
|
+ si_Lock : tSignalSemaphore; { Locked while in DoAsyncLayout() }
|
|
|
+ si_Flags,
|
|
|
+
|
|
|
+ si_TopVert, { Top row (in units) }
|
|
|
+ si_VisVert, { Number of visible rows (in units) }
|
|
|
+ si_TotVert, { Total number of rows (in units) }
|
|
|
+ si_OTopVert, { Previous top (in units) }
|
|
|
+ si_VertUnit, { Number of pixels in vertical unit }
|
|
|
+
|
|
|
+ si_TopHoriz, { Top column (in units) }
|
|
|
+ si_VisHoriz, { Number of visible columns (in units) }
|
|
|
+ si_TotHoriz, { Total number of columns (in units) }
|
|
|
+ si_OTopHoriz, { Previous top (in units) }
|
|
|
+ si_HorizUnit : Longint; { Number of pixels in horizontal unit }
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+{ Object is in layout processing }
|
|
|
+ DTSIF_LAYOUT = 1;
|
|
|
+
|
|
|
+{ Object needs to be layed out }
|
|
|
+ DTSIF_NEWSIZE = 2;
|
|
|
+
|
|
|
+ DTSIF_DRAGGING = 4;
|
|
|
+ DTSIF_DRAGSELECT = 8;
|
|
|
+
|
|
|
+ DTSIF_HIGHLIGHT = 16;
|
|
|
+
|
|
|
+{ Object is being printed }
|
|
|
+ DTSIF_PRINTING = 32;
|
|
|
+
|
|
|
+{ Object is in layout process }
|
|
|
+ DTSIF_LAYOUTPROC = 64;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+Type
|
|
|
+ pDTMethod = ^tDTMethod;
|
|
|
+ tDTMethod = record
|
|
|
+ dtm_Label,
|
|
|
+ dtm_Command : PChar;
|
|
|
+ dtm_Method : longword;
|
|
|
+ end;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+Const
|
|
|
+ DTM_Dummy = ($600);
|
|
|
+
|
|
|
+{ Inquire what environment an object requires }
|
|
|
+ DTM_FRAMEBOX = ($601);
|
|
|
+
|
|
|
+{ Same as GM_LAYOUT except guaranteed to be on a process already }
|
|
|
+ DTM_PROCLAYOUT = ($602);
|
|
|
+
|
|
|
+{ Layout that is occurring on a process }
|
|
|
+ DTM_ASYNCLAYOUT = ($603);
|
|
|
+
|
|
|
+{ When a RemoveDTObject() is called }
|
|
|
+ DTM_REMOVEDTOBJECT = ($604);
|
|
|
+
|
|
|
+ DTM_SELECT = ($605);
|
|
|
+ DTM_CLEARSELECTED = ($606);
|
|
|
+
|
|
|
+ DTM_COPY = ($607);
|
|
|
+ DTM_PRINT = ($608);
|
|
|
+ DTM_ABORTPRINT = ($609);
|
|
|
+
|
|
|
+ DTM_NEWMEMBER = ($610);
|
|
|
+ DTM_DISPOSEMEMBER = ($611);
|
|
|
+
|
|
|
+ DTM_GOTO = ($630);
|
|
|
+ DTM_TRIGGER = ($631);
|
|
|
+
|
|
|
+ DTM_OBTAINDRAWINFO = ($640);
|
|
|
+ DTM_DRAW = ($641);
|
|
|
+ DTM_RELEASEDRAWINFO = ($642);
|
|
|
+
|
|
|
+ DTM_WRITE = ($650);
|
|
|
+
|
|
|
+{ Used to ask the object about itself }
|
|
|
+type
|
|
|
+ pFrameInfo = ^tFrameInfo;
|
|
|
+ tFrameInfo = record
|
|
|
+ fri_PropertyFlags : longword;
|
|
|
+ fri_Resolution : tPoint;
|
|
|
+ fri_RedBits : BYTE;
|
|
|
+ fri_GreenBits : BYTE;
|
|
|
+ fri_BlueBits : BYTE;
|
|
|
+ fri_Dimensions : record
|
|
|
+ Width : longword;
|
|
|
+ Height : longword;
|
|
|
+ Depth : longword;
|
|
|
+ end;
|
|
|
+ fri_Screen : pScreen;
|
|
|
+ fri_ColorMap : pColorMap;
|
|
|
+ fri_Flags : longword;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+CONST
|
|
|
+
|
|
|
+ FIF_SCALABLE = $1;
|
|
|
+ FIF_SCROLLABLE = $2;
|
|
|
+ FIF_REMAPPABLE = $4;
|
|
|
+
|
|
|
+{ DTM_REMOVEDTOBJECT, DTM_CLEARSELECTED, DTM_COPY, DTM_ABORTPRINT }
|
|
|
+Type
|
|
|
+
|
|
|
+ pdtGeneral = ^tdtGeneral;
|
|
|
+ tdtGeneral = record
|
|
|
+ MethodID : longword;
|
|
|
+ dtg_GInfo : pGadgetInfo;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ DTM_SELECT }
|
|
|
+ pdtSelect = ^tdtSelect;
|
|
|
+ tdtSelect = record
|
|
|
+ MethodID : longword;
|
|
|
+ dts_GInfo : pGadgetInfo;
|
|
|
+ dts_Select : tRectangle;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ DTM_FRAMEBOX }
|
|
|
+
|
|
|
+ pdtFrameBox = ^tdtFrameBox;
|
|
|
+ tdtFrameBox = record
|
|
|
+ MethodID : longword;
|
|
|
+ dtf_GInfo : pGadgetInfo;
|
|
|
+ dtf_ContentsInfo, { Input }
|
|
|
+ dtf_FrameInfo : pFrameInfo; { Output }
|
|
|
+ dtf_SizeFrameInfo,
|
|
|
+ dtf_FrameFlags : longword;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ DTM_GOTO }
|
|
|
+ pdtGoto = ^tdtGoto;
|
|
|
+ tdtGoto = record
|
|
|
+ MethodID : longword;
|
|
|
+ dtg_GInfo : pGadgetInfo;
|
|
|
+ dtg_NodeName : PChar; { Node to goto }
|
|
|
+ dtg_AttrList : pTagItem; { Additional attributes }
|
|
|
+ end;
|
|
|
+
|
|
|
+{ DTM_TRIGGER }
|
|
|
+
|
|
|
+ pdtTrigger = ^tdtTrigger;
|
|
|
+ tdtTrigger = record
|
|
|
+ MethodID : longword;
|
|
|
+ dtt_GInfo : pGadgetInfo;
|
|
|
+ dtt_Function : longword;
|
|
|
+ dtt_Data : Pointer;
|
|
|
+ end;
|
|
|
+
|
|
|
+const
|
|
|
+ STM_PAUSE = 1 ;
|
|
|
+ STM_PLAY = 2 ;
|
|
|
+ STM_CONTENTS = 3 ;
|
|
|
+ STM_INDEX = 4 ;
|
|
|
+ STM_RETRACE = 5 ;
|
|
|
+ STM_BROWSE_PREV = 6 ;
|
|
|
+ STM_BROWSE_NEXT = 7 ;
|
|
|
+
|
|
|
+ STM_NEXT_FIELD = 8 ;
|
|
|
+ STM_PREV_FIELD = 9 ;
|
|
|
+ STM_ACTIVATE_FIELD = 10;
|
|
|
+
|
|
|
+ STM_COMMAND = 11;
|
|
|
+
|
|
|
+{ New for V40 }
|
|
|
+ STM_REWIND = 12;
|
|
|
+ STM_FASTFORWARD = 13;
|
|
|
+ STM_STOP = 14;
|
|
|
+ STM_RESUME = 15;
|
|
|
+ STM_LOCATE = 16;
|
|
|
+
|
|
|
+Type
|
|
|
+{ Printer IO request }
|
|
|
+ pprinterIO = ^tprinterIO;
|
|
|
+ tprinterIO = record
|
|
|
+ ios : tIOStdReq;
|
|
|
+{$WARNING FIX ME!!! TPrinterIO}
|
|
|
+{
|
|
|
+ iodrp : tIODRPReq;
|
|
|
+ iopc : tIOPrtCmdReq;
|
|
|
+}
|
|
|
+ end;
|
|
|
+{ DTM_PRINT }
|
|
|
+
|
|
|
+ pdtPrint = ^tdtPrint;
|
|
|
+ tdtPrint = record
|
|
|
+ MethodID : longword;
|
|
|
+ dtp_GInfo : pGadgetInfo;
|
|
|
+ dtp_PIO : pprinterIO;
|
|
|
+ dtp_AttrList : pTagItem;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+{ DTM_DRAW }
|
|
|
+ pdtDraw = ^tdtDraw;
|
|
|
+ tdtDraw = record
|
|
|
+ MethodID : longword;
|
|
|
+ dtd_RPort : pRastPort;
|
|
|
+ dtd_Left,
|
|
|
+ dtd_Top,
|
|
|
+ dtd_Width,
|
|
|
+ dtd_Height,
|
|
|
+ dtd_TopHoriz,
|
|
|
+ dtd_TopVert : Longint;
|
|
|
+ dtd_AttrList : pTagItem; { Additional attributes }
|
|
|
+ end;
|
|
|
+
|
|
|
+{ DTM_WRITE }
|
|
|
+ pdtWrite = ^tdtWrite;
|
|
|
+ tdtWrite = record
|
|
|
+ MethodID : longword;
|
|
|
+ dtw_GInfo : pGadgetInfo; { Gadget information }
|
|
|
+ dtw_FileHandle : longword; { File handle to write to }
|
|
|
+ dtw_Mode : longword;
|
|
|
+ dtw_AttrList : pTagItem; { Additional attributes }
|
|
|
+ end;
|
|
|
+
|
|
|
+const
|
|
|
+{ Save data as IFF data }
|
|
|
+ DTWM_IFF = 0;
|
|
|
+
|
|
|
+{ Save data as local data format }
|
|
|
+ DTWM_RAW = 1;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+ PICTUREDTCLASS : PChar = 'picture.datatype';
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+{ Picture attributes }
|
|
|
+ PDTA_ModeID = (DTA_Dummy + 200);
|
|
|
+ { Mode ID of the picture }
|
|
|
+
|
|
|
+ PDTA_BitMapHeader = (DTA_Dummy + 201);
|
|
|
+
|
|
|
+ PDTA_BitMap = (DTA_Dummy + 202);
|
|
|
+ { Pointer to a class-allocated bitmap, that will end
|
|
|
+ * up being freed by picture.class when DisposeDTObject()
|
|
|
+ * is called }
|
|
|
+{ Picture colour table (struct ColorRegister *) }
|
|
|
+ PDTA_ColorRegisters = (DTA_Dummy + 203);
|
|
|
+
|
|
|
+{ Color table to use with SetRGB32CM() (longword *) }
|
|
|
+ PDTA_CRegs = (DTA_Dummy + 204);
|
|
|
+
|
|
|
+{ Color table; this table is initialized during the layout
|
|
|
+ * process and will contain the colours the picture will use
|
|
|
+ * after remapping. If no remapping takes place, these colours
|
|
|
+ * will match those in the PDTA_CRegs table (longword *).
|
|
|
+ }
|
|
|
+ PDTA_GRegs = (DTA_Dummy + 205);
|
|
|
+
|
|
|
+{ Shared pen table; this table is initialized during the layout
|
|
|
+ * process while the picture is being remapped (UBYTE *).
|
|
|
+ }
|
|
|
+ PDTA_ColorTable = (DTA_Dummy + 206);
|
|
|
+
|
|
|
+{ Shared pen table; in most places this table will be identical to
|
|
|
+ * the PDTA_ColorTable table. Some of the colours in this table might
|
|
|
+ * match the original colour palette a little better than the colours
|
|
|
+ * picked for the other table. The picture.datatype uses the two tables
|
|
|
+ * during remapping, alternating for each pixel (UBYTE *).
|
|
|
+ }
|
|
|
+ PDTA_ColorTable2 = (DTA_Dummy + 207);
|
|
|
+
|
|
|
+{ OBSOLETE; DO NOT USE }
|
|
|
+ PDTA_Allocated = (DTA_Dummy + 208);
|
|
|
+
|
|
|
+{ Number of colors used by the picture. (UWORD) }
|
|
|
+ PDTA_NumColors = (DTA_Dummy + 209);
|
|
|
+
|
|
|
+{ Number of colors allocated by the picture (UWORD) }
|
|
|
+ PDTA_NumAlloc = (DTA_Dummy + 210);
|
|
|
+
|
|
|
+ PDTA_Remap = (DTA_Dummy + 211);
|
|
|
+ { Boolean : Remap picture (defaults to TRUE) }
|
|
|
+
|
|
|
+ PDTA_Screen = (DTA_Dummy + 212);
|
|
|
+ { Screen to remap to }
|
|
|
+
|
|
|
+ PDTA_FreeSourceBitMap = (DTA_Dummy + 213);
|
|
|
+ { Boolean : Free the source bitmap after remapping }
|
|
|
+
|
|
|
+ PDTA_Grab = (DTA_Dummy + 214);
|
|
|
+ { Pointer to a Point structure }
|
|
|
+
|
|
|
+ PDTA_DestBitMap = (DTA_Dummy + 215);
|
|
|
+ { Pointer to the destination (remapped) bitmap }
|
|
|
+
|
|
|
+ PDTA_ClassBitMap = (DTA_Dummy + 216);
|
|
|
+ { Pointer to class-allocated bitmap, that will end
|
|
|
+ * up being freed by the class after DisposeDTObject()
|
|
|
+ * is called }
|
|
|
+
|
|
|
+ PDTA_NumSparse = (DTA_Dummy + 217);
|
|
|
+ { (UWORD) Number of colors used for sparse remapping }
|
|
|
+
|
|
|
+ PDTA_SparseTable = (DTA_Dummy + 218);
|
|
|
+ { (UBYTE *) Pointer to a table of pen numbers indicating
|
|
|
+ * which colors should be used when remapping the image.
|
|
|
+ * This array must contain as many entries as there
|
|
|
+ * are colors specified with PDTA_NumSparse }
|
|
|
+
|
|
|
+ { Index number of the picture to load (longword). (V44) }
|
|
|
+ PDTA_WhichPicture = (DTA_Dummy + 219);
|
|
|
+
|
|
|
+{ Get the number of pictures stored in the file (longword *). (V44) }
|
|
|
+ PDTA_GetNumPictures = (DTA_Dummy + 220);
|
|
|
+
|
|
|
+{ Maximum number of colours to use for dithering (longword). (V44) }
|
|
|
+ PDTA_MaxDitherPens = (DTA_Dummy + 221);
|
|
|
+
|
|
|
+{ Quality of the dithering algorithm to be used during colour
|
|
|
+ * quantization (longword). (V44)
|
|
|
+ }
|
|
|
+ PDTA_DitherQuality = (DTA_Dummy + 222);
|
|
|
+
|
|
|
+{ Pointer to the allocated pen table (UBYTE *). (V44) }
|
|
|
+ PDTA_AllocatedPens = (DTA_Dummy + 223);
|
|
|
+
|
|
|
+{ Quality for scaling. (V45) }
|
|
|
+ PDTA_ScaleQuality = (DTA_Dummy + 224);
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+{ When querying the number of pictures stored in a file, the
|
|
|
+ * following value denotes "the number of pictures is unknown".
|
|
|
+ }
|
|
|
+ PDTANUMPICTURES_Unknown = (0);
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+{ V43 extensions (attributes) }
|
|
|
+
|
|
|
+{ Set the sub datatype interface mode (LONG); see "Interface modes" below }
|
|
|
+ PDTA_SourceMode = (DTA_Dummy + 250);
|
|
|
+
|
|
|
+{ Set the app datatype interface mode (LONG); see "Interface modes" below }
|
|
|
+ PDTA_DestMode = (DTA_Dummy + 251);
|
|
|
+
|
|
|
+{ Allocates the resulting bitmap as a friend bitmap (BOOL) }
|
|
|
+ PDTA_UseFriendBitMap = (DTA_Dummy + 255);
|
|
|
+
|
|
|
+{ NULL or mask plane for use with BltMaskBitMapRastPort() (PLANEPTR) }
|
|
|
+ PDTA_MaskPlane = (DTA_Dummy + 258);
|
|
|
+
|
|
|
+ PDTA_Displayable = (DTA_Dummy + 259); { * defaults to TRUE * }
|
|
|
+
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+{ Interface modes }
|
|
|
+ PMODE_V42 = (0); { Compatibility mode }
|
|
|
+ PMODE_V43 = (1); { Extended mode }
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+{ V43 extensions (methods) }
|
|
|
+
|
|
|
+ PDTM_Dummy = (DTM_Dummy + $60);
|
|
|
+
|
|
|
+{ Transfer pixel data to the picture object in the specified format }
|
|
|
+ PDTM_WRITEPIXELARRAY = (PDTM_Dummy + 0);
|
|
|
+
|
|
|
+{ Transfer pixel data from the picture object in the specified format }
|
|
|
+ PDTM_READPIXELARRAY = (PDTM_Dummy + 1);
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+{ * Pixel formats * }
|
|
|
+
|
|
|
+ PBPAFMT_RGB = 0;
|
|
|
+ PBPAFMT_RGBA = 1;
|
|
|
+ PBPAFMT_ARGB = 2;
|
|
|
+ PBPAFMT_LUT8 = 3;
|
|
|
+ PBPAFMT_GREY8 = 4;
|
|
|
+
|
|
|
+
|
|
|
+{ Masking techniques }
|
|
|
+ mskNone = 0;
|
|
|
+ mskHasMask = 1;
|
|
|
+ mskHasTransparentColor = 2;
|
|
|
+ mskLasso = 3;
|
|
|
+ mskHasAlpha = 4;
|
|
|
+
|
|
|
+{ Compression techniques }
|
|
|
+ cmpNone = 0;
|
|
|
+ cmpByteRun1 = 1;
|
|
|
+ cmpByteRun2 = 2;
|
|
|
+
|
|
|
+Type
|
|
|
+{ Bitmap header (BMHD) structure }
|
|
|
+ pBitMapHeader = ^tBitMapHeader;
|
|
|
+ tBitMapHeader = record
|
|
|
+ bmh_Width, { Width in pixels }
|
|
|
+ bmh_Height : Word; { Height in pixels }
|
|
|
+ bmh_Left, { Left position }
|
|
|
+ bmh_Top : smallint; { Top position }
|
|
|
+ bmh_Depth, { Number of planes }
|
|
|
+ bmh_Masking, { Masking type }
|
|
|
+ bmh_Compression, { Compression type }
|
|
|
+ bmh_Pad : Byte;
|
|
|
+ bmh_Transparent : WORD; { Transparent color }
|
|
|
+ bmh_XAspect,
|
|
|
+ bmh_YAspect : Byte;
|
|
|
+ bmh_PageWidth,
|
|
|
+ bmh_PageHeight : smallint;
|
|
|
+ end;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+{ Color register structure }
|
|
|
+ pColorRegister = ^tColorRegister;
|
|
|
+ tColorRegister = record
|
|
|
+ red, green, blue : Byte;
|
|
|
+ end;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+const
|
|
|
+{ IFF types that may be in pictures }
|
|
|
+ ID_ILBM = 1229734477;
|
|
|
+ ID_BMHD = 1112361028;
|
|
|
+ ID_BODY = 1112491097;
|
|
|
+ ID_CMAP = 1129136464;
|
|
|
+ ID_CRNG = 1129467463;
|
|
|
+ ID_GRAB = 1196572994;
|
|
|
+ ID_SPRT = 1397772884;
|
|
|
+ ID_DEST = 1145394004;
|
|
|
+ ID_CAMG = 1128353095;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+ SOUNDDTCLASS : PChar = 'sound.datatype';
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+{ Sound attributes }
|
|
|
+ SDTA_Dummy = (DTA_Dummy + 500);
|
|
|
+ SDTA_VoiceHeader = (SDTA_Dummy + 1);
|
|
|
+ SDTA_Sample = (SDTA_Dummy + 2);
|
|
|
+ { (UBYTE *) Sample data }
|
|
|
+
|
|
|
+ SDTA_SampleLength = (SDTA_Dummy + 3);
|
|
|
+ { (longword) Length of the sample data in UBYTEs }
|
|
|
+
|
|
|
+ SDTA_Period = (SDTA_Dummy + 4);
|
|
|
+ { (UWORD) Period }
|
|
|
+
|
|
|
+ SDTA_Volume = (SDTA_Dummy + 5);
|
|
|
+ { (UWORD) Volume. Range from 0 to 64 }
|
|
|
+
|
|
|
+ SDTA_Cycles = (SDTA_Dummy + 6);
|
|
|
+
|
|
|
+{ The following tags are new for V40 }
|
|
|
+ SDTA_SignalTask = (SDTA_Dummy + 7);
|
|
|
+ { (struct Task *) Task to signal when sound is complete or
|
|
|
+ next buffer needed. }
|
|
|
+
|
|
|
+{ (longword) Signal mask to use on completion or 0 to disable
|
|
|
+ *
|
|
|
+ * NOTE: Due to a bug in sound.datatype V40 SDTA_SignalBit
|
|
|
+ * was actually implemented as a signal mask as opposed
|
|
|
+ * to a bit number. The documentation now reflects
|
|
|
+ * this. If you intend to use a signal bit number
|
|
|
+ * instead of the mask, use the new V44 tag
|
|
|
+ * SDTA_SignalBitNumber below.
|
|
|
+ *}
|
|
|
+ SDTA_SignalBit = (SDTA_Dummy + 8);
|
|
|
+ SDTA_SignalBitMask = SDTA_SignalBit;
|
|
|
+ { (BYTE) Signal bit to use on completion or -1 to disable }
|
|
|
+
|
|
|
+ SDTA_Continuous = (SDTA_Dummy + 9);
|
|
|
+ { (longword) Playing a continuous stream of data. Defaults to
|
|
|
+ FALSE. }
|
|
|
+
|
|
|
+{ The following tags are new for V44 }
|
|
|
+
|
|
|
+{ (BYTE) Signal bit to use on completion or -1 to disable }
|
|
|
+ SDTA_SignalBitNumber = (SDTA_Dummy + 10);
|
|
|
+
|
|
|
+{ (UWORD) Samples per second }
|
|
|
+ SDTA_SamplesPerSec = (SDTA_Dummy + 11);
|
|
|
+
|
|
|
+{ (struct timeval *) Sample replay period }
|
|
|
+ SDTA_ReplayPeriod = (SDTA_Dummy + 12);
|
|
|
+
|
|
|
+{ (BYTE *) Sample data }
|
|
|
+ SDTA_LeftSample = (SDTA_Dummy + 13);
|
|
|
+ SDTA_RightSample = (SDTA_Dummy + 14);
|
|
|
+
|
|
|
+{ (BYTE) Stereo panning }
|
|
|
+ SDTA_Pan = (SDTA_Dummy + 15);
|
|
|
+
|
|
|
+{ (BOOL) FreeVec() all sample data upon OM_DISPOSE. }
|
|
|
+ SDTA_FreeSampleData = (SDTA_Dummy + 16);
|
|
|
+
|
|
|
+{ (BOOL) Wait for the current sample to be played back before
|
|
|
+ * switching to the new sample data.
|
|
|
+ }
|
|
|
+ SDTA_SyncSampleChange = (SDTA_Dummy + 17);
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+ CMP_NONE = 0;
|
|
|
+ CMP_FIBDELTA = 1;
|
|
|
+
|
|
|
+Type
|
|
|
+ pVoiceHeader = ^tVoiceHeader;
|
|
|
+ tVoiceHeader = record
|
|
|
+ vh_OneShotHiSamples,
|
|
|
+ vh_RepeatHiSamples,
|
|
|
+ vh_SamplesPerHiCycle : longword;
|
|
|
+ vh_SamplesPerSec : WORD;
|
|
|
+ vh_Octaves,
|
|
|
+ vh_Compression : Byte;
|
|
|
+ vh_Volume : longword;
|
|
|
+ end;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+const
|
|
|
+
|
|
|
+{ Channel allocation }
|
|
|
+ SAMPLETYPE_Left = (2);
|
|
|
+ SAMPLETYPE_Right = (4);
|
|
|
+ SAMPLETYPE_Stereo = (6);
|
|
|
+
|
|
|
+{ IFF types }
|
|
|
+ ID_8SVX = 944985688;
|
|
|
+ ID_VHDR = 1447576658;
|
|
|
+ ID_CHAN = $4348414E;
|
|
|
+
|
|
|
+{***************************************************************************}
|
|
|
+
|
|
|
+{ ***************************************************************************}
|
|
|
+
|
|
|
+ TEXTDTCLASS : PChar = 'text.datatype';
|
|
|
+
|
|
|
+{ ***************************************************************************}
|
|
|
+
|
|
|
+{ Text attributes }
|
|
|
+ TDTA_Buffer = (DTA_Dummy + 300);
|
|
|
+ TDTA_BufferLen = (DTA_Dummy + 301);
|
|
|
+ TDTA_LineList = (DTA_Dummy + 302);
|
|
|
+ TDTA_WordSelect = (DTA_Dummy + 303);
|
|
|
+ TDTA_WordDelim = (DTA_Dummy + 304);
|
|
|
+ TDTA_WordWrap = (DTA_Dummy + 305);
|
|
|
+ { Boolean. Should the text be word wrapped. Defaults to false. }
|
|
|
+
|
|
|
+{ ***************************************************************************}
|
|
|
+
|
|
|
+Type
|
|
|
+{ There is one Line structure for every line of text in our document. }
|
|
|
+ pLine = ^tLine;
|
|
|
+ tLine = record
|
|
|
+ ln_Link : tMinNode; { to link the lines together }
|
|
|
+ ln_Text : PChar; { pointer to the text for this line }
|
|
|
+ ln_TextLen : longword; { the character length of the text for this line }
|
|
|
+ ln_XOffset, { where in the line the text starts }
|
|
|
+ ln_YOffset, { line the text is on }
|
|
|
+ ln_Width, { Width of line in pixels }
|
|
|
+ ln_Height, { Height of line in pixels }
|
|
|
+ ln_Flags : WORD; { info on the line }
|
|
|
+ ln_FgPen, { foreground pen }
|
|
|
+ ln_BgPen : Shortint; { background pen }
|
|
|
+ ln_Style : longword; { Font style }
|
|
|
+ ln_Data : Pointer; { Link data... }
|
|
|
+ end;
|
|
|
+
|
|
|
+{ ***************************************************************************}
|
|
|
+
|
|
|
+const
|
|
|
+{ Line.ln_Flags }
|
|
|
+
|
|
|
+{ Line Feed }
|
|
|
+ LNF_LF = 1;
|
|
|
+
|
|
|
+{ Segment is a link }
|
|
|
+ LNF_LINK = 2;
|
|
|
+
|
|
|
+{ ln_Data is a pointer to an DataTypes object }
|
|
|
+ LNF_OBJECT = 4;
|
|
|
+
|
|
|
+{ Object is selected }
|
|
|
+ LNF_SELECTED = 8;
|
|
|
+
|
|
|
+{ ***************************************************************************}
|
|
|
+
|
|
|
+{ IFF types that may be text }
|
|
|
+ ID_FTXT = 1179932756;
|
|
|
+ ID_CHRS = 1128813139;
|
|
|
+
|
|
|
+{ ***************************************************************************}
|
|
|
+
|
|
|
+ ANIMATIONDTCLASS : PChar = 'animation.datatype';
|
|
|
+
|
|
|
+{ ***************************************************************************}
|
|
|
+
|
|
|
+{ Animation attributes }
|
|
|
+ ADTA_Dummy = (DTA_Dummy + 600);
|
|
|
+ ADTA_ModeID = PDTA_ModeID ;
|
|
|
+ ADTA_KeyFrame = PDTA_BitMap ;
|
|
|
+ { (struct BitMap *) Key frame (first frame) bitmap }
|
|
|
+
|
|
|
+ ADTA_ColorRegisters = PDTA_ColorRegisters;
|
|
|
+ ADTA_CRegs = PDTA_CRegs ;
|
|
|
+ ADTA_GRegs = PDTA_GRegs ;
|
|
|
+ ADTA_ColorTable = PDTA_ColorTable ;
|
|
|
+ ADTA_ColorTable2 = PDTA_ColorTable2 ;
|
|
|
+ ADTA_Allocated = PDTA_Allocated ;
|
|
|
+ ADTA_NumColors = PDTA_NumColors ;
|
|
|
+ ADTA_NumAlloc = PDTA_NumAlloc ;
|
|
|
+
|
|
|
+ ADTA_Remap = PDTA_Remap;
|
|
|
+ { (BOOL) : Remap animation (defaults to TRUE) }
|
|
|
+
|
|
|
+ ADTA_Screen = PDTA_Screen;
|
|
|
+ { (struct Screen *) Screen to remap to }
|
|
|
+
|
|
|
+ ADTA_NumSparse = PDTA_NumSparse;
|
|
|
+ { (UWORD) Number of colors used for sparse remapping }
|
|
|
+
|
|
|
+ ADTA_SparseTable = PDTA_SparseTable;
|
|
|
+ { (UBYTE *) Pointer to a table of pen numbers indicating
|
|
|
+ * which colors should be used when remapping the image.
|
|
|
+ * This array must contain as many entries as there
|
|
|
+ * are colors specified with ADTA_NumSparse }
|
|
|
+
|
|
|
+ ADTA_Width = (ADTA_Dummy + 1);
|
|
|
+ ADTA_Height = (ADTA_Dummy + 2);
|
|
|
+ ADTA_Depth = (ADTA_Dummy + 3);
|
|
|
+ ADTA_Frames = (ADTA_Dummy + 4);
|
|
|
+ { (longword) Number of frames in the animation }
|
|
|
+
|
|
|
+ ADTA_Frame = (ADTA_Dummy + 5);
|
|
|
+ { (longword) Current frame }
|
|
|
+
|
|
|
+ ADTA_FramesPerSecond = (ADTA_Dummy + 6);
|
|
|
+ { (longword) Frames per second }
|
|
|
+
|
|
|
+ ADTA_FrameIncrement = (ADTA_Dummy + 7);
|
|
|
+ { (LONG) Amount to change frame by when fast forwarding or
|
|
|
+ * rewinding. Defaults to 10. }
|
|
|
+
|
|
|
+ ADTA_PreloadFrameCount = (ADTA_Dummy + 8); { (V44) }
|
|
|
+{ Sound attributes }
|
|
|
+ ADTA_Sample = SDTA_Sample ;
|
|
|
+ ADTA_SampleLength = SDTA_SampleLength;
|
|
|
+ ADTA_Period = SDTA_Period ;
|
|
|
+ ADTA_Volume = SDTA_Volume ;
|
|
|
+ ADTA_Cycles = SDTA_Cycles ;
|
|
|
+
|
|
|
+ ADTA_LeftSample = SDTA_LeftSample; { (V44) }
|
|
|
+ ADTA_RightSample = SDTA_RightSample; { (V44) }
|
|
|
+ ADTA_SamplesPerSec = SDTA_SamplesPerSec; { (V44) }
|
|
|
+
|
|
|
+{ ***************************************************************************}
|
|
|
+
|
|
|
+ ID_ANIM = 1095649613;
|
|
|
+ ID_ANHD = 1095649348;
|
|
|
+ ID_DLTA = 1145852993;
|
|
|
+
|
|
|
+{ ***************************************************************************}
|
|
|
+
|
|
|
+{ Required ANHD structure describes an ANIM frame }
|
|
|
+Type
|
|
|
+ pAnimHeader = ^tAnimHeader;
|
|
|
+ tAnimHeader = record
|
|
|
+ ah_Operation : Byte; { The compression method:
|
|
|
+ 0 set directly (normal ILBM BODY),
|
|
|
+ 1 XOR ILBM mode,
|
|
|
+ 2 Long Delta mode,
|
|
|
+ 3 Short Delta mode,
|
|
|
+ 4 Generalized short/long Delta mode,
|
|
|
+ 5 Byte Vertical Delta mode
|
|
|
+ 6 Stereo op 5 (third party)
|
|
|
+ 74 (ascii 'J') reserved for Eric Graham's
|
|
|
+ compression technique (details to be
|
|
|
+ released later). }
|
|
|
+
|
|
|
+ ah_Mask : Byte; { (XOR mode only - plane mask where each
|
|
|
+ bit is set =1 if there is data and =0
|
|
|
+ if not.) }
|
|
|
+
|
|
|
+ ah_Width, { (XOR mode only - width and height of the }
|
|
|
+ ah_Height, { area represented by the BODY to eliminate }
|
|
|
+ { unnecessary un-changed data) }
|
|
|
+
|
|
|
+
|
|
|
+ ah_Left, { (XOR mode only - position of rectangular }
|
|
|
+ ah_Top : WORD; { area representd by the BODY) }
|
|
|
+
|
|
|
+
|
|
|
+ ah_AbsTime, { Timing for a frame relative to the time
|
|
|
+ the first frame was displayed, in
|
|
|
+ jiffies (1/60 sec) }
|
|
|
+
|
|
|
+ ah_RelTime : longword; { Timing for frame relative to time
|
|
|
+ previous frame was displayed - in
|
|
|
+ jiffies (1/60 sec) }
|
|
|
+
|
|
|
+ ah_Interleave, { Indicates how may frames back this data is to
|
|
|
+ modify. 0 defaults to indicate two frames back
|
|
|
+ (for double buffering). n indicates n frames back.
|
|
|
+ The main intent here is to allow values
|
|
|
+ of 1 for special applications where
|
|
|
+ frame data would modify the immediately
|
|
|
+ previous frame. }
|
|
|
+
|
|
|
+ ah_Pad0 : Byte; { Pad byte, not used at present. }
|
|
|
+
|
|
|
+ ah_Flags : longword; { 32 option bits used by options=4 and 5.
|
|
|
+ At present only 6 are identified, but the
|
|
|
+ rest are set =0 so they can be used to
|
|
|
+ implement future ideas. These are defined
|
|
|
+ for option 4 only at this point. It is
|
|
|
+ recommended that all bits be set =0 for
|
|
|
+ option 5 and that any bit settings
|
|
|
+ used in the future (such as for XOR mode)
|
|
|
+ be compatible with the option 4
|
|
|
+ bit settings. Player code should check
|
|
|
+ undefined bits in options 4 and 5 to assure
|
|
|
+ they are zero.
|
|
|
+
|
|
|
+ The six bits for current use are:
|
|
|
+
|
|
|
+ bit # set =0 set =1
|
|
|
+ ===============================================
|
|
|
+ 0 short data long data
|
|
|
+ 1 set XOR
|
|
|
+ 2 separate info one info list
|
|
|
+ for each plane for all planes
|
|
|
+ 3 not RLC RLC (run length coded)
|
|
|
+ 4 horizontal vertical
|
|
|
+ 5 short info offsets long info offsets
|
|
|
+ }
|
|
|
+
|
|
|
+ ah_Pad : Array[0..15] of Byte; { This is a pad for future use for future
|
|
|
+ compression modes. }
|
|
|
+ end;
|
|
|
+
|
|
|
+{ ***************************************************************************}
|
|
|
+
|
|
|
+const
|
|
|
+ ADTM_Dummy = ($700);
|
|
|
+
|
|
|
+ ADTM_LOADFRAME = ($701);
|
|
|
+ { Used to load a frame of the animation }
|
|
|
+
|
|
|
+ ADTM_UNLOADFRAME = ($702);
|
|
|
+ { Used to unload a frame of the animation }
|
|
|
+
|
|
|
+ ADTM_START = ($703);
|
|
|
+ { Used to start the animation }
|
|
|
+
|
|
|
+ ADTM_PAUSE = ($704);
|
|
|
+ { Used to pause the animation (don't reset the timer) }
|
|
|
+
|
|
|
+ ADTM_STOP = ($705);
|
|
|
+ { Used to stop the animation }
|
|
|
+
|
|
|
+ ADTM_LOCATE = ($706);
|
|
|
+ { Used to locate a frame in the animation (as set by a slider...) }
|
|
|
+
|
|
|
+ { Used to load a new format frame of the animation (V44) }
|
|
|
+ ADTM_LOADNEWFORMATFRAME = ($707);
|
|
|
+
|
|
|
+ { Used to unload a new format frame of the animation (V44) }
|
|
|
+ ADTM_UNLOADNEWFORMATFRAME = ($708);
|
|
|
+{ ***************************************************************************}
|
|
|
+
|
|
|
+{ ADTM_LOADFRAME, ADTM_UNLOADFRAME }
|
|
|
+Type
|
|
|
+ padtFrame = ^tadtFrame;
|
|
|
+ tadtFrame = record
|
|
|
+ MethodID,
|
|
|
+ alf_TimeStamp, { Timestamp of frame to load }
|
|
|
+
|
|
|
+ { The following fields are filled in by the ADTM_LOADFRAME method, }
|
|
|
+ { and are read-only for any other methods. }
|
|
|
+
|
|
|
+ alf_Frame, { Frame number }
|
|
|
+ alf_Duration : longword; { Duration of frame }
|
|
|
+
|
|
|
+ alf_BitMap : pBitMap; { Loaded BitMap }
|
|
|
+ alf_CMap : pColorMap; { Colormap, if changed }
|
|
|
+
|
|
|
+ alf_Sample : Pointer; { Sound data }
|
|
|
+ alf_SampleLength,
|
|
|
+ alf_Period : longword;
|
|
|
+
|
|
|
+ alf_UserData : Pointer; { Used by load frame for extra data }
|
|
|
+ end;
|
|
|
+
|
|
|
+ { ADTM_LOADNEWFORMATFRAME, ADTM_UNLOADNEWFORMATFRAME }
|
|
|
+
|
|
|
+ PadtNewFormatFrame = ^tadtNewFormatFrame;
|
|
|
+ tadtNewFormatFrame = record
|
|
|
+ MethodID : longword;
|
|
|
+ alf_TimeStamp : longword; { Timestamp of frame to load }
|
|
|
+ { The following fields are filled in by the ADTM_NEWLOADFRAME method, }
|
|
|
+ { and are read-only for any other methods. }
|
|
|
+ alf_Frame : longword; { Frame number }
|
|
|
+ alf_Duration : longword; { Duration of frame }
|
|
|
+ alf_BitMap : PBitMap; { Loaded BitMap }
|
|
|
+ alf_CMap : PColorMap; { Colormap, if changed }
|
|
|
+ alf_Sample : PBYTE;
|
|
|
+ alf_SampleLength : longword; { Sound data }
|
|
|
+ alf_Period : longword;
|
|
|
+ alf_UserData : Pointer; { Used by load frame for extra data }
|
|
|
+ alf_Size : longword; { Size of this data structure (in bytes) }
|
|
|
+ alf_LeftSample : PBYTE; { Sound for left channel, or NULL if none }
|
|
|
+ alf_RightSample : PBYTE; { Sound for right channel, or NULL if none }
|
|
|
+ alf_SamplesPerSec : longword; { Replay speed; if > 0, this overrides alf_Period }
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+{ ADTM_START, ADTM_PAUSE, ADTM_STOP, ADTM_LOCATE }
|
|
|
+ padtStart = ^tadtStart;
|
|
|
+ tadtStart = record
|
|
|
+ MethodID,
|
|
|
+ asa_Frame : longword; { Frame # to start at }
|
|
|
+ end;
|
|
|
+
|
|
|
+{ *************************************************************************** }
|
|
|
+
|
|
|
+var
|
|
|
+ DataTypesBase : PLibrary;
|
|
|
+
|
|
|
+const
|
|
|
+ DATATYPESNAME : PChar = 'datatypes.library';
|
|
|
+
|
|
|
+
|
|
|
+function ObtainDataTypeA(type_ : CARDINAL location 'd0'; handle : POINTER location 'a0'; attrs : pTagItem location 'a1') : pDataType;
|
|
|
+SysCall DataTypesBase 036;
|
|
|
+
|
|
|
+function ObtainDataType(type_ : CARDINAL; handle : POINTER; attrs : array of LongWord) : pDataType; Inline;
|
|
|
+
|
|
|
+procedure ReleaseDataType(dt : pDataType location 'a0');
|
|
|
+SysCall DataTypesBase 042;
|
|
|
+
|
|
|
+function NewDTObjectA(name : PChar location 'd0'; attrs : pTagItem location 'a0') : CARDINAL;
|
|
|
+SysCall DataTypesBase 048;
|
|
|
+
|
|
|
+function NewDTObject(name : PChar; attrs : array of LongWord) : CARDINAL; Inline;
|
|
|
+
|
|
|
+procedure DisposeDTObject(o : CARDINAL location 'a0');
|
|
|
+SysCall DataTypesBase 054;
|
|
|
+
|
|
|
+function SetDTAttrsA(o : CARDINAL location 'a0'; win : pWindow location 'a1'; req : pRequester location 'a2'; attrs : pTagItem location 'a3') : CARDINAL;
|
|
|
+SysCall DataTypesBase 060;
|
|
|
+
|
|
|
+function SetDTAttrs(o : CARDINAL; win : pWindow; req : pRequester; attrs : array of LongWord) : CARDINAL; Inline;
|
|
|
+
|
|
|
+function GetDTAttrsA(o : CARDINAL location 'a0'; attrs : pTagItem location 'a2') : CARDINAL;
|
|
|
+SysCall DataTypesBase 066;
|
|
|
+
|
|
|
+function GetDTAttrs(o : CARDINAL; attrs : array of LongWord) : CARDINAL; Inline;
|
|
|
+
|
|
|
+function AddDTObject(win : pWindow location 'a0'; req : pRequester location 'a1'; o : CARDINAL location 'a2'; pos : LongInt location 'd0') : LongInt;
|
|
|
+SysCall DataTypesBase 072;
|
|
|
+
|
|
|
+procedure RefreshDTObjectA(o : CARDINAL location 'a0'; win : pWindow location 'a1'; req : pRequester location 'a2'; attrs : pTagItem location 'a3');
|
|
|
+SysCall DataTypesBase 078;
|
|
|
+
|
|
|
+procedure RefreshDTObject(o : CARDINAL; win : pWindow; req : pRequester; attrs : array of LongWord); Inline;
|
|
|
+
|
|
|
+function DoAsyncLayout(o : CARDINAL location 'a0'; gpl : pgpLayout location 'a1') : CARDINAL;
|
|
|
+SysCall DataTypesBase 084;
|
|
|
+
|
|
|
+function DoDTMethodA(o : CARDINAL location 'a0'; win : pWindow location 'a1'; req : pRequester location 'a2'; msg : pLongInt location 'a3') : CARDINAL;
|
|
|
+SysCall DataTypesBase 090;
|
|
|
+
|
|
|
+function DoDTMethod(o : CARDINAL; win : pWindow; req : pRequester; msg : array of LongInt) : CARDINAL; Inline;
|
|
|
+
|
|
|
+function RemoveDTObject(win : pWindow location 'a0'; o : CARDINAL location 'a1') : LongInt;
|
|
|
+SysCall DataTypesBase 096;
|
|
|
+
|
|
|
+function GetDTMethods(o : CARDINAL location 'a0') : pCARDINAL;
|
|
|
+SysCall DataTypesBase 102;
|
|
|
+
|
|
|
+function GetDTTriggerMethods(o : CARDINAL location 'a0') : pDTMethod;
|
|
|
+SysCall DataTypesBase 108;
|
|
|
+
|
|
|
+function PrintDTObjectA(o : CARDINAL location 'a0'; w : pWindow location 'a1'; r : pRequester location 'a2'; msg : pdtPrint location 'a3') : CARDINAL;
|
|
|
+SysCall DataTypesBase 114;
|
|
|
+
|
|
|
+function ObtainDTDrawInfoA(o : CARDINAL location 'a0'; attrs : pTagItem location 'a1') : POINTER;
|
|
|
+SysCall DataTypesBase 120;
|
|
|
+
|
|
|
+function ObtainDTDrawInfo(o : CARDINAL; attrs : array of LongWord) : POINTER; Inline;
|
|
|
+
|
|
|
+function DrawDTObjectA(rp : pRastPort location 'a0'; o : CARDINAL location 'a1'; x : LongInt location 'd0'; y : LongInt location 'd1'; w : LongInt location 'd2'; h : LongInt location 'd3'; th : LongInt location 'd4'; tv : LongInt location 'd5'; attrs : pTagItem location 'a2') : LongInt;
|
|
|
+SysCall DataTypesBase 126;
|
|
|
+
|
|
|
+function DrawDTObject(rp : pRastPort; o : CARDINAL; x : LongInt; y : LongInt; w : LongInt; h : LongInt; th : LongInt; tv : LongInt; attrs : array of LongWord) : LongInt; Inline;
|
|
|
+
|
|
|
+procedure ReleaseDTDrawInfo(o : CARDINAL location 'a0'; handle : POINTER location 'a1');
|
|
|
+SysCall DataTypesBase 132;
|
|
|
+
|
|
|
+function GetDTString(id : CARDINAL location 'd0') : pSHORTINT;
|
|
|
+SysCall DataTypesBase 138;
|
|
|
+
|
|
|
+procedure LockDataType(dt : pDataType location 'a0');
|
|
|
+SysCall DataTypesBase 240;
|
|
|
+
|
|
|
+function FindToolNodeA(tl : pList location 'a0'; attrs : pTagItem location 'a1') : pToolNode;
|
|
|
+SysCall DataTypesBase 246;
|
|
|
+
|
|
|
+function FindToolNode(tl : pList; attrs : array of LongWord) : pToolNode; Inline;
|
|
|
+
|
|
|
+function LaunchToolA(t : pTool location 'a0'; project : pSHORTINT location 'a1'; attrs : pTagItem location 'a2') : CARDINAL;
|
|
|
+SysCall DataTypesBase 252;
|
|
|
+
|
|
|
+function LaunchTool(t : pTool; project : pSHORTINT; attrs : array of LongWord) : CARDINAL; Inline;
|
|
|
+
|
|
|
+function FindMethod(methods : CARDINAL location 'a0'; id : CARDINAL location 'a1') : pCARDINAL;
|
|
|
+SysCall DataTypesBase 258;
|
|
|
+
|
|
|
+function FindTriggerMethod(triggermethods : pDTMethod location 'a0'; command : pSHORTINT location 'a1'; method : CARDINAL location 'd0') : pDTMethod;
|
|
|
+SysCall DataTypesBase 264;
|
|
|
+
|
|
|
+function CopyDTMethods(src : CARDINAL location 'a0'; include : CARDINAL location 'a1'; exclude : CARDINAL location 'a2') : pCARDINAL;
|
|
|
+SysCall DataTypesBase 270;
|
|
|
+
|
|
|
+function CopyDTTriggerMethods(src : pDTMethod location 'a0'; include : pDTMethod location 'a1'; exclude : pDTMethod location 'a2') : pDTMethod;
|
|
|
+SysCall DataTypesBase 276;
|
|
|
+
|
|
|
+procedure FreeDTMethods(m : POINTER location 'a0');
|
|
|
+SysCall DataTypesBase 282;
|
|
|
+
|
|
|
+function GetDTTriggerMethodDataFlags(triggermethod : CARDINAL location 'd0') : CARDINAL;
|
|
|
+SysCall DataTypesBase 288;
|
|
|
+
|
|
|
+function SaveDTObjectA(o : CARDINAL location 'a0'; win : pWindow location 'a1'; req : pRequester location 'a2'; file_ : PChar location 'a3'; mode : CARDINAL location 'd0'; saveicon : BOOLEAN location 'd1'; attrs : pTagItem location 'a4') : CARDINAL;
|
|
|
+SysCall DataTypesBase 294;
|
|
|
+
|
|
|
+function SaveDTObject(o : CARDINAL; win : pWindow; req : pRequester; file_ : PChar; mode : CARDINAL; saveicon : BOOLEAN; attrs : array of LongWord) : CARDINAL; Inline;
|
|
|
+
|
|
|
+function StartDragSelect(o : CARDINAL location 'a0') : CARDINAL;
|
|
|
+SysCall DataTypesBase 300;
|
|
|
+
|
|
|
+function DoDTDomainA(o : CARDINAL location 'a0'; win : pWindow location 'a1'; req : pRequester location 'a2'; rport : pRastPort location 'a3'; which : CARDINAL location 'd0'; domain : pIBox location 'a4'; attrs : pTagItem location 'a5') : CARDINAL;
|
|
|
+SysCall DataTypesBase 306;
|
|
|
+
|
|
|
+function DoDTDomain(o : CARDINAL; win : pWindow; req : pRequester; rport : pRastPort; which : CARDINAL; domain : pIBox; attrs : array of LongWord) : CARDINAL; Inline;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+function InitDatatypesLibrary : boolean;
|
|
|
+
|
|
|
+
|
|
|
+implementation
|
|
|
+
|
|
|
+
|
|
|
+function ObtainDataType(type_ : CARDINAL; handle : POINTER; attrs : array of LongWord) : pDataType; Inline;
|
|
|
+begin
|
|
|
+ ObtainDataType:=ObtainDataTypeA(type_, handle, @attrs);
|
|
|
+end;
|
|
|
+
|
|
|
+function NewDTObject(name : PChar; attrs : array of LongWord) : CARDINAL; Inline;
|
|
|
+begin
|
|
|
+ NewDTObject:=NewDTObjectA(name, @attrs);
|
|
|
+end;
|
|
|
+
|
|
|
+function SetDTAttrs(o : CARDINAL; win : pWindow; req : pRequester; attrs : array of LongWord) : CARDINAL; Inline;
|
|
|
+begin
|
|
|
+ SetDTAttrs:=SetDTAttrsA(o, win, req, @attrs);
|
|
|
+end;
|
|
|
+
|
|
|
+function GetDTAttrs(o : CARDINAL; attrs : array of LongWord) : CARDINAL; Inline;
|
|
|
+begin
|
|
|
+ GetDTAttrs:=GetDTAttrsA(o, @attrs);
|
|
|
+end;
|
|
|
+
|
|
|
+function DoDTMethod(o : CARDINAL; win : pWindow; req : pRequester; msg : array of LongInt) : CARDINAL; Inline;
|
|
|
+begin
|
|
|
+ DoDTMethod:=DoDTMethodA(o, win, req, @msg);
|
|
|
+end;
|
|
|
+
|
|
|
+procedure RefreshDTObject(o : CARDINAL; win : pWindow; req : pRequester; attrs : array of LongWord); Inline;
|
|
|
+begin
|
|
|
+ RefreshDTObjectA(o, win, req, @attrs);
|
|
|
+end;
|
|
|
+
|
|
|
+function ObtainDTDrawInfo(o : CARDINAL; attrs : array of LongWord) : POINTER; Inline;
|
|
|
+begin
|
|
|
+ ObtainDTDrawInfo:=ObtainDTDrawInfoA(o, @attrs);
|
|
|
+end;
|
|
|
+
|
|
|
+function DrawDTObject(rp : pRastPort; o : CARDINAL; x : LongInt; y : LongInt; w : LongInt; h : LongInt; th : LongInt; tv : LongInt; attrs : array of LongWord) : LongInt; Inline;
|
|
|
+begin
|
|
|
+ DrawDTObject:=DrawDTObjectA(rp, o, x, y, w, h, th, tv, @attrs);
|
|
|
+end;
|
|
|
+
|
|
|
+function FindToolNode(tl : pList; attrs : array of LongWord) : pToolNode; Inline;
|
|
|
+begin
|
|
|
+ FindToolNode:=FindToolNodeA(tl, @attrs);
|
|
|
+end;
|
|
|
+
|
|
|
+function LaunchTool(t : pTool; project : pSHORTINT; attrs : array of LongWord) : CARDINAL; Inline;
|
|
|
+begin
|
|
|
+ LaunchTool:=LaunchToolA(t, project, @attrs);
|
|
|
+end;
|
|
|
+
|
|
|
+function SaveDTObject(o : CARDINAL; win : pWindow; req : pRequester; file_ : PChar; mode : CARDINAL; saveicon : BOOLEAN; attrs : array of LongWord) : CARDINAL; Inline;
|
|
|
+begin
|
|
|
+ SaveDTObject:=SaveDTObjectA(o, win, req, file_, mode, saveicon, @attrs);
|
|
|
+end;
|
|
|
+
|
|
|
+function DoDTDomain(o : CARDINAL; win : pWindow; req : pRequester; rport : pRastPort; which : CARDINAL; domain : pIBox; attrs : array of LongWord) : CARDINAL; Inline;
|
|
|
+begin
|
|
|
+ DoDTDomain:=DoDTDomainA(o, win, req, rport, which, domain, @attrs);
|
|
|
+end;
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ { Change VERSION and LIBVERSION to proper values }
|
|
|
+ VERSION : string[2] = '50';
|
|
|
+ LIBVERSION : longword = 50;
|
|
|
+
|
|
|
+var
|
|
|
+ datatypes_exit : Pointer;
|
|
|
+
|
|
|
+
|
|
|
+procedure CloseDatatypesLibrary;
|
|
|
+begin
|
|
|
+ ExitProc := datatypes_exit;
|
|
|
+ if DatatypesBase <> nil then begin
|
|
|
+ CloseLibrary(PLibrary(DatatypesBase));
|
|
|
+ DatatypesBase := nil;
|
|
|
+ end;
|
|
|
+end;
|
|
|
+
|
|
|
+function InitDatatypesLibrary : boolean;
|
|
|
+begin
|
|
|
+ DatatypesBase := nil;
|
|
|
+ DatatypesBase := OpenLibrary(DATATYPESNAME,LIBVERSION);
|
|
|
+ if DatatypesBase <> nil then begin
|
|
|
+ datatypes_exit := ExitProc;
|
|
|
+ ExitProc := @CloseDatatypesLibrary;
|
|
|
+ InitDatatypesLibrary:=True;
|
|
|
+ end else begin
|
|
|
+ InitDatatypesLibrary:=False;
|
|
|
+ end;
|
|
|
+end;
|
|
|
+
|
|
|
+
|
|
|
+end. { UNIT DATATYPES }
|