00001 #ifndef __AIPluginGroup__
00002 #define __AIPluginGroup__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00022
00023
00024
00025
00026
00027
00028 #ifndef __AITypes__
00029 #include "AITypes.h"
00030 #endif
00031 #ifndef __AIPlugin__
00032 #include "AIPlugin.h"
00033 #endif
00034 #ifndef __AIArt__
00035 #include "AIArt.h"
00036 #endif
00037 #ifndef __AIPathStyle__
00038 #include "AIPathStyle.h"
00039 #endif
00040 #ifndef __AIArtStyle__
00041 #include "AIArtStyle.h"
00042 #endif
00043
00044 #include "AIHeaderBegin.h"
00045
00046
00047
00048
00049
00050
00051
00052
00053 #define kAIPluginGroupSuite "AI Plugin Group Suite"
00054 #define kAIPluginGroupSuiteVersion6 AIAPI_VERSION(6)
00055 #define kAIPluginGroupSuiteVersion kAIPluginGroupSuiteVersion6
00056 #define kAIPluginGroupVersion kAIPluginGroupSuiteVersion
00057
00058
00059
00060
00061
00062 #define kSelectorAINotifyObject "AI Notify Plugin Object"
00063 #define kSelectorAIUpdateObject "AI Update Plugin Object"
00064
00065
00066
00067
00068
00071 #define kCallerAIPluginGroup "AI Plugin Group"
00072
00108 #define kSelectorAINotifyEdits "AI Notify Edits"
00109
00113 #define kSelectorAIUpdateArt "AI Update"
00114
00118 #define kSelectorAICanShowContents "AI Show Contents"
00119
00183 #define kSelectorAIInterpolateData "AI Interpolate Data"
00184
00196 #define kSelectorAIReplaceSymbol "AI Art Replace Symbol"
00197
00215 #define kSelectorAIDisallowsArtTypeQuery "AI Plugin Group Disallow Art Type"
00216
00226 #define kSelectorAIPerformCustomHitTest "AI Plugin Group Perform Custom Hit Test"
00227
00256 #define kSelectorAICollectPaintStyles "AI Plugin Group Collect Paint Styles"
00257
00267 #define kSelectorAIApplyPaintStyles "AI Plugin Group Apply Paint Styles"
00268
00308 #define kSelectorAIAdjustColors "AI Plugin Group Adjust Colors"
00309
00315 #define kSelectorAIShowContents "AI Plugin Group Show Contents"
00316
00323 enum AIPluginGroupOptions {
00328 kPluginGroupWantsOverlapUpdateOption = (1<<1),
00331 kPluginGroupWantsAutoTranslateOption = (1<<2),
00334 kPluginGroupWantsAutoUScaleOption = (1<<3),
00341 kPluginGroupWantsAutoTransformOption = (1<<4),
00355 kPluginGroupDoEditFillHitOption = (1<<5),
00363 kPluginGroupKeepWhenEmptyOption = (1<<6),
00364
00374 kPluginGroupIsFillLike = (1<<7),
00385 kPluginGroupIsStrokeLike = (1<<8),
00386
00399 kPluginGroupDoNotTarget = (1<<9),
00407 kPluginGroupAlwaysSmartTarget = (1<<10),
00417 kPluginGroupDoNotSmartTarget = (1<<11),
00418
00422 kPluginGroupCanBeClipping = (1<<12),
00423
00425 kPluginGroupAlwaysShowContents = (1<<13),
00430 kPluginGroupAskToShowContents = (1<<14),
00431
00444 kPluginGroupDisableBlends = (1<<15),
00445
00457 kPluginGroupBlendAsPluginGroup = (1<<16),
00458
00468 kPluginGroupRestrictsArtTypes = (1<<17),
00469
00491 kPluginGroupForceFillHitOnClosedPaths = (1<<18),
00492
00501 kPluginGroupForceFillHitOnAllPaths = (1<<19),
00502
00522 kPluginGroupManagesPaintStyles = (1<<20),
00523
00536 kPluginGroupPermitsGroupCmds = (1<<21)
00537 };
00538
00539
00540
00541
00544 #define kUnknownPluginGroupErr 'GRP?'
00545
00547 #define kAttachedPluginGroupErr 'GRP!'
00548
00550 #define kTooMuchDataPluginGroupErr 'FULL'
00551
00553 #define kPluginStoreLimit ( 32 * 1024 )
00554
00555
00560 #define kRefusePluginGroupReply 'RFSE'
00561
00566 #define kCheckPluginGroupReply 'CHEK'
00567
00571 #define kWantsAfterMsgPluginGroupReply 'AFTR'
00572
00575 #define kDidSymbolReplacement 'dsRP'
00576
00584 #define kMarkValidPluginGroupReply 'VALD'
00585
00591 #define kDontCarePluginGroupReply 'MOOT'
00592
00601 #define kDestroyPluginGroupReply 'TRSH'
00602
00606 #define kCustomHitPluginGroupReply 'CHIT'
00607
00610 #define kSkipEditGroupReply 'skpE'
00611
00612
00627 typedef const char *AIOperationTime;
00628
00629
00630
00634 #define kCheckOperationTime "AI Check Operation Time"
00635
00637 #define kBeforeOperationTime "AI Before Operation Time"
00638
00640 #define kAfterOperationTime "AI After Operation Time"
00641
00643 #define kDuringOperationTime "AI During Operation Time"
00644
00645
00677 typedef const char *AIOperationCode;
00678
00679
00680
00683 #define kReadOperationCode "AI Read Operation Code"
00684
00690 #define kWriteOperationCode "AI Write Operation Code"
00691
00695 #define kAttachOperationCode "AI Attach Operation Code"
00696
00701 #define kExpandOperationCode "AI Expand Operation Code"
00702
00704 #define kOrderingOperationCode "AI Ordering Operation Code"
00705
00707 #define kTransformOperationCode "AI Transform Operation Code"
00708
00710 #define kGeometryOperationCode "AI Geometry Operation Code"
00711
00716 #define kTopologyOperationCode "AI Topology Operation Code"
00717
00718 #define kDeleteOperationCode "AI Delete Operation Code"
00719
00721 #define kAttributeOperationCode "AI Attribute Operation Code"
00722
00724 #define kStyleOperationCode "AI Style Operation Code"
00725
00727 #define kChangeOperationCode "AI Change Operation Code"
00728
00729
00730
00731
00733 enum AIChangeOperationSubcodes {
00739 kPluginSyncArtOpCode = 'PLUG'
00740 };
00741
00743 enum AIOrderingOperationSubcodes {
00744 kSendToBackOpCode = 'BACK',
00745 kSendToFrontOpCode = 'FRNT',
00746 kSendBackwardOpCode = 'DOWN',
00747 kSendForwardOpCode = 'UPWD',
00748 kReverseGroupOpCode = 'RVRS',
00749
00755 kSendInternalOpCode = 'SINT',
00756
00762 kReorderOutCode = 'MVOT',
00763
00769 kReorderIntoOpCode = 'MVIN'
00770 };
00771
00773 enum AITransformOperationSubcodes {
00774 kTranslationOpCode = 'MOVE',
00775 kRotationOpCode = 'ROTA',
00776 kUniformScaleOpCode = 'USCA',
00777 kNonUniformScaleOpCode = 'NSCA',
00778 kShearOpCode = 'SHER',
00779 kReflectionOpCode = 'REFL',
00780 kMixedTransformOpCode = 'MTFM'
00781 };
00782
00784 enum AIGeometryOperationSubcodes {
00785 kMiscPathChangeOpCode = 'GEOM',
00787 kMovePointsOpCode = 'MPTS',
00789 kAdjustControlsOpCode = 'ADJC',
00791 kAddPointsOpCode = '+PTS',
00793 kRemovePointsOpCode = '-PTS',
00795 kReverseSegmentsOpCode = 'RVRS',
00797 kOpenCloseOpCode = 'OPCL',
00799 kSwapSymbolsOpCode = 'SWSM'
00800 };
00801
00807 enum AITopologyOperationSubcodes {
00809 kScissorOpCode = 'SCIZ',
00814 kPasteBelowOpCode = 'PBEL',
00818 kPasteIntoOpCode = 'PINT',
00822 kPasteAboveOpCode = 'PABV',
00827 kTransformCopyOpCode = 'TCOP',
00829 kTypePathChangeOpCode = 'TYCH',
00831 kReplaceOneOpCode = 'REP1',
00833 kReplaceByManyOpCode = 'REPM',
00839 kDuplicateInsideOpCode = 'DUPi',
00844 kDuplicateOutsideOpCode = 'DUPo',
00861 kMakeGroupOpCode = 'GRUP',
00867 kReleaseGroupOpCode = 'UNGP',
00886 kExpandInsideOpCode = 'ExpI'
00887 };
00888
00890 enum AIStyleOperationSubcodes {
00891 kPathStyleOpCode = 'PATH',
00893 kTextStyleOpCode = 'ATET',
00895 kArtStyleOpCode = 'ARTS'
00896 };
00897
00909 enum AIAttributeOperationSubcodes {
00910 kHideOpCode = 'HIDE',
00911 kShowOpCode = 'SHOW',
00912 kLockOpCode = 'LOCK',
00913 kUnlockOpCode = 'UNLK',
00914 kSetNameOpCode = 'NAME'
00915 };
00916
00917
00918
00919
00920
00921
00922
00925 typedef struct _t_AIClassOpaque *AIPluginGroupHandle;
00926
00928 typedef void *AIInterruptData;
00939 typedef ASErr (*AIInterruptProc)( AIArtHandle art, AIInterruptData data );
00940
00942 union StyleUnion {
00945 AIPathStyle *path_s;
00947 AIArtStyleHandle art_s;
00948 };
00949
00951 union StyleMapUnion {
00954 AIPathStyleMap *path_s_map;
00955 };
00956
00957
00978 struct AIPluginGroupMessage {
00980 SPMessageData d;
00982 AIPluginGroupHandle entry;
00984 AIArtHandle art;
00985
00988 AIOperationTime time;
00989
00991 AIOperationCode code;
00992
00993
00994
00997 AIArtHandle preEditArt;
00998
01010 AIArtHandle postEditArt;
01011
01016 AIErr subCode;
01017
01021 AIRealMatrix matrix;
01022
01025 StyleUnion style;
01026
01030 StyleMapUnion styleMap;
01031
01034 AIInterruptProc proc;
01035
01038 AIInterruptData data;
01039
01040
01041
01046 int steps;
01047
01052 AIReal t;
01053
01054
01055
01061 AIPatternHandle toSymbol;
01062
01063
01064
01068 ai::int32 transformFlags;
01069
01074 AIReal transformLineScale;
01075
01078 AIArtHandle destinationArt;
01079
01086 AIPaintOrder insertionOrder;
01087
01091 AIVersion aiVersion;
01092
01093 };
01094
01095
01097 struct AIReplaceSymbolMessageData {
01099 SPMessageData d;
01101 AIPluginGroupHandle entry;
01103 AIArtHandle art;
01106 AIPatternHandle targetSymbol;
01108 AIPatternHandle replacementSymbol;
01109 };
01110
01111
01113 struct AIPluginArtTypeMessageData {
01115 SPMessageData d;
01117 AIPluginGroupHandle entry;
01119 short artType;
01120 };
01121
01122
01123
01126 typedef AIAPI void (*AICustomHitDataDeleteFunc)(void*);
01127
01129 struct AIPluginGroupCustomHitTestData {
01131 SPMessageData d;
01133 AIPluginGroupHandle entry;
01135 AIArtHandle art;
01137 AIRealPoint location;
01140 struct
01141 {
01143 void* inData;
01146 void* outData;
01149 AICustomHitDataDeleteFunc deleteFunc;
01150 } CustomHitData;
01151
01152 };
01153
01154
01164 typedef AIAPI ASErr (*AIProcessArtStyleFunc)(const AIArtStyleHandle artStyle,
01165 AIArtHandle gradientContext, ai::int32 usage, void *callbackData );
01166
01178 typedef AIAPI ASErr (*AIProcessPathStyleFunc)(const AIPathStyle *pathStyle, const AIPathStyleMap *psMap,
01179 AIArtHandle gradientContext, ai::int32 usage, void *callbackData );
01180
01187 #define kIterationCanQuitReply 'DONE'
01188
01190 struct AIPluginGroupCollectPaintStylesData {
01192 SPMessageData d;
01194 AIPluginGroupHandle entry;
01196 AIArtHandle pluginArt;
01198 AIBoolean selectedOnly;
01200 void* callbackData;
01202 AIProcessArtStyleFunc artStyleCallback;
01204 AIProcessPathStyleFunc pathStyleCallback;
01205
01206 };
01207
01209 struct AIPluginGroupApplyPaintStylesData {
01211 SPMessageData d;
01213 AIPluginGroupHandle entry;
01215 AIArtHandle pluginArt;
01216
01221 AIBoolean applyStyleTransform;
01222
01224 AIPathStyle pathStyle;
01226 AIPathStyleMap pathStyleMap;
01227
01229 AIRealMatrix matrix;
01234 ai::int32 transformFlags;
01236 AIReal transformLineScale;
01237
01238 };
01239
01240
01260 typedef AIErr (*AIAdjustArtStyleFunc) ( AIArtStyleHandle oldArtStyle, AIArtStyleHandle *newArtStyle, void *userData );
01261
01263 struct AIPluginGroupAdjustColorsData {
01265 SPMessageData d;
01267 AIPluginGroupHandle entry;
01269 AIArtHandle pluginArt;
01270
01273 AIBoolean selectedOnly;
01275 AIBoolean adjustFills;
01277 AIBoolean adjustStrokes;
01280 void* callbackData;
01281
01285 AIAdjustColorFunc adjustColorCallback;
01286
01288 AIBoolean modifiedSomething;
01289
01304 AIAdjustPatternHandleFunc adjustPatternHandleCallback;
01305
01315 AIAdjustArtStyleFunc adjustArtStyleCallback;
01316
01317 };
01318
01319
01320
01321 struct AIAddPluginGroupData {
01323 ai::int32 major;
01325 ai::int32 minor;
01327 const char *desc;
01328 };
01329
01330
01331
01332
01333
01334
01335
01434 struct AIPluginGroupSuite {
01435
01448 AIAPI AIErr (*AddAIPluginGroup) ( SPPluginRef self, const char *name, AIAddPluginGroupData *data, ai::int32 options, AIPluginGroupHandle *entry );
01449
01468 AIAPI AIErr (*UseAIPluginGroup) ( AIArtHandle art, AIPluginGroupHandle entry );
01469
01476 AIAPI AIErr (*GetAIPluginGroupName) ( AIPluginGroupHandle entry, char **name );
01477
01483 AIAPI AIErr (*GetAIPluginGroupVersion) ( AIPluginGroupHandle entry, ai::int32 *major, ai::int32 *minor );
01484
01490 AIAPI AIErr (*GetAIPluginGroupDescription) ( AIPluginGroupHandle entry, char **desc );
01491
01497 AIAPI AIErr (*GetAIPluginGroupOptions) ( AIPluginGroupHandle entry, ai::int32 *options );
01498
01504 AIAPI AIErr (*GetAIPluginGroupPlugin) ( AIPluginGroupHandle entry, SPPluginRef *plugin );
01505
01511 AIAPI AIErr (*CountAIPluginGroups) ( ai::int32 *count );
01512
01519 AIAPI AIErr (*GetNthAIPluginGroup) ( ai::int32 index, AIPluginGroupHandle *entry );
01520
01525 AIAPI AIErr (*GetPluginArtName) ( AIArtHandle art, char **name );
01526
01530 AIAPI AIErr (*SetPluginArtName) ( AIArtHandle art, char *name );
01531
01538 AIAPI AIErr (*GetPluginArtVersion) ( AIArtHandle art, ai::int32 *major, ai::int32 *minor );
01539
01546 AIAPI AIErr (*SetPluginArtVersion) ( AIArtHandle art, ai::int32 major, ai::int32 minor );
01547
01552 AIAPI AIErr (*GetPluginArtPluginGroup) ( AIArtHandle art, AIPluginGroupHandle *entry );
01553
01558 AIAPI AIErr (*SetPluginArtPluginGroup) ( AIArtHandle art );
01559
01571 AIAPI AIErr (*GetPluginArtEditArt) ( AIArtHandle art, AIArtHandle *editArt );
01572
01577 AIAPI AIErr (*SetPluginArtEditArt) ( AIArtHandle art, AIArtHandle editArt );
01578
01586 AIAPI AIErr (*GetPluginArtResultArt) ( AIArtHandle art, AIArtHandle *resultArt );
01587
01592 AIAPI AIErr (*SetPluginArtResultArt) ( AIArtHandle art, AIArtHandle resultArt );
01593
01601 AIAPI AIErr (*GetPluginArtDataCount) ( AIArtHandle art, size_t *count );
01602
01609 AIAPI AIErr (*SetPluginArtDataCount) ( AIArtHandle art, size_t count );
01610
01618 AIAPI AIErr (*GetPluginArtDataRange) ( AIArtHandle art, void *data, size_t index, size_t count );
01619
01627 AIAPI AIErr (*SetPluginArtDataRange) ( AIArtHandle art, void *data, size_t index, size_t count );
01628
01629
01645 AIAPI AIErr (*MarkPluginArtDirty) ( AIArtHandle art );
01646
01665 AIAPI AIErr (*MarkPluginArtClean) ( AIArtHandle art );
01666
01667
01668
01676 AIAPI AIErr (*GetPluginArtClipping) ( AIArtHandle art, AIBoolean *clipping );
01677
01685 AIAPI AIErr (*SetPluginArtClipping) ( AIArtHandle art, AIBoolean clipping );
01686
01696 AIAPI AIErr (*GetAIPluginGroupDefaultName) ( AIPluginGroupHandle entry, char** name );
01697
01707 AIAPI AIErr (*SetAIPluginGroupDefaultName) ( AIPluginGroupHandle entry, const char* name );
01708
01714 AIAPI AIErr (*GetAIPluginGroupAppVersion) ( AIPluginGroupHandle entry, AIVersion* appVersion );
01715
01725 AIAPI AIErr (*SetAIPluginGroupAppVersion) ( AIPluginGroupHandle entry, AIVersion appVersion );
01726
01727
01728
01735 AIAPI AIErr (*MarkPluginArtSilent) ( AIArtHandle art );
01736
01760 AIAPI AIErr (*PluginArtAdjustColors) ( AIArtHandle art, AIAdjustColorFunc adjustColorCallback,
01761 void *callbackData, ASBoolean *modifiedSomething,
01762 AIBoolean adjustFills, AIBoolean adjustStrokes,
01763 AIBoolean selectionOnly );
01764
01765 };
01766
01767
01768 #include "AIHeaderEnd.h"
01769
01770 #endif
01771