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 
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 // These are the errors returned by calls to AIPluginGroup suite functions (other than the AIArt standards).
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 // the times themselves
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 // the codes themselves
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  ** Types
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         // Editing parameters
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         // ----New fields added in AI10-----
01048 
01053         int                                     steps;
01054 
01059         AIReal                          t;
01060 
01061         // Editing parameter
01062 
01068         AIPatternHandle         toSymbol;
01069 
01070         // ----New fields added in AI12----
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 // Function pointers used for callbacks when storing custom hit data
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;                              // IN
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 /*** Descriptive information for a new plug-in group.
01333         See \c #AIPluginGroupSuite::AddAIPluginGroup().*/
01334 struct AIAddPluginGroupData {
01336         ai::int32                               major;
01338         ai::int32                               minor;
01340         const char                              *desc;
01341 };
01342 
01343 /*******************************************************************************
01344  **
01345  **     Suite
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         // New for AI10: clipping attribute for plug-in group objects
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         // New for AI12:
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 


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