PIActions.h

Go to the documentation of this file.
00001 // ADOBE SYSTEMS INCORPORATED
00002 // Copyright  1993 - 2005 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 
00042 #ifdef Rez
00043 
00044 #ifdef SystemSevenOrLater
00045 #undef SystemSevenOrLater
00046 #endif
00047 
00048 #define SystemSevenOrLater 1
00049 
00050 #if !MSWindows
00051 #if defined(__MACH__) || defined(BUILDING_FOR_MACH)
00052 #include <MacTypes.r>
00053 #else
00054 #include <Types.r>
00055 #endif
00056 #include "AEUserTermTypes.r"
00057 #include "AppleEvents.r"
00058 #endif
00059 
00060 #else
00061 
00062 #include "PITypes.h"
00063 #include "SPTypes.h"
00064 #include "SPPlugs.h"
00065 
00066 #if !MSWindows && !INSIDE_PHOTOSHOP
00067 #include "AERegistry.h"
00068 #endif
00069 
00070 #endif // Rez
00071 
00072 //-------------------------------------------------------------------------------
00073 //  Flags for dictionary parameters.
00074 //-------------------------------------------------------------------------------
00075 
00081 
00082 
00083 
00085 #define flagsSingleParameter                    \
00086     required,           singleItem,     notEnumerated,  reserved,   \
00087     reserved,           reserved,       reserved,       reserved,   \
00088     reserved,           reserved,       reserved,       reserved,   \
00089     prepositionParam,   notFeminine,    notMasculine,   singular
00090 
00092 #define flagsListParameter                      \
00093     required,           listOfItems,    notEnumerated,  reserved,   \
00094     reserved,           reserved,       reserved,       reserved,   \
00095     reserved,           reserved,       reserved,       reserved,   \
00096     prepositionParam,   notFeminine,    notMasculine,   singular
00097 
00099 #define flagsEnumeratedParameter                \
00100     required,           singleItem,     enumerated,     reserved,   \
00101     reserved,           reserved,       reserved,       reserved,   \
00102     reserved,           reserved,       reserved,       reserved,   \
00103     prepositionParam,   notFeminine,    notMasculine,   singular
00104 
00107 #define flagsEnumeratedListParameter            \
00108     required,           listOfItems,    enumerated,     reserved,   \
00109     reserved,           reserved,       reserved,       reserved,   \
00110     reserved,           reserved,       reserved,       reserved,   \
00111     prepositionParam,   notFeminine,    notMasculine,   singular
00112 
00114 #define flagsOptionalSingleParameter            \
00115     optional,           singleItem,     notEnumerated,  reserved,   \
00116     reserved,           reserved,       reserved,       reserved,   \
00117     reserved,           reserved,       reserved,       reserved,   \
00118     prepositionParam,   notFeminine,    notMasculine,   singular
00119 
00121 #define flagsOptionalListParameter              \
00122     optional,           listOfItems,    notEnumerated,  reserved,   \
00123     reserved,           reserved,       reserved,       reserved,   \
00124     reserved,           reserved,       reserved,       reserved,   \
00125     prepositionParam,   notFeminine,    notMasculine,   singular
00126 
00128 #define flagsOptionalEnumeratedParameter        \
00129     optional,           singleItem,     enumerated,     reserved,   \
00130     reserved,           reserved,       reserved,       reserved,   \
00131     reserved,           reserved,       reserved,       reserved,   \
00132     prepositionParam,   notFeminine,    notMasculine,   singular
00133 
00136 #define flagsOptionalEnumeratedListParameter    \
00137     optional,           listOfItems,    enumerated,     reserved,   \
00138     reserved,           reserved,       reserved,       reserved,   \
00139     reserved,           reserved,       reserved,       reserved,   \
00140     prepositionParam,   notFeminine,    notMasculine,   singular
00141 
00142 // Flags for object properties:
00145 
00147 #define flagsSingleProperty                     \
00148     reserved,           singleItem,     notEnumerated,  readWrite,  \
00149     reserved,           reserved,       reserved,       reserved,   \
00150     reserved,           reserved,       reserved,       reserved,   \
00151     noApostrophe,       notFeminine,    notMasculine,   singular
00152 
00154 #define flagsListProperty                       \
00155     reserved,           listOfItems,    notEnumerated,  readWrite,  \
00156     reserved,           reserved,       reserved,       reserved,   \
00157     reserved,           reserved,       reserved,       reserved,   \
00158     noApostrophe,       notFeminine,    notMasculine,   singular
00159 
00161 #define flagsEnumeratedProperty                 \
00162     reserved,           singleItem,     enumerated,     readWrite,  \
00163     reserved,           reserved,       reserved,       reserved,   \
00164     reserved,           reserved,       reserved,       reserved,   \
00165     noApostrophe,       notFeminine,    notMasculine,   singular
00166 
00169 #define flagsEnumeratedListProperty             \
00170     reserved,           listOfItems,    enumerated,     readWrite,  \
00171     reserved,           reserved,       reserved,       reserved,   \
00172     reserved,           reserved,       reserved,       reserved,   \
00173     noApostrophe,       notFeminine,    notMasculine,   singular
00174 
00175 // Flags for direct dictionary parameters:
00176 
00178 
00181 #define flagsOptionalEnumeratedChangesDirect    \
00182     directParamOptional,    singleItem, enumerated, changesState,   \
00183     reserved,               reserved,   reserved,   reserved,       \
00184     reserved,               reserved,   reserved,   reserved,       \
00185     reserved,               reserved,   reserved,   reserved
00186 
00189 #define flagsEnumeratedChangesDirect    \
00190     directParamRequired,    singleItem, enumerated, changesState,   \
00191     reserved,               reserved,   reserved,   reserved,       \
00192     reserved,               reserved,   reserved,   reserved,       \
00193     reserved,               reserved,   reserved,   reserved
00194 
00197 #define flagsEnumeratedDirect   \
00198     directParamRequired,    singleItem, enumerated, doesntChangeState,  \
00199     reserved,               reserved,   reserved,   reserved,           \
00200     reserved,               reserved,   reserved,   reserved,           \
00201     reserved,               reserved,   reserved,   reserved
00202 
00205 #define flagsChangesDirect  \
00206     directParamRequired,    singleItem, notEnumerated,  changesState,   \
00207     reserved,               reserved,   reserved,       reserved,       \
00208     reserved,               reserved,   reserved,       reserved,       \
00209     reserved,               reserved,   reserved,       reserved
00210 
00213 #define flagsListChangesDirect  \
00214     directParamRequired,    listOfItems,    notEnumerated,  changesState,   \
00215     reserved,               reserved,       reserved,       reserved,       \
00216     reserved,               reserved,       reserved,       reserved,       \
00217     reserved,               reserved,       reserved,       reserved
00218 
00219 //-------------------------------------------------------------------------------
00220 //  Handy short cuts.
00221 //-------------------------------------------------------------------------------
00222 
00224 
00229 #define NO_REPLY        \
00230     noReply,            \
00231     "",                 \
00232     replyRequired,  singleItem, notEnumerated,  notTightBindingFunction,    \
00233     reserved,       reserved,   reserved,       reserved,                   \
00234     reserved,       reserved,   reserved,       reserved,                   \
00235     verbEvent,      reserved,   reserved,       reserved
00236 
00240 #define IMAGE_DIRECT_PARAMETER  \
00241     typeImageReference,         \
00242     "",                         \
00243     flagsOptionalEnumeratedChangesDirect
00244 
00246     // end defgroup
00248 //-------------------------------------------------------------------------------
00249 
00250 // NOTE: 1/21/98 (Ace) I'm going to leave these conditional defines in this
00251 // file to keep PITerminology devoid of conditionals:
00252 
00253 /* Normalize the AppleScript terminology */
00254 
00255 #if MSWindows   // These items come from AppleScript
00256 
00257 // New universal headers use enums, not defines!
00258 
00259 #define typeFloat               'doub'   
00260 #define typeInteger             'long'   
00261 #define typeBoolean             'bool'   
00262 #define typeAlias               'alis'   
00263 #define typeNull                'null'   
00266 #define roman                   0        
00267 #define english                 0        
00268 #define japanese                11       
00270 #ifndef noReply                         
00271 #define noReply                 typeNull 
00272 #endif
00273 
00274 #ifndef __APPLEEVENTS__
00275 
00276 #define typeType                'type'   
00277 #define typeChar                'TEXT'   
00278 #define typeObjectSpecifier     'obj '   
00279 #define typeEnumerated          'enum'   
00280 // tpr #define typeText             typeChar 
00283 #endif /* __APPLEEVENTS __ */
00284 
00285 #if !INSIDE_PHOTOSHOP
00286 
00287 // The plug-ins need this stuff, but don't use the Universal Headers, so
00288 // we must provide it for them.
00289 
00290 #define formName                'name'
00291 
00292 #ifndef __AEOBJECTS__
00293 #define formAbsolutePosition    'indx'
00294 #define formPropertyID          'prop'
00295 #define formRelativePosition    'rele'
00296 #endif /* __AEOBJECTS__ */
00297 
00298 #endif  // !INSIDE_PHOTOSHOP
00299 
00300 #endif /* MSWindows */
00301 
00302 #if INSIDE_PHOTOSHOP || !defined(keySelection)
00303 #define keySelection            'fsel'  
00304 #endif
00305 
00306 #define typePath                'Pth '  
00308 #if MSWindows
00309 #define typePlatformFilePath    typePath
00310 #else
00311 #define typePlatformFilePath    typeAlias
00312 #endif
00313 
00314 
00315 //-------------------------------------------------------------------------------
00316 
00317 #ifndef Rez
00318 
00319 //-------------------------------------------------------------------------------
00320 
00325 
00326 
00327 
00342 #define PIHasTerminologyProperty    0x6873746DL /* 'hstm' <PITerminology> Has <aete, 0> resource:
00343                                                         version number
00344                                                         classID:        Object or event class
00345                                                         eventID:        For events (typeNull otherwise)
00346                                                         terminologyID:  'aete' resource ID (ignored if PITerminologyProperty)
00347                                                         scopeString:    Unique string present if
00348                                                                         AppleScript not supported
00349                                                 */
00350 
00355 #define PITerminologyProperty       0x74726D6EL /* 'trmn' <aete> Used internally as terminology cache.
00356                                                     If present it is used instead of an aete resource.
00357                                                 */
00358 
00362 
00366 
00368 typedef int32 PIDialogRecordOptions;
00369 
00373 enum
00374     {
00375     plugInDialogOptional,       
00376     plugInDialogRequired,       
00377     plugInDialogNone            
00378     };
00379 
00381 typedef int32 PIDialogPlayOptions;
00382 
00386 enum
00387     {
00388     plugInDialogDontDisplay,    
00389     plugInDialogDisplay,        
00390     plugInDialogSilent          
00393     };
00395 //-------------------------------------------------------------------------------
00396 //  Flags returned by GetKey. Low order word corresponds to AppleEvent flags.
00397 //-------------------------------------------------------------------------------
00398 
00403 
00404 
00405 
00409 #define actionSimpleParameter       0x00000000L
00410 #define actionEnumeratedParameter   0x00002000L
00411 #define actionListParameter         0x00004000L
00412 #define actionOptionalParameter     0x00008000L
00413 
00414 #define actionObjectParameter       0x80000000L
00415 #define actionScopedParameter       0x40000000L
00416 #define actionStringIDParameter     0x20000000L
00417 
00421 
00422 //-------------------------------------------------------------------------------
00423 
00424 typedef Handle PIDescriptorHandle;    
00426 typedef struct PIOpaqueWriteDescriptor* PIWriteDescriptor;  
00427 typedef struct PIOpaqueReadDescriptor*  PIReadDescriptor;   
00429 typedef unsigned long   DescriptorEventID;   
00430 typedef unsigned long   DescriptorClassID;   
00432 typedef unsigned long   DescriptorKeyID;    
00433 typedef unsigned long   DescriptorTypeID;   
00434 typedef unsigned long   DescriptorUnitID;   
00435 typedef unsigned long   DescriptorEnumID;   
00437 typedef unsigned long   DescriptorEnumTypeID; 
00440 typedef unsigned long   DescriptorFormID;   
00442 typedef DescriptorKeyID DescriptorKeyIDArray[]; 
00447 #if PRAGMA_STRUCT_ALIGN
00448 #pragma options align=mac68k
00449 #endif
00450 
00451 #if MSWindows
00452 #pragma pack(push,1)
00453 #endif
00454 
00473 typedef struct PITerminology
00474     {
00475     int32   version;           
00476     OSType  classID;           
00477     OSType  eventID;           
00478     int16   terminologyID;     
00480     char    scopeString[1];    
00487     } PITerminology;
00488 
00489 #if PRAGMA_STRUCT_ALIGN
00490 #pragma options align=reset
00491 #endif
00492 
00493 #if MSWindows
00494 #pragma pack(pop)
00495 #endif
00496 
00497 #define PITerminologyMinSize 15
00498 
00499 #if PRAGMA_STRUCT_ALIGN
00500 #pragma options align=mac68k
00501 #endif
00502 
00507 typedef struct PIDescriptorSimpleReference
00508     {
00509     DescriptorTypeID    desiredClass;  
00510     DescriptorKeyID     keyForm;       
00512     struct _keyData
00513         {
00514         Str255              name;     
00515         int32               index;    
00516         DescriptorTypeID    type;     
00517         DescriptorEnumID    value;    
00518         }               keyData;
00519     } PIDescriptorSimpleReference;
00520     
00521 #if PRAGMA_STRUCT_ALIGN
00522 #pragma options align=reset
00523 #endif
00524 
00525 //-------------------------------------------------------------------------------
00526 
00527 #ifdef __cplusplus
00528 extern "C"
00529     {
00530 #endif
00531 
00576 //-------------------------------------------------------------------------------
00578 
00579 
00587 typedef MACPASCAL PIWriteDescriptor (*OpenWriteDescriptorProc)(void);
00588 
00597 typedef MACPASCAL OSErr (*CloseWriteDescriptorProc)(PIWriteDescriptor, PIDescriptorHandle*);
00598 
00606 typedef MACPASCAL OSErr (*PutIntegerProc)(PIWriteDescriptor, DescriptorKeyID, int32);
00607 
00615 typedef MACPASCAL OSErr (*PutFloatProc)(PIWriteDescriptor, DescriptorKeyID, const double*);
00616 
00625 typedef MACPASCAL OSErr (*PutUnitFloatProc)(PIWriteDescriptor, DescriptorKeyID, DescriptorUnitID, const double*);
00626 
00634 typedef MACPASCAL OSErr (*PutBooleanProc)(PIWriteDescriptor, DescriptorKeyID, Boolean);
00635 
00643 typedef MACPASCAL OSErr (*PutTextProc)(PIWriteDescriptor, DescriptorKeyID, Handle);
00644 
00652 typedef MACPASCAL OSErr (*PutAliasProc)(PIWriteDescriptor, DescriptorKeyID, Handle);
00653 
00663 typedef MACPASCAL OSErr (*PutEnumeratedProc)(PIWriteDescriptor, DescriptorKeyID key, DescriptorTypeID type, DescriptorEnumID value);
00664 
00672 typedef MACPASCAL OSErr (*PutClassProc)(PIWriteDescriptor, DescriptorKeyID, DescriptorTypeID);
00673 
00682 typedef MACPASCAL OSErr (*PutSimpleReferenceProc)(PIWriteDescriptor, DescriptorKeyID, const PIDescriptorSimpleReference*);
00683 
00692 typedef MACPASCAL OSErr (*PutObjectProc)(PIWriteDescriptor, DescriptorKeyID, DescriptorTypeID, PIDescriptorHandle);
00693 
00701 typedef MACPASCAL OSErr (*PutCountProc)(PIWriteDescriptor, DescriptorKeyID, uint32 count);
00702 
00710 typedef MACPASCAL OSErr (*PutStringProc)(PIWriteDescriptor, DescriptorKeyID, ConstStr255Param);
00711 
00712 // Scoped classes are not for use by plug-ins in Photoshop 4.0:
00713 typedef MACPASCAL OSErr (*PutScopedClassProc)(PIWriteDescriptor, DescriptorKeyID, DescriptorTypeID);
00714 typedef MACPASCAL OSErr (*PutScopedObjectProc)(PIWriteDescriptor, DescriptorKeyID, DescriptorTypeID, PIDescriptorHandle);
00715 
00716 //-------------------------------------------------------------------------------
00718 
00719 
00730 typedef MACPASCAL PIReadDescriptor (*OpenReadDescriptorProc)(PIDescriptorHandle, DescriptorKeyIDArray);
00731 
00740 typedef MACPASCAL OSErr (*CloseReadDescriptorProc)(PIReadDescriptor);
00741 
00757 typedef MACPASCAL Boolean (*GetKeyProc)(PIReadDescriptor, DescriptorKeyID* key, DescriptorTypeID* type, int32* flags);
00758 
00767 typedef MACPASCAL OSErr (*GetIntegerProc)(PIReadDescriptor, int32*);
00768 
00777 typedef MACPASCAL OSErr (*GetFloatProc)(PIReadDescriptor, double*);
00778 
00788 typedef MACPASCAL OSErr (*GetUnitFloatProc)(PIReadDescriptor, DescriptorUnitID*, double*);
00789 
00798 typedef MACPASCAL OSErr (*GetBooleanProc)(PIReadDescriptor, Boolean*);
00799 
00808 typedef MACPASCAL OSErr (*GetTextProc)(PIReadDescriptor, Handle*);
00809 
00818 typedef MACPASCAL OSErr (*GetAliasProc)(PIReadDescriptor, Handle*);
00819 
00828 typedef MACPASCAL OSErr (*GetEnumeratedProc)(PIReadDescriptor, DescriptorEnumID*);
00829 
00838 typedef MACPASCAL OSErr (*GetClassProc)(PIReadDescriptor, DescriptorTypeID*);
00839 
00848 typedef MACPASCAL OSErr (*GetSimpleReferenceProc)(PIReadDescriptor, PIDescriptorSimpleReference*);
00849 
00860 typedef MACPASCAL OSErr (*GetObjectProc)(PIReadDescriptor, DescriptorTypeID*, PIDescriptorHandle*);
00861 
00868 typedef MACPASCAL OSErr (*GetCountProc)(PIReadDescriptor, uint32*);
00869 
00878 typedef MACPASCAL OSErr (*GetStringProc)(PIReadDescriptor, Str255*);
00879 
00895 typedef MACPASCAL OSErr (*GetPinnedIntegerProc)(PIReadDescriptor, int32 min, int32 max, int32*);
00896 
00912 typedef MACPASCAL OSErr (*GetPinnedFloatProc)(PIReadDescriptor, const double* min, const double* max, double*);
00913 
00930 typedef MACPASCAL OSErr (*GetPinnedUnitFloatProc)(PIReadDescriptor, const double* min, const double* max, DescriptorUnitID*, double*);
00932 //-------------------------------------------------------------------------------
00933 
00934 #ifdef __cplusplus
00935     }
00936 #endif
00937 
00938 //-------------------------------------------------------------------------------
00939 //  WriteDescriptorProcs structure.
00940 //-------------------------------------------------------------------------------
00941 
00942 // Version:
00943 #define kCurrentWriteDescriptorProcsVersion 0
00944 
00945 #if PRAGMA_STRUCT_ALIGN
00946 #pragma options align=mac68k
00947 #endif
00948 
00954 typedef struct WriteDescriptorProcs
00955     {
00956     int16 writeDescriptorProcsVersion;    
00957     int16 numWriteDescriptorProcs;        
00959     OpenWriteDescriptorProc     openWriteDescriptorProc;  
00960     CloseWriteDescriptorProc    closeWriteDescriptorProc; 
00962     PutIntegerProc              putIntegerProc;    
00963     PutFloatProc                putFloatProc;      
00964     PutUnitFloatProc            putUnitFloatProc;  
00965     PutBooleanProc              putBooleanProc;    
00966     PutTextProc                 putTextProc;       
00967     PutAliasProc                putAliasProc;      
00969     PutEnumeratedProc           putEnumeratedProc;  
00970     PutClassProc                putClassProc;       
00971     PutSimpleReferenceProc      putSimpleReferenceProc;  
00972     PutObjectProc               putObjectProc;      
00974     PutCountProc                putCountProc;       
00976     PutStringProc               putStringProc;      
00979     PutScopedClassProc          putScopedClassProc;  
00981     PutScopedObjectProc         putScopedObjectProc; 
00983     } WriteDescriptorProcs;
00984 
00985 #if PRAGMA_STRUCT_ALIGN
00986 #pragma options align=reset
00987 #endif
00988 
00989 // Count:
00990 #define kCurrentWriteDescriptorProcsCount \
00991     ((sizeof(WriteDescriptorProcs) - offsetof(WriteDescriptorProcs, openWriteDescriptorProc)) / sizeof(void*))
00992 
00993 //-------------------------------------------------------------------------------
00994 //  ReadDescriptorProcs structure.
00995 //-------------------------------------------------------------------------------
00996 
00997 // Version:
00998 #define kCurrentReadDescriptorProcsVersion 0
00999 
01000 #if PRAGMA_STRUCT_ALIGN
01001 #pragma options align=mac68k
01002 #endif
01003 
01009 typedef struct ReadDescriptorProcs
01010     {
01011     int16 readDescriptorProcsVersion;    
01012     int16 numReadDescriptorProcs;        
01014     OpenReadDescriptorProc      openReadDescriptorProc;    
01015     CloseReadDescriptorProc     closeReadDescriptorProc;   
01016     GetKeyProc                  getKeyProc;         
01018     GetIntegerProc              getIntegerProc;     
01019     GetFloatProc                getFloatProc;       
01020     GetUnitFloatProc            getUnitFloatProc;   
01021     GetBooleanProc              getBooleanProc;     
01022     GetTextProc                 getTextProc;        
01023     GetAliasProc                getAliasProc;       
01025     GetEnumeratedProc           getEnumeratedProc;  
01026     GetClassProc                getClassProc;       
01027     GetSimpleReferenceProc      getSimpleReferenceProc;  
01028     GetObjectProc               getObjectProc;      
01030     GetCountProc                getCountProc;       
01032     GetStringProc               getStringProc;      
01033     GetPinnedIntegerProc        getPinnedIntegerProc;   
01034     GetPinnedFloatProc          getPinnedFloatProc;     
01035     GetPinnedUnitFloatProc      getPinnedUnitFloatProc; 
01037     } ReadDescriptorProcs;
01038 
01039 #if PRAGMA_STRUCT_ALIGN
01040 #pragma options align=reset
01041 #endif
01042 
01043 // Count:
01044 #define kCurrentReadDescriptorProcsCount \
01045     ((sizeof(ReadDescriptorProcs) - offsetof(ReadDescriptorProcs, openReadDescriptorProc)) / sizeof(void*))
01046     
01047 //-------------------------------------------------------------------------------
01048 //  PIDescriptorParameters structure.
01049 //-------------------------------------------------------------------------------
01050 
01051 // Version of the Descriptor Parameters structure.
01052 #define kCurrentDescriptorParametersVersion 0
01053 
01054 #if PRAGMA_STRUCT_ALIGN
01055 #pragma options align=mac68k
01056 #endif
01057 
01062 typedef struct PIDescriptorParameters
01063     {
01064     int16                   descriptorParametersVersion;  
01065     int16                   playInfo;                     
01067     int16                   recordInfo;                   
01070     PIDescriptorHandle      descriptor;                   
01072     WriteDescriptorProcs*   writeDescriptorProcs;         
01073     ReadDescriptorProcs*    readDescriptorProcs;          
01074     } PIDescriptorParameters;
01075 
01076 #if PRAGMA_STRUCT_ALIGN
01077 #pragma options align=reset
01078 #endif
01079  // end ingroup DescriptorSuite
01081 
01082 //-------------------------------------------------------------------------------
01083 //  Window notify suite.
01084 //-------------------------------------------------------------------------------
01085 
01112 #if !MSWindows
01113 
01114 
01116 #define kPSWindowNotifySuite    "482963f4-3ea1-11d1-8da3-00c04fd5f7ee"
01118 #define kPSWindowNotifySuiteVersion 1
01119 
01120 #ifdef __cplusplus
01121 extern "C"
01122     {
01123 #endif
01124 
01130     typedef void (*PIWindowNotifier)(const EventRecord* event, void* data);
01131     
01132 #ifdef __cplusplus
01133     }
01134 #endif
01135 
01139 typedef struct PSWindowNotifyProcs
01140     {
01148     SPAPI OSErr (*AddNotify)(WindowRef window, PIWindowNotifier notifier, void* data);
01149 
01155     SPAPI OSErr (*RemoveNotify)(WindowRef window);
01156 
01157 } PSWindowNotifyProcs;
01158     
01159 #endif
01160 
01163 //-------------------------------------------------------------------------------
01164 
01168 typedef struct _ADsc*   PIActionDescriptor; 
01169 
01173 typedef struct _ALst*   PIActionList;
01174 
01178 typedef struct _ARef*   PIActionReference;
01179 
01180 // other define for this is in ASZStringSuite.h;  placed here for SuspendHistory
01181 #ifndef ASZString_defined
01182 #define ASZString_defined
01183 struct ASZByteRun;
01184 typedef struct ASZByteRun *ASZString;
01185 #endif
01186 
01187 //-------------------------------------------------------------------------------
01188 //  ActionControl suite.  Available only in Automation plug-ins.
01189 //-------------------------------------------------------------------------------
01190 
01219 
01220 #define kPSActionControlSuite           "bc1e4d70-f953-11d0-8d9f-00c04fd5f7ee"
01221 
01223 #define kPSActionControlSuiteVersion        3   // Current version, but it's
01224 
01226 #define kPSActionControlSuitePrevVersion    2   // compatible with version 2
01227 
01228 #ifdef __cplusplus
01229 extern "C"
01230     {
01231 #endif
01232 
01241     typedef void (*PIEventNotifier)(DescriptorEventID eventID, PIActionDescriptor descriptor, PIDialogRecordOptions options, void* data);
01242         
01249     typedef SPErr (*PISuspendProc)(void *data);
01250         
01251 #ifdef __cplusplus
01252     }
01253 #endif      
01254 
01258 typedef struct PSActionControlProcs
01259     {
01260 
01270     SPAPI OSErr (*Play)(PIActionDescriptor* result, DescriptorEventID event, PIActionDescriptor descriptor, PIDialogPlayOptions options);
01271     
01283     SPAPI OSErr (*Get)(PIActionDescriptor* result, PIActionReference reference);
01284 
01291     SPAPI OSErr (*StringIDToTypeID)(char* stringID, DescriptorTypeID* typeID);
01292         
01300     SPAPI OSErr (*TypeIDToStringID)(DescriptorTypeID typeID, char* stringID, uint32 stringLength);
01301 
01315     SPAPI OSErr (*AddNotify)(SPPluginRef ref, DescriptorEventID event, PIEventNotifier notifier, void* data);
01316 
01324     SPAPI OSErr (*RemoveNotify)(SPPluginRef ref, DescriptorEventID event);
01325         
01339     SPAPI OSErr (*SuspendHistory)(PIActionReference reference, PISuspendProc proc, void* procData, ASZString operationName);
01340 
01350     SPAPI OSErr (*MakeStringAlias)(const char*  newStringID, const char* existingStringID);
01351 
01352     } PSActionControlProcs;
01353 /* @} */
01354 //-------------------------------------------------------------------------------
01355 //  Basic Action control suite.  Available to non-Automation plug-ins.
01356 //-------------------------------------------------------------------------------
01357 
01385 
01386 #define kPSBasicActionControlSuite          "3eb7c480-8797-11d1-8da7-00c04fd5f7ee"
01388 #define kPSBasicActionControlSuiteVersion       2   
01390 #define kPSBasicActionControlSuitePrevVersion   1   
01391 
01395 typedef struct PSBasicActionControlProcs
01396     {
01397 
01407     SPAPI OSErr (*Get)(PIActionDescriptor* result, PIActionReference reference);
01408         
01415     SPAPI OSErr (*StringIDToTypeID)(char* stringID, DescriptorTypeID* typeID);
01416         
01424     SPAPI OSErr (*TypeIDToStringID)(DescriptorTypeID typeID, char* stringID, uint32 stringLength);
01425 
01435     SPAPI OSErr (*MakeStringAlias)(const char* newStringID, const char* existingStringID);
01436 
01437     } PSBasicActionControlProcs;
01441 //-------------------------------------------------------------------------------
01442 //  DescriptorRegistry suite.  Use to pass descriptors between plug-ins or
01443 //  save parameters between invocations.
01444 //-------------------------------------------------------------------------------
01445 
01474 
01475 #define kPSDescriptorRegistrySuite          "61e608b0-40fd-11d1-8da3-00c04fd5f7ee"
01477 #define kPSDescriptorRegistrySuiteVersion   1
01478 
01482 typedef struct PSDescriptorRegistryProcs
01483     {
01484 
01493     SPAPI OSErr (*Register)(const char* key, PIActionDescriptor descriptor, Boolean isPersistent);
01494         
01500     SPAPI OSErr (*Erase)(const char* key);
01501         
01509     SPAPI OSErr (*Get)(const char* key, PIActionDescriptor* descriptor);
01510 
01511     } PSDescriptorRegistryProcs;
01512 
01513 /* @} */
01514 
01515 //-------------------------------------------------------------------------------
01516 //  ActionDescriptor suite.  Use for putting keys and objects into descriptors,
01517 //  getting them out of descriptors, and other descriptor management.
01518 //-------------------------------------------------------------------------------
01547 
01548 #define kPSActionDescriptorSuite            "df135115-c769-11d0-8079-00c04fd7ec47"
01550 #define kPSActionDescriptorSuiteVersion     3
01551 #define kPSActionDescriptorSuitePrevVersion 2
01552 
01556 typedef struct PSActionDescriptorProcs
01557     {
01563     SPAPI OSErr (*Make)(PIActionDescriptor* descriptor);
01564     
01570     SPAPI OSErr (*Free)(PIActionDescriptor descriptor);
01571     
01580     SPAPI OSErr (*GetType)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorTypeID* type);
01581     
01591     SPAPI OSErr (*GetKey)(PIActionDescriptor descriptor, uint32 index, DescriptorKeyID* key);
01592     
01601     SPAPI OSErr (*HasKey)(PIActionDescriptor descriptor, DescriptorKeyID key, Boolean* hasKey);
01602 
01609     SPAPI OSErr (*GetCount)(PIActionDescriptor descriptor, uint32* count);
01610 
01618     SPAPI OSErr (*IsEqual)(PIActionDescriptor descriptor, PIActionDescriptor other, Boolean* isEqual);
01619     
01626     SPAPI OSErr (*Erase)(PIActionDescriptor descriptor, DescriptorKeyID );
01627     
01633     SPAPI OSErr (*Clear)(PIActionDescriptor descriptor);
01634     
01642     SPAPI OSErr (*PutInteger)(PIActionDescriptor descriptor, DescriptorKeyID key, int32 value);
01643 
01651     SPAPI OSErr (*PutFloat)(PIActionDescriptor descriptor, DescriptorKeyID key, double value);
01652 
01661     SPAPI OSErr (*PutUnitFloat)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorUnitID unit, double value);
01662     
01670     SPAPI OSErr (*PutString)(PIActionDescriptor descriptor, DescriptorKeyID key,  char* cstrValue);
01671     
01679     SPAPI OSErr (*PutBoolean)(PIActionDescriptor descriptor, DescriptorKeyID key, Boolean value);
01680     
01688     SPAPI OSErr (*PutList)(PIActionDescriptor descriptor, DescriptorKeyID key,  PIActionList value);
01689     
01701     SPAPI OSErr (*PutObject)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorClassID type,  PIActionDescriptor value);
01702     
01711     SPAPI OSErr (*PutGlobalObject)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorClassID type,  PIActionDescriptor value);
01712 
01721     SPAPI OSErr (*PutEnumerated)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorEnumTypeID type, DescriptorEnumID value);
01722 
01730     SPAPI OSErr (*PutReference)(PIActionDescriptor descriptor, DescriptorKeyID key,  PIActionReference value);
01731     
01739     SPAPI OSErr (*PutClass)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorClassID value);
01740 
01748     SPAPI OSErr (*PutGlobalClass)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorClassID value);
01749 
01757     SPAPI OSErr (*PutAlias)(PIActionDescriptor descriptor, DescriptorKeyID key, Handle value);
01758 
01766     SPAPI OSErr (*GetInteger)(PIActionDescriptor descriptor, DescriptorKeyID key, int32* value);
01767     
01775     SPAPI OSErr (*GetFloat)(PIActionDescriptor descriptor, DescriptorKeyID key, double* value);
01776     
01785     SPAPI OSErr (*GetUnitFloat)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorUnitID* unit, double* value);
01786     
01794     SPAPI OSErr (*GetStringLength)(PIActionDescriptor descriptor, DescriptorKeyID key, uint32* stringLength);
01795     
01804     SPAPI OSErr (*GetString)(PIActionDescriptor descriptor, DescriptorKeyID key, char* cstrValue, uint32 maxLength);
01805 
01813     SPAPI OSErr (*GetBoolean)(PIActionDescriptor descriptor, DescriptorKeyID key, Boolean* value);
01814 
01822     SPAPI OSErr (*GetList)(PIActionDescriptor descriptor, DescriptorKeyID key, PIActionList* value);
01823 
01835     SPAPI OSErr (*GetObject)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorClassID* type, PIActionDescriptor* value);
01836     
01845     SPAPI OSErr (*GetGlobalObject)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorClassID* type, PIActionDescriptor* value);
01846     
01855     SPAPI OSErr (*GetEnumerated)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorEnumTypeID* type, DescriptorEnumID* value);
01856     
01864     SPAPI OSErr (*GetReference)(PIActionDescriptor descriptor, DescriptorKeyID key, PIActionReference* value);
01865     
01873     SPAPI OSErr (*GetClass)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorClassID* value);
01874     
01882     SPAPI OSErr (*GetGlobalClass)(PIActionDescriptor descriptor, DescriptorKeyID key, DescriptorClassID* value);
01883     
01891     SPAPI OSErr (*GetAlias)(PIActionDescriptor descriptor, DescriptorKeyID key, Handle* value);
01892 
01900     SPAPI OSErr (*HasKeys)(PIActionDescriptor descriptor, DescriptorKeyIDArray requiredKeys, Boolean* hasKeys);
01901 
01910     SPAPI OSErr (*PutIntegers)(PIActionDescriptor descriptor, DescriptorKeyID key, uint32 count,  int32* );
01911 
01920     SPAPI OSErr (*GetIntegers)(PIActionDescriptor descriptor, DescriptorKeyID key, uint32 count, int32* value);
01921 
01932     SPAPI OSErr (*AsHandle)(PIActionDescriptor descriptor, PIDescriptorHandle* value);
01933 
01944     SPAPI OSErr (*HandleToDescriptor)(PIDescriptorHandle value, PIActionDescriptor* descriptor);
01945     
01953     SPAPI OSErr (*PutZString)(PIActionDescriptor descriptor, DescriptorKeyID key, ASZString zstring);
01954 
01962     SPAPI OSErr (*GetZString)(PIActionDescriptor descriptor, DescriptorKeyID key, ASZString* zstring);
01963     
01972     SPAPI OSErr (*PutData)(PIActionDescriptor descriptor, DescriptorKeyID key, int32 length, void* value);
01973 
01981     SPAPI OSErr (*GetDataLength)(PIActionDescriptor descriptor, DescriptorKeyID key, int32* value);
01982 
01990     SPAPI OSErr (*GetData)(PIActionDescriptor descriptor, DescriptorKeyID key, void* value);
01991 
01992     SPAPI OSErr (*PutInteger64)(PIActionDescriptor descriptor, DescriptorKeyID key, int64 value);
01993     SPAPI OSErr (*GetInteger64)(PIActionDescriptor descriptor, DescriptorKeyID key, int64* value);
01994 
01995     } PSActionDescriptorProcs;
01996 /* @} */
01997 
01998 
01999 //-------------------------------------------------------------------------------
02000 //  ActionList suite.  Use to manage lists of keys.
02001 //-------------------------------------------------------------------------------
02030 
02031 #define kPSActionListSuite          "df135116-c769-11d0-8079-00c04fd7ec47"
02033 #define kPSActionListSuiteVersion       2
02034 #define kPSActionListSuitePrevVersion   1
02035 
02039 typedef struct PSActionListProcs
02040     {
02041     
02047     SPAPI OSErr (*Make)(PIActionList* actionList);
02048     
02054     SPAPI OSErr (*Free)(PIActionList actionList);
02055 
02067     SPAPI OSErr (*GetType)(PIActionList list, uint32 index, DescriptorTypeID* value);
02068 
02075     SPAPI OSErr (*GetCount)(PIActionList list, uint32* value);
02076 
02083     SPAPI OSErr (*PutInteger)(PIActionList list, int32 value);
02084 
02091     SPAPI OSErr (*PutFloat)(PIActionList list, double value);
02092 
02100     SPAPI OSErr (*PutUnitFloat)(PIActionList list, DescriptorUnitID unit, double value);
02101     
02108     SPAPI OSErr (*PutString)(PIActionList list, char* cstr);
02109     
02116     SPAPI OSErr (*PutBoolean)(PIActionList list, Boolean value);
02117     
02124     SPAPI OSErr (*PutList)(PIActionList list, PIActionList value);
02125     
02136     SPAPI OSErr (*PutObject)(PIActionList list, DescriptorClassID type, PIActionDescriptor value);
02137     
02148     SPAPI OSErr (*PutGlobalObject)(PIActionList list, DescriptorClassID type, PIActionDescriptor value);
02149     
02157     SPAPI OSErr (*PutEnumerated)(PIActionList list, DescriptorEnumTypeID type, DescriptorEnumID value);
02158     
02165     SPAPI OSErr (*PutReference)(PIActionList list, PIActionReference value);
02166     
02173     SPAPI OSErr (*PutClass)(PIActionList list, DescriptorClassID value);
02174     
02181     SPAPI OSErr (*PutGlobalClass)(PIActionList list, DescriptorClassID value);
02182     
02189     SPAPI OSErr (*PutAlias)(PIActionList list, Handle value);
02190 
02201     SPAPI OSErr (*GetInteger)(PIActionList list, uint32 index, int32* value);
02202 
02213     SPAPI OSErr (*GetFloat)(PIActionList list, uint32 index, double* value);
02214 
02226     SPAPI OSErr (*GetUnitFloat)(PIActionList list, uint32 index, DescriptorUnitID* unit, double* value);
02227 
02235     SPAPI OSErr (*GetStringLength)(PIActionList list, uint32 index, uint32* stringLength);
02236 
02245     SPAPI OSErr (*GetString)(PIActionList list, uint32 index, char* cstr, uint32 maxLength);
02246 
02254     SPAPI OSErr (*GetBoolean)(PIActionList list, uint32 index, Boolean* value);
02255 
02263     SPAPI OSErr (*GetList)(PIActionList list, uint32 index, PIActionList* actionList);
02264 
02276     SPAPI OSErr (*GetObject)(PIActionList list, uint32 index, DescriptorClassID* type, PIActionDescriptor* value);
02277 
02289     SPAPI OSErr (*GetGlobalObject)(PIActionList list, uint32 index, DescriptorClassID* type, PIActionDescriptor* value);
02290 
02299     SPAPI OSErr (*GetEnumerated)(PIActionList list, uint32 index, DescriptorEnumTypeID* type, DescriptorEnumID* value);
02300 
02308     SPAPI OSErr (*GetReference)(PIActionList list, uint32 index, PIActionReference* value);
02309 
02317     SPAPI OSErr (*GetClass)(PIActionList list, uint32 index, DescriptorClassID* value);
02318 
02326     SPAPI OSErr (*GetGlobalClass)(PIActionList list, uint32 index, DescriptorClassID* value);
02327 
02335     SPAPI OSErr (*GetAlias)(PIActionList list, uint32 index, Handle* aliasHandle);
02336 
02344     SPAPI OSErr (*PutIntegers)(PIActionList list, uint32 count, int32* );
02345 
02353     SPAPI OSErr (*GetIntegers)(PIActionList list, uint32 count, int32* value);
02354 
02362     SPAPI OSErr (*PutData)(PIActionList list, int32 length, void* data);
02363 
02371     SPAPI OSErr (*GetDataLength)(PIActionList list, uint32 index, int32* length);
02372 
02380     SPAPI OSErr (*GetData)(PIActionList list, uint32 index, void* value);
02381 
02388     SPAPI OSErr (*PutZString)(PIActionList list, ASZString zstring);
02389 
02397     SPAPI OSErr (*GetZString)(PIActionList list, uint32 index, ASZString* zstring);
02398 
02399     SPAPI OSErr (*PutInteger64)(PIActionList list, int64 value);
02400     SPAPI OSErr (*GetInteger64)(PIActionList list, uint32 index, int64 *value);
02401 
02402 
02403     } PSActionListProcs;
02404 /* @} */
02405 
02406 
02407 //-------------------------------------------------------------------------------
02408 //  ActionReference suite.  Use to build references to objects to be able to
02409 //  get/set properties and target events.
02410 //-------------------------------------------------------------------------------
02411 
02442 
02443 #define kPSActionReferenceSuite         "df135117-c769-11d0-8079-00c04fd7ec47"
02445 #define kPSActionReferenceSuiteVersion  3
02446 #define kPSActionReferenceSuitePrevVersion  2
02447 
02451 typedef struct PSActionReferenceProcs
02452     {
02453 
02459     SPAPI OSErr (*Make)(PIActionReference* reference);
02460     
02466     SPAPI OSErr (*Free)(PIActionReference ref);
02467 
02477     SPAPI OSErr (*GetForm)(PIActionReference ref, DescriptorFormID* value);
02478 
02485     SPAPI OSErr (*GetDesiredClass)(PIActionReference ref, DescriptorClassID* value);
02486 
02494     SPAPI OSErr (*PutName)(PIActionReference ref, DescriptorClassID desiredClass, char* cstrValue);
02495 
02503     SPAPI OSErr (*PutIndex)(PIActionReference ref, DescriptorClassID desiredClass, uint32 value);
02504 
02512     SPAPI OSErr (*PutIdentifier)(PIActionReference ref, DescriptorClassID desiredClass, uint32 value);
02513 
02521     SPAPI OSErr (*PutOffset)(PIActionReference ref, DescriptorClassID desiredClass, int32 value);
02522 
02532     SPAPI OSErr (*PutEnumerated)(PIActionReference ref, DescriptorClassID desiredClass, DescriptorEnumTypeID type, DescriptorEnumID value);
02533 
02541     SPAPI OSErr (*PutProperty)(PIActionReference ref, DescriptorClassID desiredClass, DescriptorKeyID value);
02542 
02549     SPAPI OSErr (*PutClass)(PIActionReference ref, DescriptorClassID desiredClass);
02550     
02557     SPAPI OSErr (*GetNameLength)(PIActionReference ref, uint32* stringLength);
02558 
02566     SPAPI OSErr (*GetName)(PIActionReference ref, char* name, uint32 maxLength);
02567 
02574     SPAPI OSErr (*GetIndex)(PIActionReference ref, uint32* value);
02575 
02582     SPAPI OSErr (*GetIdentifier)(PIActionReference ref, uint32* value);
02583 
02590     SPAPI OSErr (*GetOffset)(PIActionReference ref, int32* value);
02591 
02599     SPAPI OSErr (*GetEnumerated)(PIActionReference ref, DescriptorEnumTypeID* type, DescriptorEnumID* enumValue);
02600 
02607     SPAPI OSErr (*GetProperty)(PIActionReference ref, DescriptorKeyID* value);
02608 
02617     SPAPI OSErr (*GetContainer)(PIActionReference ref, PIActionReference* value);
02618 
02626     SPAPI OSErr (*PutNameZString)(PIActionReference ref, DescriptorClassID desiredClass, ASZString zstring);
02627 
02635     SPAPI OSErr (*GetNameZString)(PIActionReference ref, ASZString* zstring);
02636 
02637     } PSActionReferenceProcs;
02642 //-------------------------------------------------------------------------------
02643 //  PIActionParameters structure.
02644 //-------------------------------------------------------------------------------
02645 #if PRAGMA_STRUCT_ALIGN
02646 #pragma options align=mac68k
02647 #endif
02648 
02649 #if MSWindows
02650 #pragma pack(push,1)
02651 #endif
02652 
02660 typedef struct PIActionParameters
02661     {
02662     
02663     PIDialogPlayOptions     playInfo;   
02665     PIDialogRecordOptions   recordInfo; 
02667     PIActionDescriptor      descriptor; 
02670     } PIActionParameters;
02671 
02672 
02673 #if PRAGMA_STRUCT_ALIGN
02674 #pragma options align=reset
02675 #endif
02676 
02677 #if MSWindows
02678 #pragma pack(pop)
02679 #endif
02680 
02681 //-------------------------------------------------------------------------------
02682 
02683 #endif // Rez
02684 
02685 //-------------------------------------------------------------------------------
02686 
02687 #endif // __PIActions_h__