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
00321 #define kSelectorAIPluginArtDocScaleChange "AI Plugin Group Adjust New Document Scale"
00322
00323
00330 enum AIPluginGroupOptions {
00335 kPluginGroupWantsOverlapUpdateOption = (1<<1),
00338 kPluginGroupWantsAutoTranslateOption = (1<<2),
00341 kPluginGroupWantsAutoUScaleOption = (1<<3),
00348 kPluginGroupWantsAutoTransformOption = (1<<4),
00362 kPluginGroupDoEditFillHitOption = (1<<5),
00370 kPluginGroupKeepWhenEmptyOption = (1<<6),
00371
00381 kPluginGroupIsFillLike = (1<<7),
00392 kPluginGroupIsStrokeLike = (1<<8),
00393
00406 kPluginGroupDoNotTarget = (1<<9),
00414 kPluginGroupAlwaysSmartTarget = (1<<10),
00424 kPluginGroupDoNotSmartTarget = (1<<11),
00425
00429 kPluginGroupCanBeClipping = (1<<12),
00430
00432 kPluginGroupAlwaysShowContents = (1<<13),
00437 kPluginGroupAskToShowContents = (1<<14),
00438
00451 kPluginGroupDisableBlends = (1<<15),
00452
00464 kPluginGroupBlendAsPluginGroup = (1<<16),
00465
00475 kPluginGroupRestrictsArtTypes = (1<<17),
00476
00498 kPluginGroupForceFillHitOnClosedPaths = (1<<18),
00499
00508 kPluginGroupForceFillHitOnAllPaths = (1<<19),
00509
00529 kPluginGroupManagesPaintStyles = (1<<20),
00530
00543 kPluginGroupPermitsGroupCmds = (1<<21)
00544 };
00545
00546
00547
00548
00551 #define kUnknownPluginGroupErr 'GRP?'
00552
00554 #define kAttachedPluginGroupErr 'GRP!'
00555
00557 #define kTooMuchDataPluginGroupErr 'FULL'
00558
00560 #define kPluginStoreLimit ( 32 * 1024 )
00561
00562
00567 #define kRefusePluginGroupReply 'RFSE'
00568
00573 #define kCheckPluginGroupReply 'CHEK'
00574
00578 #define kWantsAfterMsgPluginGroupReply 'AFTR'
00579
00582 #define kDidSymbolReplacement 'dsRP'
00583
00591 #define kMarkValidPluginGroupReply 'VALD'
00592
00598 #define kDontCarePluginGroupReply 'MOOT'
00599
00608 #define kDestroyPluginGroupReply 'TRSH'
00609
00613 #define kCustomHitPluginGroupReply 'CHIT'
00614
00617 #define kSkipEditGroupReply 'skpE'
00618
00619
00634 typedef const char *AIOperationTime;
00635
00636
00637
00641 #define kCheckOperationTime "AI Check Operation Time"
00642
00644 #define kBeforeOperationTime "AI Before Operation Time"
00645
00647 #define kAfterOperationTime "AI After Operation Time"
00648
00650 #define kDuringOperationTime "AI During Operation Time"
00651
00652
00684 typedef const char *AIOperationCode;
00685
00686
00687
00690 #define kReadOperationCode "AI Read Operation Code"
00691
00697 #define kWriteOperationCode "AI Write Operation Code"
00698
00702 #define kAttachOperationCode "AI Attach Operation Code"
00703
00708 #define kExpandOperationCode "AI Expand Operation Code"
00709
00711 #define kOrderingOperationCode "AI Ordering Operation Code"
00712
00714 #define kTransformOperationCode "AI Transform Operation Code"
00715
00717 #define kGeometryOperationCode "AI Geometry Operation Code"
00718
00723 #define kTopologyOperationCode "AI Topology Operation Code"
00724
00725 #define kDeleteOperationCode "AI Delete Operation Code"
00726
00728 #define kAttributeOperationCode "AI Attribute Operation Code"
00729
00731 #define kStyleOperationCode "AI Style Operation Code"
00732
00734 #define kChangeOperationCode "AI Change Operation Code"
00735
00736
00737
00738
00740 enum AIChangeOperationSubcodes {
00746 kPluginSyncArtOpCode = 'PLUG'
00747 };
00748
00750 enum AIOrderingOperationSubcodes {
00751 kSendToBackOpCode = 'BACK',
00752 kSendToFrontOpCode = 'FRNT',
00753 kSendBackwardOpCode = 'DOWN',
00754 kSendForwardOpCode = 'UPWD',
00755 kReverseGroupOpCode = 'RVRS',
00756
00762 kSendInternalOpCode = 'SINT',
00763
00769 kReorderOutCode = 'MVOT',
00770
00776 kReorderIntoOpCode = 'MVIN'
00777 };
00778
00780 enum AITransformOperationSubcodes {
00781 kTranslationOpCode = 'MOVE',
00782 kRotationOpCode = 'ROTA',
00783 kUniformScaleOpCode = 'USCA',
00784 kNonUniformScaleOpCode = 'NSCA',
00785 kShearOpCode = 'SHER',
00786 kReflectionOpCode = 'REFL',
00787 kMixedTransformOpCode = 'MTFM'
00788 };
00789
00791 enum AIGeometryOperationSubcodes {
00792 kMiscPathChangeOpCode = 'GEOM',
00794 kMovePointsOpCode = 'MPTS',
00796 kAdjustControlsOpCode = 'ADJC',
00798 kAddPointsOpCode = '+PTS',
00800 kRemovePointsOpCode = '-PTS',
00802 kReverseSegmentsOpCode = 'RVRS',
00804 kOpenCloseOpCode = 'OPCL',
00806 kSwapSymbolsOpCode = 'SWSM'
00807 };
00808
00814 enum AITopologyOperationSubcodes {
00816 kScissorOpCode = 'SCIZ',
00821 kPasteBelowOpCode = 'PBEL',
00825 kPasteIntoOpCode = 'PINT',
00829 kPasteAboveOpCode = 'PABV',
00834 kTransformCopyOpCode = 'TCOP',
00836 kTypePathChangeOpCode = 'TYCH',
00838 kReplaceOneOpCode = 'REP1',
00840 kReplaceByManyOpCode = 'REPM',
00846 kDuplicateInsideOpCode = 'DUPi',
00851 kDuplicateOutsideOpCode = 'DUPo',
00868 kMakeGroupOpCode = 'GRUP',
00874 kReleaseGroupOpCode = 'UNGP',
00893 kExpandInsideOpCode = 'ExpI'
00894 };
00895
00897 enum AIStyleOperationSubcodes {
00898 kPathStyleOpCode = 'PATH',
00900 kTextStyleOpCode = 'ATET',
00902 kArtStyleOpCode = 'ARTS'
00903 };
00904
00916 enum AIAttributeOperationSubcodes {
00917 kHideOpCode = 'HIDE',
00918 kShowOpCode = 'SHOW',
00919 kLockOpCode = 'LOCK',
00920 kUnlockOpCode = 'UNLK',
00921 kSetNameOpCode = 'NAME'
00922 };
00923
00924
00925
00926
00927
00928
00929
00932 typedef struct _t_AIClassOpaque *AIPluginGroupHandle;
00933
00935 typedef void *AIInterruptData;
00946 typedef ASErr (*AIInterruptProc)( AIArtHandle art, AIInterruptData data );
00947
00949 union StyleUnion {
00952 AIPathStyle *path_s;
00954 AIArtStyleHandle art_s;
00955 };
00956
00958 union StyleMapUnion {
00961 AIPathStyleMap *path_s_map;
00962 };
00963
00964
00985 struct AIPluginGroupMessage {
00987 SPMessageData d;
00989 AIPluginGroupHandle entry;
00991 AIArtHandle art;
00992
00995 AIOperationTime time;
00996
00998 AIOperationCode code;
00999
01000
01001
01004 AIArtHandle preEditArt;
01005
01017 AIArtHandle postEditArt;
01018
01023 AIErr subCode;
01024
01028 AIRealMatrix matrix;
01029
01032 StyleUnion style;
01033
01037 StyleMapUnion styleMap;
01038
01041 AIInterruptProc proc;
01042
01045 AIInterruptData data;
01046
01047
01048
01053 int steps;
01054
01059 AIReal t;
01060
01061
01062
01068 AIPatternHandle toSymbol;
01069
01070
01071
01075 ai::int32 transformFlags;
01076
01081 AIReal transformLineScale;
01082
01085 AIArtHandle destinationArt;
01086
01093 AIPaintOrder insertionOrder;
01094
01098 AIVersion aiVersion;
01099
01103 AIReal relativeScaleFactor;
01104
01105
01106 };
01107
01108
01110 struct AIReplaceSymbolMessageData {
01112 SPMessageData d;
01114 AIPluginGroupHandle entry;
01116 AIArtHandle art;
01119 AIPatternHandle targetSymbol;
01121 AIPatternHandle replacementSymbol;
01122 };
01123
01124
01126 struct AIPluginArtTypeMessageData {
01128 SPMessageData d;
01130 AIPluginGroupHandle entry;
01132 short artType;
01133 };
01134
01135
01136
01139 typedef AIAPI void (*AICustomHitDataDeleteFunc)(void*);
01140
01142 struct AIPluginGroupCustomHitTestData {
01144 SPMessageData d;
01146 AIPluginGroupHandle entry;
01148 AIArtHandle art;
01150 AIRealPoint location;
01153 struct
01154 {
01156 void* inData;
01159 void* outData;
01162 AICustomHitDataDeleteFunc deleteFunc;
01163 } CustomHitData;
01164
01165 };
01166
01167
01177 typedef AIAPI ASErr (*AIProcessArtStyleFunc)(const AIArtStyleHandle artStyle,
01178 AIArtHandle gradientContext, ai::int32 usage, void *callbackData );
01179
01191 typedef AIAPI ASErr (*AIProcessPathStyleFunc)(const AIPathStyle *pathStyle, const AIPathStyleMap *psMap,
01192 AIArtHandle gradientContext, ai::int32 usage, void *callbackData );
01193
01200 #define kIterationCanQuitReply 'DONE'
01201
01203 struct AIPluginGroupCollectPaintStylesData {
01205 SPMessageData d;
01207 AIPluginGroupHandle entry;
01209 AIArtHandle pluginArt;
01211 AIBoolean selectedOnly;
01213 void* callbackData;
01215 AIProcessArtStyleFunc artStyleCallback;
01217 AIProcessPathStyleFunc pathStyleCallback;
01218
01219 };
01220
01222 struct AIPluginGroupApplyPaintStylesData {
01224 SPMessageData d;
01226 AIPluginGroupHandle entry;
01228 AIArtHandle pluginArt;
01229
01234 AIBoolean applyStyleTransform;
01235
01237 AIPathStyle pathStyle;
01239 AIPathStyleMap pathStyleMap;
01240
01242 AIRealMatrix matrix;
01247 ai::int32 transformFlags;
01249 AIReal transformLineScale;
01250
01251 };
01252
01253
01273 typedef AIErr (*AIAdjustArtStyleFunc) ( AIArtStyleHandle oldArtStyle, AIArtStyleHandle *newArtStyle, void *userData );
01274
01276 struct AIPluginGroupAdjustColorsData {
01278 SPMessageData d;
01280 AIPluginGroupHandle entry;
01282 AIArtHandle pluginArt;
01283
01286 AIBoolean selectedOnly;
01288 AIBoolean adjustFills;
01290 AIBoolean adjustStrokes;
01293 void* callbackData;
01294
01298 AIAdjustColorFunc adjustColorCallback;
01299
01301 AIBoolean modifiedSomething;
01302
01317 AIAdjustPatternHandleFunc adjustPatternHandleCallback;
01318
01328 AIAdjustArtStyleFunc adjustArtStyleCallback;
01329
01330 };
01331
01332
01333
01334 struct AIAddPluginGroupData {
01336 ai::int32 major;
01338 ai::int32 minor;
01340 const char *desc;
01341 };
01342
01343
01344
01345
01346
01347
01348
01447 struct AIPluginGroupSuite {
01448
01461 AIAPI AIErr (*AddAIPluginGroup) ( SPPluginRef self, const char *name, AIAddPluginGroupData *data, ai::int32 options, AIPluginGroupHandle *entry );
01462
01481 AIAPI AIErr (*UseAIPluginGroup) ( AIArtHandle art, AIPluginGroupHandle entry );
01482
01489 AIAPI AIErr (*GetAIPluginGroupName) ( AIPluginGroupHandle entry, char **name );
01490
01496 AIAPI AIErr (*GetAIPluginGroupVersion) ( AIPluginGroupHandle entry, ai::int32 *major, ai::int32 *minor );
01497
01503 AIAPI AIErr (*GetAIPluginGroupDescription) ( AIPluginGroupHandle entry, char **desc );
01504
01510 AIAPI AIErr (*GetAIPluginGroupOptions) ( AIPluginGroupHandle entry, ai::int32 *options );
01511
01517 AIAPI AIErr (*GetAIPluginGroupPlugin) ( AIPluginGroupHandle entry, SPPluginRef *plugin );
01518
01524 AIAPI AIErr (*CountAIPluginGroups) ( ai::int32 *count );
01525
01532 AIAPI AIErr (*GetNthAIPluginGroup) ( ai::int32 index, AIPluginGroupHandle *entry );
01533
01538 AIAPI AIErr (*GetPluginArtName) ( AIArtHandle art, char **name );
01539
01543 AIAPI AIErr (*SetPluginArtName) ( AIArtHandle art, char *name );
01544
01551 AIAPI AIErr (*GetPluginArtVersion) ( AIArtHandle art, ai::int32 *major, ai::int32 *minor );
01552
01559 AIAPI AIErr (*SetPluginArtVersion) ( AIArtHandle art, ai::int32 major, ai::int32 minor );
01560
01565 AIAPI AIErr (*GetPluginArtPluginGroup) ( AIArtHandle art, AIPluginGroupHandle *entry );
01566
01571 AIAPI AIErr (*SetPluginArtPluginGroup) ( AIArtHandle art );
01572
01584 AIAPI AIErr (*GetPluginArtEditArt) ( AIArtHandle art, AIArtHandle *editArt );
01585
01590 AIAPI AIErr (*SetPluginArtEditArt) ( AIArtHandle art, AIArtHandle editArt );
01591
01599 AIAPI AIErr (*GetPluginArtResultArt) ( AIArtHandle art, AIArtHandle *resultArt );
01600
01605 AIAPI AIErr (*SetPluginArtResultArt) ( AIArtHandle art, AIArtHandle resultArt );
01606
01614 AIAPI AIErr (*GetPluginArtDataCount) ( AIArtHandle art, size_t *count );
01615
01622 AIAPI AIErr (*SetPluginArtDataCount) ( AIArtHandle art, size_t count );
01623
01631 AIAPI AIErr (*GetPluginArtDataRange) ( AIArtHandle art, void *data, size_t index, size_t count );
01632
01640 AIAPI AIErr (*SetPluginArtDataRange) ( AIArtHandle art, void *data, size_t index, size_t count );
01641
01642
01658 AIAPI AIErr (*MarkPluginArtDirty) ( AIArtHandle art );
01659
01678 AIAPI AIErr (*MarkPluginArtClean) ( AIArtHandle art );
01679
01680
01681
01689 AIAPI AIErr (*GetPluginArtClipping) ( AIArtHandle art, AIBoolean *clipping );
01690
01698 AIAPI AIErr (*SetPluginArtClipping) ( AIArtHandle art, AIBoolean clipping );
01699
01709 AIAPI AIErr (*GetAIPluginGroupDefaultName) ( AIPluginGroupHandle entry, char** name );
01710
01720 AIAPI AIErr (*SetAIPluginGroupDefaultName) ( AIPluginGroupHandle entry, const char* name );
01721
01727 AIAPI AIErr (*GetAIPluginGroupAppVersion) ( AIPluginGroupHandle entry, AIVersion* appVersion );
01728
01738 AIAPI AIErr (*SetAIPluginGroupAppVersion) ( AIPluginGroupHandle entry, AIVersion appVersion );
01739
01740
01741
01748 AIAPI AIErr (*MarkPluginArtSilent) ( AIArtHandle art );
01749
01773 AIAPI AIErr (*PluginArtAdjustColors) ( AIArtHandle art, AIAdjustColorFunc adjustColorCallback,
01774 void *callbackData, ASBoolean *modifiedSomething,
01775 AIBoolean adjustFills, AIBoolean adjustStrokes,
01776 AIBoolean selectionOnly );
01777
01778 };
01779
01780
01781 #include "AIHeaderEnd.h"
01782
01783 #endif
01784