PIActions.h

Go to the documentation of this file.
00001 // ADOBE SYSTEMS INCORPORATED
00002 // (c) Copyright  1993 - 2005, 2009 Adobe Systems Incorporated
00003 // All Rights Reserved
00004 //
00005 // NOTICE:  Adobe permits you to use, modify, and distribute this 
00006 // file in accordance with the terms of the Adobe license agreement
00007 // accompanying it.  If you have received this file from a source
00008 // other than Adobe, then your use, modification, or distribution
00009 // of it requires the prior written permission of Adobe.
00010 //-------------------------------------------------------------------
00026 #ifndef __PIActions__ // Already defined?
00027 #define __PIActions__
00028 
00029 #if PRAGMA_ONCE
00030 #pragma once
00031 #endif
00032 
00033 #ifndef MSWindows
00034 #define MSWindows (MSDOS || WIN32)
00035 #endif
00036 
00037 #ifndef INSIDE_PHOTOSHOP
00038 #define INSIDE_PHOTOSHOP 0
00039 #endif
00040 
00041 #ifndef qiOS
00042 #define qiOS 0
00043 #endif
00044 
00045 #ifdef Rez
00046 
00047 #if !MSWindows && !qiOS
00048 #include <Carbon/Carbon.r>
00049 #endif
00050 
00051 #else
00052 
00053 #if !MSWindows && !qiOS
00054 #include <Carbon/Carbon.h>
00055 #endif
00056 
00057 #include "PITypes.h"
00058 #include "SPTypes.h"
00059 #include "SPPlugs.h"
00060 
00061 #endif // Rez
00062 
00063 //-------------------------------------------------------------------------------
00064 //  Flags for dictionary parameters.
00065 //-------------------------------------------------------------------------------
00066 
00072 
00073 
00074 
00076 #define flagsSingleParameter                    \
00077     required,           singleItem,     notEnumerated,  reserved,   \
00078     reserved,           reserved,       reserved,       reserved,   \
00079     reserved,           reserved,       reserved,       reserved,   \
00080     prepositionParam,   notFeminine,    notMasculine,   singular
00081 
00083 #define flagsListParameter                      \
00084     required,           listOfItems,    notEnumerated,  reserved,   \
00085     reserved,           reserved,       reserved,       reserved,   \
00086     reserved,           reserved,       reserved,       reserved,   \
00087     prepositionParam,   notFeminine,    notMasculine,   singular
00088 
00090 #define flagsEnumeratedParameter                \
00091     required,           singleItem,     enumerated,     reserved,   \
00092     reserved,           reserved,       reserved,       reserved,   \
00093     reserved,           reserved,       reserved,       reserved,   \
00094     prepositionParam,   notFeminine,    notMasculine,   singular
00095 
00098 #define flagsEnumeratedListParameter            \
00099     required,           listOfItems,    enumerated,     reserved,   \
00100     reserved,           reserved,       reserved,       reserved,   \
00101     reserved,           reserved,       reserved,       reserved,   \
00102     prepositionParam,   notFeminine,    notMasculine,   singular
00103 
00105 #define flagsOptionalSingleParameter            \
00106     optional,           singleItem,     notEnumerated,  reserved,   \
00107     reserved,           reserved,       reserved,       reserved,   \
00108     reserved,           reserved,       reserved,       reserved,   \
00109     prepositionParam,   notFeminine,    notMasculine,   singular
00110 
00112 #define flagsOptionalListParameter              \
00113     optional,           listOfItems,    notEnumerated,  reserved,   \
00114     reserved,           reserved,       reserved,       reserved,   \
00115     reserved,           reserved,       reserved,       reserved,   \
00116     prepositionParam,   notFeminine,    notMasculine,   singular
00117 
00119 #define flagsOptionalEnumeratedParameter        \
00120     optional,           singleItem,     enumerated,     reserved,   \
00121     reserved,           reserved,       reserved,       reserved,   \
00122     reserved,           reserved,       reserved,       reserved,   \
00123     prepositionParam,   notFeminine,    notMasculine,   singular
00124 
00127 #define flagsOptionalEnumeratedListParameter    \
00128     optional,           listOfItems,    enumerated,     reserved,   \
00129     reserved,           reserved,       reserved,       reserved,   \
00130     reserved,           reserved,       reserved,       reserved,   \
00131     prepositionParam,   notFeminine,    notMasculine,   singular
00132 
00133 // Flags for object properties:
00136 
00138 #define flagsSingleProperty                     \
00139     reserved,           singleItem,     notEnumerated,  readWrite,  \
00140     reserved,           reserved,       reserved,       reserved,   \
00141     reserved,           reserved,       reserved,       reserved,   \
00142     noApostrophe,       notFeminine,    notMasculine,   singular
00143 
00145 #define flagsListProperty                       \
00146     reserved,           listOfItems,    notEnumerated,  readWrite,  \
00147     reserved,           reserved,       reserved,       reserved,   \
00148     reserved,           reserved,       reserved,       reserved,   \
00149     noApostrophe,       notFeminine,    notMasculine,   singular
00150 
00152 #define flagsEnumeratedProperty                 \
00153     reserved,           singleItem,     enumerated,     readWrite,  \
00154     reserved,           reserved,       reserved,       reserved,   \
00155     reserved,           reserved,       reserved,       reserved,   \
00156     noApostrophe,       notFeminine,    notMasculine,   singular
00157 
00160 #define flagsEnumeratedListProperty             \
00161     reserved,           listOfItems,    enumerated,     readWrite,  \
00162     reserved,           reserved,       reserved,       reserved,   \
00163     reserved,           reserved,       reserved,       reserved,   \
00164     noApostrophe,       notFeminine,    notMasculine,   singular
00165 
00166 // Flags for direct dictionary parameters:
00167 
00169 
00172 #define flagsOptionalEnumeratedChangesDirect    \
00173     directParamOptional,    singleItem, enumerated, changesState,   \
00174     reserved,               reserved,   reserved,   reserved,       \
00175     reserved,               reserved,   reserved,   reserved,       \
00176     reserved,               reserved,   reserved,   reserved
00177 
00180 #define flagsEnumeratedChangesDirect    \
00181     directParamRequired,    singleItem, enumerated, changesState,   \
00182     reserved,               reserved,   reserved,   reserved,       \
00183     reserved,               reserved,   reserved,   reserved,       \
00184     reserved,               reserved,   reserved,   reserved
00185 
00188 #define flagsEnumeratedDirect   \
00189     directParamRequired,    singleItem, enumerated, doesntChangeState,  \
00190     reserved,               reserved,   reserved,   reserved,           \
00191     reserved,               reserved,   reserved,   reserved,           \
00192     reserved,               reserved,   reserved,   reserved
00193 
00196 #define flagsChangesDirect  \
00197     directParamRequired,    singleItem, notEnumerated,  changesState,   \
00198     reserved,               reserved,   reserved,       reserved,       \
00199     reserved,               reserved,   reserved,       reserved,       \
00200     reserved,               reserved,   reserved,       reserved
00201 
00204 #define flagsListChangesDirect  \
00205     directParamRequired,    listOfItems,    notEnumerated,  changesState,   \
00206     reserved,               reserved,       reserved,       reserved,       \
00207     reserved,               reserved,       reserved,       reserved,       \
00208     reserved,               reserved,       reserved,       reserved
00209 
00210 //-------------------------------------------------------------------------------
00211 //  Handy short cuts.
00212 //-------------------------------------------------------------------------------
00213 
00215 
00220 #define NO_REPLY        \
00221     noReply,            \
00222     "",                 \
00223     replyRequired,  singleItem, notEnumerated,  notTightBindingFunction,    \
00224     reserved,       reserved,   reserved,       reserved,                   \
00225     reserved,       reserved,   reserved,       reserved,                   \
00226     verbEvent,      reserved,   reserved,       reserved
00227 
00231 #define IMAGE_DIRECT_PARAMETER  \
00232     typeImageReference,         \
00233     "",                         \
00234     flagsOptionalEnumeratedChangesDirect
00235 
00237     // end defgroup
00239 //-------------------------------------------------------------------------------
00240 
00241 // NOTE: 1/21/98 (Ace) I'm going to leave these conditional defines in this
00242 // file to keep PITerminology devoid of conditionals:
00243 
00244 /* Normalize the AppleScript terminology */
00245 
00246 #if MSWindows   // These items come from AppleScript
00247 
00248 #ifndef AE_DESC_ENUMS
00249 #define AE_DESC_ENUMS
00250 
00251 
00252 #define  typeBoolean                   'bool'
00253 #define  typeChar                      'TEXT'
00254 
00255 /* Preferred numeric Apple event descriptor types */
00256 #define  typeSInt16                    'shor'
00257 #define  typeSInt32                    'long'
00258 #define  typeUInt32                    'magn'
00259 #define  typeSInt64                    'comp'
00260 #define  typeIEEE32BitFloatingPoint    'sing'
00261 #define  typeIEEE64BitFloatingPoint    'doub'
00262 #define  type128BitFloatingPoint       'ldbl'
00263 #define  typeDecimalStruct             'decm'
00264 
00265 /* Non-preferred Apple event descriptor types */
00266 #define  typeSMInt                     typeSInt16
00267 #define  typeShortInteger              typeSInt16
00268 #ifndef typeInteger
00269 #define  typeInteger                   typeSInt32
00270 #else
00271 #if (typeInteger != 'long')
00272     this_is_integer_trouble
00273 #endif
00274 #endif
00275 #define  typeLongInteger               typeSInt32
00276 #define  typeMagnitude                 typeUInt32
00277 #define  typeComp                      typeSInt64
00278 #define  typeSMFloat                   typeIEEE32BitFloatingPoint
00279 #define  typeShortFloat                typeIEEE32BitFloatingPoint
00280 #ifndef typeFloat
00281 #define  typeFloat                     typeIEEE64BitFloatingPoint
00282 #else
00283 #if (typeFloat != 'doub')
00284     this_is_float_trouble
00285 #endif
00286 #endif
00287 #define  typeLongFloat                 typeIEEE64BitFloatingPoint
00288 #define  typeExtended                  'exte'
00289 
00290 /* More Apple event descriptor types */
00291 #define  typeAEList                    'list'
00292 #define  typeAERecord                  'reco'
00293 #define  typeAppleEvent                'aevt'
00294 #define  typeEventRecord               'evrc'
00295 #define  typeTrue                      'true'
00296 #define  typeFalse                     'fals'
00297 #define  typeAlias                     'alis'
00298 #define  typeEnumerated                'enum'
00299 #define  typeType                      'type'
00300 #define  typeAppParameters             'appa'
00301 #define  typeProperty                  'prop'
00302 #define  typeFSS                       'fss '
00303 #define  typeFSRef                     'fsrf'
00304 #define  typeKeyword                   'keyw'
00305 #define  typeSectionH                  'sect'
00306 #define  typeWildCard                  '****'
00307 #define  typeApplSignature             'sign'
00308 #define  typeQDRectangle               'qdrt'
00309 #define  typeFixed                     'fixd'
00310 #define  typeProcessSerialNumber       'psn '
00311 #define  typeApplicationURL            'aprl'
00312 #define  typeNull                      'null'
00313 
00314 #endif // AE_DESC_ENUMS
00315 
00317 #define roman                   0        
00318 #define english                 0        
00319 #define japanese                11       
00321 #ifndef noReply                         
00322 #define noReply                 'null'
00323 #endif
00324 
00325 #ifndef __APPLEEVENTS__
00326 
00327 #define typeObjectSpecifier     'obj '   
00330 #endif /* __APPLEEVENTS __ */
00331 
00332 #if !INSIDE_PHOTOSHOP
00333 
00334 // The plug-ins need this stuff, but don't use the Universal Headers, so
00335 // we must provide it for them.
00336 
00337 #define formName                'name'
00338 
00339 #ifndef __AEOBJECTS__
00340 #define formAbsolutePosition    'indx'
00341 #define formPropertyID          'prop'
00342 #define formRelativePosition    'rele'
00343 #endif /* __AEOBJECTS__ */
00344 
00345 #endif  // !INSIDE_PHOTOSHOP
00346 
00347 #endif /* MSWindows */
00348 
00349 #if INSIDE_PHOTOSHOP || !defined(keySelection)
00350 #define keySelection            'fsel'  
00351 #endif
00352 
00353 #define typePath                'Pth '  
00355 #if MSWindows
00356 #define typePlatformFilePath    typePath
00357 #else
00358 #define typePlatformFilePath    typeAlias
00359 #endif
00360 
00361 
00362 //-------------------------------------------------------------------------------
00363 
00364 #ifndef Rez
00365 
00366 //-------------------------------------------------------------------------------
00367 
00372 
00373 
00374 
00389 #define PIHasTerminologyProperty    0x6873746DL /* 'hstm' <PITerminology> Has <aete, 0> resource:
00390                                                         version number
00391                                                         classID:        Object or event class
00392                                                         eventID:        For events (typeNull otherwise)
00393                                                         terminologyID:  'aete' resource ID (ignored if PITerminologyProperty)
00394                                                         scopeString:    Unique string present if
00395                                                                         AppleScript not supported
00396                                                 */
00397 
00402 #define PITerminologyProperty       0x74726D6EL /* 'trmn' <aete> Used internally as terminology cache.
00403                                                     If present it is used instead of an aete resource.
00404                                                 */
00405 
00409 
00411 
00414 
00416 typedef int32 PIDialogRecordOptions;
00417 
00421 enum
00422     {
00423     plugInDialogOptional,       
00424     plugInDialogRequired,       
00425     plugInDialogNone            
00426     };
00427 
00429 typedef int32 PIDialogPlayOptions;
00430 
00434 enum
00435     {
00436     plugInDialogDontDisplay,    
00437     plugInDialogDisplay,        
00438     plugInDialogSilent          
00441     };
00443 //-------------------------------------------------------------------------------
00444 //  Flags returned by GetKey. Low order word corresponds to AppleEvent flags.
00445 //-------------------------------------------------------------------------------
00446 
00451 
00452 
00453 
00457 #define actionSimpleParameter       0x00000000L
00458 #define actionEnumeratedParameter   0x00002000L
00459 #define actionListParameter         0x00004000L
00460 #define actionOptionalParameter     0x00008000L
00461 
00462 #define actionObjectParameter       0x80000000L
00463 #define actionScopedParameter       0x40000000L
00464 #define actionStringIDParameter     0x20000000L
00465 
00469 
00470 //-------------------------------------------------------------------------------
00471 
00472 typedef Handle PIDescriptorHandle;    
00474 typedef struct PIOpaqueWriteDescriptor* PIWriteDescriptor;  
00475 typedef struct PIOpaqueReadDescriptor*  PIReadDescriptor;   
00477 typedef uint32  DescriptorEventID;   
00478 typedef uint32  DescriptorClassID;   
00480 typedef uint32  DescriptorKeyID;    
00481 typedef uint32  DescriptorTypeID;   
00482 typedef uint32  DescriptorUnitID;   
00483 typedef uint32  DescriptorEnumID;   
00485 typedef uint32  DescriptorEnumTypeID; 
00488 typedef uint32  DescriptorFormID;   
00490 typedef DescriptorKeyID DescriptorKeyIDArray[]; 
00495 #if PRAGMA_STRUCT_ALIGN
00496 #pragma options align=mac68k
00497 #endif
00498 
00499 #if MSWindows
00500 #pragma pack(push,1)
00501 #endif
00502 
00521 typedef struct PITerminology
00522     {
00523     int32   version;           
00524     OSType  classID;           
00525     OSType  eventID;           
00526     int16   terminologyID;     
00528     char    scopeString[1];    
00535     } PITerminology;
00536 
00537 #if PRAGMA_STRUCT_ALIGN
00538 #pragma options align=reset
00539 #endif
00540 
00541 #if MSWindows
00542 #pragma pack(pop)
00543 #endif
00544 
00545 #define PITerminologyMinSize 15
00546 
00547 #if PRAGMA_STRUCT_ALIGN
00548 #pragma options align=mac68k
00549 #endif
00550 
00555 typedef struct PIDescriptorSimpleReference
00556     {
00557     DescriptorTypeID    desiredClass;  
00558     DescriptorKeyID     keyForm;       
00560     struct _keyData
00561         {
00562         Str255              name;     
00563         int32               index;    
00564         DescriptorTypeID    type;     
00565         DescriptorEnumID    value;    
00566         }               keyData;
00567     } PIDescriptorSimpleReference;
00568     
00569 #if PRAGMA_STRUCT_ALIGN
00570 #pragma options align=reset
00571 #endif
00572 
00573 //-------------------------------------------------------------------------------
00574 
00575 #ifdef __cplusplus
00576 extern "C"
00577     {
00578 #endif
00579 
00625 //-------------------------------------------------------------------------------
00627 
00628 
00636 typedef MACPASCAL PIWriteDescriptor (*OpenWriteDescriptorProc)(void);
00637 
00646 typedef MACPASCAL OSErr (*CloseWriteDescriptorProc)(PIWriteDescriptor, PIDescriptorHandle*);
00647 
00655 typedef MACPASCAL OSErr (*PutIntegerProc)(PIWriteDescriptor, DescriptorKeyID, int32);
00656 
00664 typedef MACPASCAL OSErr (*PutFloatProc)(PIWriteDescriptor, DescriptorKeyID, const real64*);
00665 
00674 typedef MACPASCAL OSErr (*PutUnitFloatProc)(PIWriteDescriptor, DescriptorKeyID, DescriptorUnitID, const real64*);
00675 
00683 typedef MACPASCAL OSErr (*PutBooleanProc)(PIWriteDescriptor, DescriptorKeyID, Boolean);
00684 
00692 typedef MACPASCAL OSErr (*PutTextProc)(PIWriteDescriptor, DescriptorKeyID, Handle);
00693 
00701 typedef MACPASCAL OSErr (*PutAliasProc)(PIWriteDescriptor, DescriptorKeyID, Handle);
00702 
00712 typedef MACPASCAL OSErr (*PutEnumeratedProc)(PIWriteDescriptor, DescriptorKeyID key, DescriptorTypeID type, DescriptorEnumID value);
00713 
00721 typedef MACPASCAL OSErr (*PutClassProc)(PIWriteDescriptor, DescriptorKeyID, DescriptorTypeID);
00722 
00731 typedef MACPASCAL OSErr (*PutSimpleReferenceProc)(PIWriteDescriptor, DescriptorKeyID, const PIDescriptorSimpleReference*);
00732 
00741 typedef MACPASCAL OSErr (*PutObjectProc)(PIWriteDescriptor, DescriptorKeyID, DescriptorTypeID, PIDescriptorHandle);
00742 
00750 typedef MACPASCAL OSErr (*PutCountProc)(PIWriteDescriptor, DescriptorKeyID, uint32 count);
00751 
00759 typedef MACPASCAL OSErr (*PutStringProc)(PIWriteDescriptor, DescriptorKeyID, ConstStr255Param);
00760 
00761 // Scoped classes are not for use by plug-ins in Photoshop 4.0:
00762 typedef MACPASCAL OSErr (*PutScopedClassProc)(PIWriteDescriptor, DescriptorKeyID, DescriptorTypeID);
00763 typedef MACPASCAL OSErr (*PutScopedObjectProc)(PIWriteDescriptor, DescriptorKeyID, DescriptorTypeID, PIDescriptorHandle);
00764 
00765 //-------------------------------------------------------------------------------
00767 
00768 
00779 typedef MACPASCAL PIReadDescriptor (*OpenReadDescriptorProc)(PIDescriptorHandle, DescriptorKeyIDArray);
00780 
00789 typedef MACPASCAL OSErr (*CloseReadDescriptorProc)(PIReadDescriptor);
00790 
00806 typedef MACPASCAL Boolean (*GetKeyProc)(PIReadDescriptor, DescriptorKeyID* key, DescriptorTypeID* type, int32* flags);
00807 
00816 typedef MACPASCAL OSErr (*GetIntegerProc)(PIReadDescriptor, int32*);
00817 
00826 typedef MACPASCAL OSErr (*GetFloatProc)(PIReadDescriptor, real64*);
00827 
00837 typedef MACPASCAL OSErr (*GetUnitFloatProc)(PIReadDescriptor, DescriptorUnitID*, real64*);
00838 
00847 typedef MACPASCAL OSErr (*GetBooleanProc)(PIReadDescriptor, Boolean*);
00848 
00857 typedef MACPASCAL OSErr (*GetTextProc)(PIReadDescriptor, Handle*);
00858 
00867 typedef MACPASCAL OSErr (*GetAliasProc)(PIReadDescriptor, Handle*);
00868 
00877 typedef MACPASCAL OSErr (*GetEnumeratedProc)(PIReadDescriptor, DescriptorEnumID*);
00878 
00887 typedef MACPASCAL OSErr (*GetClassProc)(PIReadDescriptor, DescriptorTypeID*);
00888 
00897 typedef MACPASCAL OSErr (*GetSimpleReferenceProc)(PIReadDescriptor, PIDescriptorSimpleReference*);
00898 
00909 typedef MACPASCAL OSErr (*GetObjectProc)(PIReadDescriptor, DescriptorTypeID*, PIDescriptorHandle*);
00910 
00917 typedef MACPASCAL OSErr (*GetCountProc)(PIReadDescriptor, uint32*);
00918 
00927 typedef MACPASCAL OSErr (*GetStringProc)(PIReadDescriptor, Str255*);
00928 
00944 typedef MACPASCAL OSErr (*GetPinnedIntegerProc)(PIReadDescriptor, int32 min, int32 max, int32*);
00945 
00961 typedef MACPASCAL OSErr (*GetPinnedFloatProc)(PIReadDescriptor, const real64* min, const real64* max, real64*);
00962 
00979 typedef MACPASCAL OSErr (*GetPinnedUnitFloatProc)(PIReadDescriptor, const real64* min, const real64* max, DescriptorUnitID*, real64*);
00981 //-------------------------------------------------------------------------------
00982 
00983 #ifdef __cplusplus
00984     }
00985 #endif
00986 
00987 //-------------------------------------------------------------------------------
00988 //  WriteDescriptorProcs structure.
00989 //-------------------------------------------------------------------------------
00990 
00991 // Version:
00992 #define kCurrentWriteDescriptorProcsVersion 0
00993 
00994 #if PRAGMA_STRUCT_ALIGN
00995 #pragma options align=mac68k
00996 #endif
00997 
01003 typedef struct WriteDescriptorProcs
01004     {
01005     int16 writeDescriptorProcsVersion;    
01006     int16 numWriteDescriptorProcs;        
01008     OpenWriteDescriptorProc     openWriteDescriptorProc;  
01009     CloseWriteDescriptorProc    closeWriteDescriptorProc; 
01011     PutIntegerProc              putIntegerProc;    
01012     PutFloatProc                putFloatProc;      
01013     PutUnitFloatProc            putUnitFloatProc;  
01014     PutBooleanProc              putBooleanProc;    
01015     PutTextProc                 putTextProc;       
01016     PutAliasProc                putAliasProc;      
01018     PutEnumeratedProc           putEnumeratedProc;  
01019     PutClassProc                putClassProc;       
01020     PutSimpleReferenceProc      putSimpleReferenceProc;  
01021     PutObjectProc               putObjectProc;      
01023     PutCountProc                putCountProc;       
01025     PutStringProc               putStringProc;      
01028     PutScopedClassProc          putScopedClassProc;  
01030     PutScopedObjectProc         putScopedObjectProc; 
01032     } WriteDescriptorProcs;
01033 
01034 #if PRAGMA_STRUCT_ALIGN
01035 #pragma options align=reset
01036 #endif
01037 
01038 // Count:
01039 #define kCurrentWriteDescriptorProcsCount \
01040     ((sizeof(WriteDescriptorProcs) - offsetof(WriteDescriptorProcs, openWriteDescriptorProc)) / sizeof(void*))
01041 
01042 //-------------------------------------------------------------------------------
01043 //  ReadDescriptorProcs structure.
01044 //-------------------------------------------------------------------------------
01045 
01046 // Version:
01047 #define kCurrentReadDescriptorProcsVersion 0
01048 
01049 #if PRAGMA_STRUCT_ALIGN
01050 #pragma options align=mac68k
01051 #endif
01052 
01058 typedef struct ReadDescriptorProcs
01059     {
01060     int16 readDescriptorProcsVersion;    
01061     int16 numReadDescriptorProcs;        
01063     OpenReadDescriptorProc      openReadDescriptorProc;    
01064     CloseReadDescriptorProc     closeReadDescriptorProc;   
01065     GetKeyProc                  getKeyProc;         
01067     GetIntegerProc              getIntegerProc;     
01068     GetFloatProc                getFloatProc;       
01069     GetUnitFloatProc            getUnitFloatProc;   
01070     GetBooleanProc              getBooleanProc;     
01071     GetTextProc                 getTextProc;        
01072     GetAliasProc                getAliasProc;       
01074     GetEnumeratedProc           getEnumeratedProc;  
01075     GetClassProc                getClassProc;       
01076     GetSimpleReferenceProc      getSimpleReferenceProc;  
01077     GetObjectProc               getObjectProc;      
01079     GetCountProc                getCountProc;       
01081     GetStringProc               getStringProc;      
01082     GetPinnedIntegerProc        getPinnedIntegerProc;   
01083     GetPinnedFloatProc          getPinnedFloatProc;     
01084     GetPinnedUnitFloatProc      getPinnedUnitFloatProc; 
01086     } ReadDescriptorProcs;
01087 
01088 #if PRAGMA_STRUCT_ALIGN
01089 #pragma options align=reset
01090 #endif
01091 
01092 // Count:
01093 #define kCurrentReadDescriptorProcsCount \
01094     ((sizeof(ReadDescriptorProcs) - offsetof(ReadDescriptorProcs, openReadDescriptorProc)) / sizeof(void*))
01095     
01096 //-------------------------------------------------------------------------------
01097 //  PIDescriptorParameters structure.
01098 //-------------------------------------------------------------------------------
01099 
01100 // Version of the Descriptor Parameters structure.
01101 #define kCurrentDescriptorParametersVersion 0
01102 
01103 #if PRAGMA_STRUCT_ALIGN
01104 #pragma options align=mac68k
01105 #endif
01106 
01111 typedef struct PIDescriptorParameters
01112     {
01113     int16                   descriptorParametersVersion;  
01114     int16                   playInfo;                     
01116     int16                   recordInfo;                   
01119     PIDescriptorHandle      descriptor;                   
01121     WriteDescriptorProcs*   writeDescriptorProcs;         
01122     ReadDescriptorProcs*    readDescriptorProcs;          
01123     } PIDescriptorParameters;
01124 
01125 #if PRAGMA_STRUCT_ALIGN
01126 #pragma options align=reset
01127 #endif
01128  // end ingroup DescriptorSuite
01130 
01131 //-------------------------------------------------------------------------------
01132 //  Window notify suite.
01133 //-------------------------------------------------------------------------------
01134 
01161 #if !MSWindows
01162 
01163 
01165 #define kPSWindowNotifySuite    "482963f4-3ea1-11d1-8da3-00c04fd5f7ee"
01167 #define kPSWindowNotifySuiteVersion 1
01168 
01169 #ifdef __cplusplus
01170 extern "C"
01171     {
01172 #endif
01173 
01180     struct EventRecord;
01181 
01182     typedef void (*PIWindowNotifier)(const EventRecord* event, void* data);
01183     
01184 #ifdef __cplusplus
01185     }
01186 #endif
01187 
01191 typedef struct PSWindowNotifyProcs
01192     {
01200     SPAPI OSErr (*AddNotify)(void* window, PIWindowNotifier notifier, void* data);
01201 
01207     SPAPI OSErr (*RemoveNotify)(void* window);
01208 
01209 } PSWindowNotifyProcs;
01210     
01211 #endif
01212 
01215 //-------------------------------------------------------------------------------
01216 
01220 typedef struct _ADsc*   PIActionDescriptor; 
01221 
01225 typedef struct _ALst*   PIActionList;
01226 
01230 typedef struct _ARef*   PIActionReference;
01231 
01232 // other define for this is in ASZStringSuite.h;  placed here for SuspendHistory
01233 #ifndef ASZString_defined
01234 #define ASZString_defined
01235 struct ASZByteRun;
01236 typedef struct ASZByteRun *ASZString;
01237 #endif
01238 
01239 //-------------------------------------------------------------------------------
01240 //  ActionControl suite.  Available only in Automation plug-ins.
01241 //-------------------------------------------------------------------------------
01242 
01271 
01272 #define kPSActionControlSuite           "bc1e4d70-f953-11d0-8d9f-00c04fd5f7ee"
01273 
01275 #define kPSActionControlSuiteVersion        3   // Current version, but it's
01276 
01278 #define kPSActionControlSuitePrevVersion    2   // compatible with version 2
01279 
01280 #ifdef __cplusplus
01281 extern "C"
01282     {
01283 #endif
01284 
01293     typedef void (*PIEventNotifier)(DescriptorEventID eventID, PIActionDescriptor descriptor, PIDialogRecordOptions options, void* data);
01294         
01301     typedef SPErr (*PISuspendProc)(void *data);
01302         
01303 #ifdef __cplusplus
01304     }
01305 #endif      
01306 
01310 typedef struct PSActionControlProcs
01311     {
01312 
01322     SPAPI OSErr (*Play)(PIActionDescriptor* result, DescriptorEventID event, PIActionDescriptor descriptor, PIDialogPlayOptions options);
01323     
01335     SPAPI OSErr (*Get)(PIActionDescriptor* result, PIActionReference reference);
01336 
01343     SPAPI OSErr (*StringIDToTypeID)(const char* stringID, DescriptorTypeID* typeID);
01344         
01352     SPAPI OSErr (*TypeIDToStringID)(DescriptorTypeID typeID, char* stringID, uint32 stringLength);
01353 
01367     SPAPI OSErr (*AddNotify)(SPPluginRef ref, DescriptorEventID event, PIEventNotifier notifier, void* data);
01368 
01376     SPAPI OSErr (*RemoveNotify)(SPPluginRef ref, DescriptorEventID event);
01377         
01391     SPAPI OSErr (*SuspendHistory)(PIActionReference reference, PISuspendProc proc, void* procData, ASZString operationName);
01392 
01402     SPAPI OSErr (*MakeStringAlias)(const char*  newStringID, const char* existingStringID);
01403 
01404     } PSActionControlProcs;
01405 /* @} */
01406 //-------------------------------------------------------------------------------
01407 //  Basic Action control suite.  Available to non-Automation plug-ins.
01408 //-------------------------------------------------------------------------------
01409 
01437 
01438 #define kPSBasicActionControlSuite          "3eb7c480-8797-11d1-8da7-00c04fd5f7ee"
01440 #define kPSBasicActionControlSuiteVersion       2   
01442 #define kPSBasicActionControlSuitePrevVersion   1   
01443 
01447 typedef struct PSBasicActionControlProcs
01448     {
01449 
01459     SPAPI OSErr (*Get)(PIActionDescriptor* result, PIActionReference reference);
01460         
01467     SPAPI OSErr (*StringIDToTypeID)(const char* stringID,   DescriptorTypeID* typeID);
01468         
01476     SPAPI OSErr (*TypeIDToStringID)(DescriptorTypeID typeID, char* stringID, uint32 stringLength);
01477 
01487     SPAPI OSErr (*MakeStringAlias)(const char* newStringID, const char* existingStringID);
01488 
01489     } PSBasicActionControlProcs;
01493 //-------------------------------------------------------------------------------
01494 //  DescriptorRegistry suite.  Use to pass descriptors between plug-ins or
01495 //  save parameters between invocations.
01496 //-------------------------------------------------------------------------------
01497 
01526 
01527 #define kPSDescriptorRegistrySuite          "61e608b0-40fd-11d1-8da3-00c04fd5f7ee"
01529 #define kPSDescriptorRegistrySuiteVersion   1
01530 
01534 typedef struct PSDescriptorRegistryProcs
01535     {
01536 
01545     SPAPI OSErr (*Register)(const char* key, PIActionDescriptor descriptor, Boolean isPersistent);
01546         
01552     SPAPI OSErr (*Erase)(const char* key);
01553         
01561     SPAPI OSErr (*Get)(const char* key, PIActionDescriptor* descriptor);
01562 
01563     } PSDescriptorRegistryProcs;
01564 
01565 /* @} */
01566 
01567 //-------------------------------------------------------------------------------
01568 //  ActionDescriptor suite.  Use for putting keys and objects into descriptors,
01569 //  getting them out of descriptors, and other descriptor management.
01570 //-------------------------------------------------------------------------------
01599 
01600 #define kPSActionDescriptorSuite            "df135115-c769-11d0-8079-00c04fd7ec47"
01602 #define kPSActionDescriptorSuiteVersion     3
01603 #define kPSActionDescriptorSuitePrevVersion 2
01604 
01608 typedef struct PSActionDescriptorProcs
01609     {
01615     SPAPI OSErr (*Make)(PIActionDescriptor* descriptor);
01616     
01622     SPAPI OSErr (*Free)(PIActionDescriptor descriptor);
01623     
01632     SPAPI OSErr (*GetType)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorTypeID* type);
01633     
01643     SPAPI OSErr (*GetKey)(PIActionDescriptor descriptor, uint32 index, DescriptorKeyID* key);
01644     
01653     SPAPI OSErr (*HasKey)(PIActionDescriptor descriptor, DescriptorKeyID key, Boolean* hasKey);
01654 
01661     SPAPI OSErr (*GetCount)(PIActionDescriptor descriptor, uint32* count);
01662 
01670     SPAPI OSErr (*IsEqual)(PIActionDescriptor descriptor, PIActionDescriptor other, Boolean* isEqual);
01671     
01678     SPAPI OSErr (*Erase)(PIActionDescriptor descriptor, DescriptorKeyID );
01679     
01685     SPAPI OSErr (*Clear)(PIActionDescriptor descriptor);
01686     
01694     SPAPI OSErr (*PutInteger)(PIActionDescriptor descriptor, DescriptorKeyID key, int32 value);
01695 
01703     SPAPI OSErr (*PutFloat)(PIActionDescriptor descriptor, DescriptorKeyID key, real64 value);
01704 
01713     SPAPI OSErr (*PutUnitFloat)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorUnitID unit, real64 value);
01714     
01722     SPAPI OSErr (*PutString)(PIActionDescriptor descriptor, DescriptorKeyID key,  char* cstrValue);
01723     
01731     SPAPI OSErr (*PutBoolean)(PIActionDescriptor descriptor, DescriptorKeyID key, Boolean value);
01732     
01740     SPAPI OSErr (*PutList)(PIActionDescriptor descriptor, DescriptorKeyID key,  PIActionList value);
01741     
01753     SPAPI OSErr (*PutObject)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorClassID type,  PIActionDescriptor value);
01754     
01763     SPAPI OSErr (*PutGlobalObject)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorClassID type,  PIActionDescriptor value);
01764 
01773     SPAPI OSErr (*PutEnumerated)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorEnumTypeID type, DescriptorEnumID value);
01774 
01782     SPAPI OSErr (*PutReference)(PIActionDescriptor descriptor, DescriptorKeyID key,  PIActionReference value);
01783     
01791     SPAPI OSErr (*PutClass)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorClassID value);
01792 
01800     SPAPI OSErr (*PutGlobalClass)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorClassID value);
01801 
01809     SPAPI OSErr (*PutAlias)(PIActionDescriptor descriptor, DescriptorKeyID key, Handle value);
01810 
01818     SPAPI OSErr (*GetInteger)(PIActionDescriptor descriptor, DescriptorKeyID key, int32* value);
01819     
01827     SPAPI OSErr (*GetFloat)(PIActionDescriptor descriptor, DescriptorKeyID key, real64* value);
01828     
01837     SPAPI OSErr (*GetUnitFloat)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorUnitID* unit, real64* value);
01838     
01846     SPAPI OSErr (*GetStringLength)(PIActionDescriptor descriptor, DescriptorKeyID key, uint32* stringLength);
01847     
01856     SPAPI OSErr (*GetString)(PIActionDescriptor descriptor, DescriptorKeyID key, char* cstrValue, uint32 maxLength);
01857 
01865     SPAPI OSErr (*GetBoolean)(PIActionDescriptor descriptor, DescriptorKeyID key, Boolean* value);
01866 
01874     SPAPI OSErr (*GetList)(PIActionDescriptor descriptor, DescriptorKeyID key, PIActionList* value);
01875 
01887     SPAPI OSErr (*GetObject)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorClassID* type, PIActionDescriptor* value);
01888     
01897     SPAPI OSErr (*GetGlobalObject)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorClassID* type, PIActionDescriptor* value);
01898     
01907     SPAPI OSErr (*GetEnumerated)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorEnumTypeID* type, DescriptorEnumID* value);
01908     
01916     SPAPI OSErr (*GetReference)(PIActionDescriptor descriptor, DescriptorKeyID key, PIActionReference* value);
01917     
01925     SPAPI OSErr (*GetClass)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorClassID* value);
01926     
01934     SPAPI OSErr (*GetGlobalClass)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorClassID* value);
01935     
01943     SPAPI OSErr (*GetAlias)(PIActionDescriptor descriptor, DescriptorKeyID key, Handle* value);
01944 
01952     SPAPI OSErr (*HasKeys)(PIActionDescriptor descriptor, DescriptorKeyIDArray requiredKeys, Boolean* hasKeys);
01953 
01962     SPAPI OSErr (*PutIntegers)(PIActionDescriptor descriptor, DescriptorKeyID key, uint32 count,  int32* );
01963 
01972     SPAPI OSErr (*GetIntegers)(PIActionDescriptor descriptor, DescriptorKeyID key, uint32 count, int32* value);
01973 
01984     SPAPI OSErr (*AsHandle)(PIActionDescriptor descriptor, PIDescriptorHandle* value);
01985 
01996     SPAPI OSErr (*HandleToDescriptor)(PIDescriptorHandle value, PIActionDescriptor* descriptor);
01997     
02005     SPAPI OSErr (*PutZString)(PIActionDescriptor descriptor, DescriptorKeyID key, ASZString zstring);
02006 
02014     SPAPI OSErr (*GetZString)(PIActionDescriptor descriptor, DescriptorKeyID key, ASZString* zstring);
02015     
02024     SPAPI OSErr (*PutData)(PIActionDescriptor descriptor, DescriptorKeyID key, int32 length, void* value);
02025 
02033     SPAPI OSErr (*GetDataLength)(PIActionDescriptor descriptor, DescriptorKeyID key, int32* value);
02034 
02042     SPAPI OSErr (*GetData)(PIActionDescriptor descriptor, DescriptorKeyID key, void* value);
02043 
02051     SPAPI OSErr (*PutInteger64)(PIActionDescriptor descriptor, DescriptorKeyID key, int64 value);
02052 
02060     SPAPI OSErr (*GetInteger64)(PIActionDescriptor descriptor, DescriptorKeyID key, int64* value);
02061 
02062     } PSActionDescriptorProcs;
02063 /* @} */
02064 
02065 
02066 //-------------------------------------------------------------------------------
02067 //  ActionList suite.  Use to manage lists of keys.
02068 //-------------------------------------------------------------------------------
02097 
02098 #define kPSActionListSuite          "df135116-c769-11d0-8079-00c04fd7ec47"
02100 #define kPSActionListSuiteVersion       2
02101 #define kPSActionListSuitePrevVersion   1
02102 
02106 typedef struct PSActionListProcs
02107     {
02108     
02114     SPAPI OSErr (*Make)(PIActionList* actionList);
02115     
02121     SPAPI OSErr (*Free)(PIActionList actionList);
02122 
02134     SPAPI OSErr (*GetType)(PIActionList list, uint32 index, DescriptorTypeID* value);
02135 
02142     SPAPI OSErr (*GetCount)(PIActionList list, uint32* value);
02143 
02150     SPAPI OSErr (*PutInteger)(PIActionList list, int32 value);
02151 
02158     SPAPI OSErr (*PutFloat)(PIActionList list, real64 value);
02159 
02167     SPAPI OSErr (*PutUnitFloat)(PIActionList list, DescriptorUnitID unit, real64 value);
02168     
02175     SPAPI OSErr (*PutString)(PIActionList list, char* cstr);
02176     
02183     SPAPI OSErr (*PutBoolean)(PIActionList list, Boolean value);
02184     
02191     SPAPI OSErr (*PutList)(PIActionList list, PIActionList value);
02192     
02203     SPAPI OSErr (*PutObject)(PIActionList list, DescriptorClassID type, PIActionDescriptor value);
02204     
02215     SPAPI OSErr (*PutGlobalObject)(PIActionList list, DescriptorClassID type, PIActionDescriptor value);
02216     
02224     SPAPI OSErr (*PutEnumerated)(PIActionList list, DescriptorEnumTypeID type, DescriptorEnumID value);
02225     
02232     SPAPI OSErr (*PutReference)(PIActionList list, PIActionReference value);
02233     
02240     SPAPI OSErr (*PutClass)(PIActionList list, DescriptorClassID value);
02241     
02248     SPAPI OSErr (*PutGlobalClass)(PIActionList list, DescriptorClassID value);
02249     
02256     SPAPI OSErr (*PutAlias)(PIActionList list, Handle value);
02257 
02268     SPAPI OSErr (*GetInteger)(PIActionList list, uint32 index, int32* value);
02269 
02280     SPAPI OSErr (*GetFloat)(PIActionList list, uint32 index, real64* value);
02281 
02293     SPAPI OSErr (*GetUnitFloat)(PIActionList list, uint32 index, DescriptorUnitID* unit, real64* value);
02294 
02302     SPAPI OSErr (*GetStringLength)(PIActionList list, uint32 index, uint32* stringLength);
02303 
02312     SPAPI OSErr (*GetString)(PIActionList list, uint32 index, char* cstr, uint32 maxLength);
02313 
02321     SPAPI OSErr (*GetBoolean)(PIActionList list, uint32 index, Boolean* value);
02322 
02330     SPAPI OSErr (*GetList)(PIActionList list, uint32 index, PIActionList* actionList);
02331 
02343     SPAPI OSErr (*GetObject)(PIActionList list, uint32 index, DescriptorClassID* type, PIActionDescriptor* value);
02344 
02356     SPAPI OSErr (*GetGlobalObject)(PIActionList list, uint32 index, DescriptorClassID* type, PIActionDescriptor* value);
02357 
02366     SPAPI OSErr (*GetEnumerated)(PIActionList list, uint32 index, DescriptorEnumTypeID* type, DescriptorEnumID* value);
02367 
02375     SPAPI OSErr (*GetReference)(PIActionList list, uint32 index, PIActionReference* value);
02376 
02384     SPAPI OSErr (*GetClass)(PIActionList list, uint32 index, DescriptorClassID* value);
02385 
02393     SPAPI OSErr (*GetGlobalClass)(PIActionList list, uint32 index, DescriptorClassID* value);
02394 
02402     SPAPI OSErr (*GetAlias)(PIActionList list, uint32 index, Handle* aliasHandle);
02403 
02411     SPAPI OSErr (*PutIntegers)(PIActionList list, uint32 count, int32* );
02412 
02420     SPAPI OSErr (*GetIntegers)(PIActionList list, uint32 count, int32* value);
02421 
02429     SPAPI OSErr (*PutData)(PIActionList list, int32 length, void* data);
02430 
02438     SPAPI OSErr (*GetDataLength)(PIActionList list, uint32 index, int32* length);
02439 
02447     SPAPI OSErr (*GetData)(PIActionList list, uint32 index, void* value);
02448 
02455     SPAPI OSErr (*PutZString)(PIActionList list, ASZString zstring);
02456 
02464     SPAPI OSErr (*GetZString)(PIActionList list, uint32 index, ASZString* zstring);
02465 
02472     SPAPI OSErr (*PutInteger64)(PIActionList list, int64 value);
02473 
02485     SPAPI OSErr (*GetInteger64)(PIActionList list, uint32 index, int64 *value);
02486 
02487 
02488     } PSActionListProcs;
02489 /* @} */
02490 
02491 
02492 //-------------------------------------------------------------------------------
02493 //  ActionReference suite.  Use to build references to objects to be able to
02494 //  get/set properties and target events.
02495 //-------------------------------------------------------------------------------
02496 
02527 
02528 #define kPSActionReferenceSuite         "df135117-c769-11d0-8079-00c04fd7ec47"
02530 #define kPSActionReferenceSuiteVersion  3
02531 #define kPSActionReferenceSuitePrevVersion  2
02532 
02536 typedef struct PSActionReferenceProcs
02537     {
02538 
02544     SPAPI OSErr (*Make)(PIActionReference* reference);
02545     
02551     SPAPI OSErr (*Free)(PIActionReference ref);
02552 
02562     SPAPI OSErr (*GetForm)(PIActionReference ref, DescriptorFormID* value);
02563 
02570     SPAPI OSErr (*GetDesiredClass)(PIActionReference ref, DescriptorClassID* value);
02571 
02579     SPAPI OSErr (*PutName)(PIActionReference ref, DescriptorClassID desiredClass, char* cstrValue);
02580 
02588     SPAPI OSErr (*PutIndex)(PIActionReference ref, DescriptorClassID desiredClass, uint32 value);
02589 
02597     SPAPI OSErr (*PutIdentifier)(PIActionReference ref, DescriptorClassID desiredClass, uint32 value);
02598 
02606     SPAPI OSErr (*PutOffset)(PIActionReference ref, DescriptorClassID desiredClass, int32 value);
02607 
02617     SPAPI OSErr (*PutEnumerated)(PIActionReference ref, DescriptorClassID desiredClass, DescriptorEnumTypeID type, DescriptorEnumID value);
02618 
02626     SPAPI OSErr (*PutProperty)(PIActionReference ref, DescriptorClassID desiredClass, DescriptorKeyID value);
02627 
02634     SPAPI OSErr (*PutClass)(PIActionReference ref, DescriptorClassID desiredClass);
02635     
02642     SPAPI OSErr (*GetNameLength)(PIActionReference ref, uint32* stringLength);
02643 
02651     SPAPI OSErr (*GetName)(PIActionReference ref, char* name, uint32 maxLength);
02652 
02659     SPAPI OSErr (*GetIndex)(PIActionReference ref, uint32* value);
02660 
02667     SPAPI OSErr (*GetIdentifier)(PIActionReference ref, uint32* value);
02668 
02675     SPAPI OSErr (*GetOffset)(PIActionReference ref, int32* value);
02676 
02684     SPAPI OSErr (*GetEnumerated)(PIActionReference ref, DescriptorEnumTypeID* type, DescriptorEnumID* enumValue);
02685 
02692     SPAPI OSErr (*GetProperty)(PIActionReference ref, DescriptorKeyID* value);
02693 
02702     SPAPI OSErr (*GetContainer)(PIActionReference ref, PIActionReference* value);
02703 
02711     SPAPI OSErr (*PutNameZString)(PIActionReference ref, DescriptorClassID desiredClass, ASZString zstring);
02712 
02720     SPAPI OSErr (*GetNameZString)(PIActionReference ref, ASZString* zstring);
02721 
02722     } PSActionReferenceProcs;
02727 //-------------------------------------------------------------------------------
02728 //  PIActionParameters structure.
02729 //-------------------------------------------------------------------------------
02730 #if PRAGMA_STRUCT_ALIGN
02731 #pragma options align=mac68k
02732 #endif
02733 
02734 #if MSWindows
02735 #pragma pack(push,1)
02736 #endif
02737 
02745 typedef struct PIActionParameters
02746     {
02747     
02748     PIDialogPlayOptions     playInfo;   
02750     PIDialogRecordOptions   recordInfo; 
02752     PIActionDescriptor      descriptor; 
02755     } PIActionParameters;
02756 
02757 
02758 #if PRAGMA_STRUCT_ALIGN
02759 #pragma options align=reset
02760 #endif
02761 
02762 #if MSWindows
02763 #pragma pack(pop)
02764 #endif
02765 
02766 //-------------------------------------------------------------------------------
02767 
02768 #endif // Rez
02769 
02770 //-------------------------------------------------------------------------------
02771 
02772 #endif // __PIActions_h__