Adobe.com
Contents Suites Classes Class Index Member Index

AIPluginGroup.h

Go to the documentation of this file.
00001 #ifndef __AIPluginGroup__
00002 #define __AIPluginGroup__
00003 
00004 /*
00005  *        Name: AIPluginGroup.h
00006  *     Purpose: Adobe Illustrator Plugin Group Suite.
00007  *
00008  * ADOBE SYSTEMS INCORPORATED
00009  * Copyright 1995-2007 Adobe Systems Incorporated.
00010  * All rights reserved.
00011  *
00012  * NOTICE:  Adobe permits you to use, modify, and distribute this file
00013  * in accordance with the terms of the Adobe license agreement
00014  * accompanying it. If you have received this file from a source other
00015  * than Adobe, then your use, modification, or distribution of it
00016  * requires the prior written permission of Adobe.
00017  *
00018  */
00019 
00022 /*******************************************************************************
00023  **
00024  **     Imports
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  ** Constants
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 // These are the AI 6 style plug-in class messages.
00060 // They are only needed temporarily until Joe T's prototype plug-ins are updated
00061 // <<THESE WILL BE REMOVED>>
00062 #define kSelectorAINotifyObject         "AI Notify Plugin Object"
00063 #define kSelectorAIUpdateObject         "AI Update Plugin Object"
00064 
00065 
00066 // These are the AI 7 style plug-in group messages (split into caller and request)
00067 // <<PLEASE REMOVE THIS COMMENT WITH THE AI6 DEFINES>>
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 // These are the errors returned by calls to AIPluginGroup suite functions (other than the AIArt standards).
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 // the times themselves
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 // the codes themselves
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  ** Types
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         // Editing parameters
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         // ----New fields added in AI10-----
01041 
01046         int                                     steps;
01047 
01052         AIReal                          t;
01053 
01054         // Editing parameter
01055 
01061         AIPatternHandle         toSymbol;
01062 
01063         // ----New fields added in AI12----
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 // Function pointers used for callbacks when storing custom hit data
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;                              // IN
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 /*** Descriptive information for a new plug-in group.
01320         See \c #AIPluginGroupSuite::AddAIPluginGroup().*/
01321 struct AIAddPluginGroupData {
01323         ai::int32                               major;
01325         ai::int32                               minor;
01327         const char                              *desc;
01328 };
01329 
01330 /*******************************************************************************
01331  **
01332  **     Suite
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         // New for AI10: clipping attribute for plug-in group objects
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         // New for AI12:
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 


Contents Suites Classes Class Index Member Index
Adobe Solutions Network
 
Copyright © 2016 Adobe Systems Incorporated. All rights reserved.
Terms of Use Online Privacy Policy Adobe and accessibility Avoid software piracy Permissions and Trademarks