Adobe.com
Contents Suites Classes Class Index Member Index

AILiveEffect.h

Go to the documentation of this file.
00001 #ifndef __AILiveEffect__
00002 #define __AILiveEffect__
00003 
00004 /*
00005  *        Name: AILiveEffect.h
00006  *      Author:
00007  *        Date:
00008  *     Purpose: Adobe Illustrator Effect Suite.
00009  *
00010  * ADOBE SYSTEMS INCORPORATED
00011  * Copyright 1986-2007 Adobe Systems Incorporated.
00012  * All rights reserved.
00013  *
00014  * NOTICE:  Adobe permits you to use, modify, and distribute this file 
00015  * in accordance with the terms of the Adobe license agreement 
00016  * accompanying it. If you have received this file from a source other 
00017  * than Adobe, then your use, modification, or distribution of it 
00018  * requires the prior written permission of Adobe.
00019  *
00020  */
00021 
00022 
00023 /*******************************************************************************
00024  **
00025  **     Imports
00026  **
00027  **/
00028 
00029 #ifndef __AITypes__
00030 #include "AITypes.h"
00031 #endif
00032 
00033 #ifndef __AIArt__
00034 #include "AIArt.h"
00035 #endif
00036 
00037 #ifndef __AIDict__
00038 #include "AIDictionary.h"
00039 #endif
00040 
00041 #ifndef __AIFilter__
00042 #include "AIFilter.h"
00043 #endif
00044 
00045 #ifndef __AIMenu__
00046 #include "AIMenu.h"
00047 #endif
00048 
00049 #ifndef __AIPlugin__
00050 #include "AIPlugin.h"
00051 #endif
00052 
00053 #ifndef __AIXMLElement__
00054 #include "AIXMLElement.h"
00055 #endif
00056 
00057 
00058 
00059 #include "AIHeaderBegin.h"
00060 
00063 /*******************************************************************************
00064  **
00065  ** Constants
00066  **
00067  **/
00068 
00069 #define kAILiveEffectSuite                                      "AI Live Effect Suite"
00070 #define kAILiveEffectSuiteVersion                       AIAPI_VERSION(6)
00071 #define kAILiveEffectVersion                            kAILiveEffectSuiteVersion
00072 
00075 #define kCallerAILiveEffect                                             "AI Live Effect"
00076 
00077 
00085 #define kAILiveEffectParamsExpandBeforeKey      "Adobe Effect Expand Before Version"
00086 
00087 #define kAILiveEffectParamsWriteAlternateVersionMajorKey "Adobe Effect Expand Write Alternate Version Major"
00088 #define kAILiveEffectParamsWriteAlternateVersionMinorKey "Adobe Effect Expand Write Alternate Version Minor"
00089 
00090 
00091 // These are the effect messages.
00092 
00096 #define kSelectorAIEditLiveEffectParameters             "AI Live Effect Edit Parameters"
00097 
00100 #define kSelectorAIGoLiveEffect                                 "AI Live Effect Go Live"
00101 
00103 #define kSelectorAILiveEffectInterpolate                "AI Live Effect Interpolate Parameters"
00104 
00106 #define kSelectorAILiveEffectInputType                  "AI Live Effect Input Type"
00107 
00109 #define kSelectorAILiveEffectConverColorSpace   "AI Live Effect Convert Color Space"
00110 
00112 #define kSelectorAILiveEffectScaleParameters    "AI Live Effect Scale Parameters"
00113 
00115 #define kSelectorAILiveEffectHandleMerge                "AI Live Effect Handle Merge"
00116 
00118 #define kSelectorAILiveEffectGetSVGFilter               "AI Live Effect Get SVG Filter"
00119 
00121 #define kSelectorAILiveEffectAdjustColors               "AI Live Effect Adjust Colors"
00122 
00124 #define kSelectorAILiveEffectIsCompatible               "AI Live Effect Is Compatible"
00125 
00126 
00133 #define kDisplayStringKey "DisplayString"
00134 
00140 #define kExtraStringKey "ExtraString"
00141 
00146 #define kFillStyleKey "FillStyle"
00147 
00154 #define kTransformedFillStyleKey "TransformedFillStyle"
00155 
00163 #define kFillStyleMatrixKey "FillStyleMatrix"
00164 
00168 #define kEvenOddKey "UseEvenOdd"
00169 
00173 #define kStrokeStyleKey "StrokeStyle"
00174 
00181 #define kTransformedStrokeStyleKey "TransformedStrokeStyle"
00182 
00190 #define kStrokeStyleMatrixKey "StrokeStyleMatrix"
00191 
00197 #define kScaleFactorKey "ScaleFactorString"
00198 
00199 
00200 /*******************************************************************************
00201  **
00202  ** Types
00203  **
00204  **/
00205 
00207 typedef struct _t_AILiveEffectOpaque* AILiveEffectHandle;
00209 typedef struct _t_AILiveEffectParamContext* AILiveEffectParamContext;
00210 
00211 
00213 struct AddLiveEffectMenuData {
00216         char *category;
00218         char *title;
00220         ai::int32 options;
00221 };
00222 
00223 
00225 typedef AIDictionaryRef AILiveEffectParameters;
00226 typedef ConstAIDictionaryRef ConstAILiveEffectParameters;
00227 
00228 
00236 enum AIStyleFilterFlags {
00238         kNoFlags                                = 0,
00240         kPreEffectFilter                = 0x1,
00242         kPostEffectFilter               = 0x2,
00245         kStrokeFilter                   = 0x3,
00247         kFillFilter                             = 0x4,
00250         kFilterTypeMask                 = 0x0ffff,
00252         kSpecialGroupPreFilter  = 1 << 16,
00254         kHasScalableParams              = 1 << 17,
00256         kUsesAutoRasterize              = 1 << 18,
00258         kCanGenerateSVGFilter   = 1 << 19,
00260         kHandlesAdjustColorsMsg = 1 << 20,
00262         kHandlesIsCompatibleMsg = 1 << 21
00263 };
00264 
00265 
00271 enum AIStyleFilterPreferredInputArtType {
00274         kInputArtDynamic                        = 0,
00276         kGroupInputArt                          = 1 << ((ai::int32) kGroupArt - 1),
00278         kPathInputArt                           = 1 << ((ai::int32) kPathArt - 1),
00280         kCompoundPathInputArt           = 1 << ((ai::int32) kCompoundPathArt - 1),
00281 
00283         kTextInputArtUnsupported        = 1 << ((ai::int32) kTextArtUnsupported - 1),
00285         kTextPathInputArtUnsupported= 1 << ((ai::int32) kTextPathArtUnsupported - 1),
00287         kTextRunInputArtUnsupported     = 1 << ((ai::int32) kTextRunArtUnsupported - 1),
00289         kPlacedInputArt                         = 1 << ((ai::int32) kPlacedArt - 1),
00291         kMysteryPathInputArt            = 1 << ((ai::int32) kMysteryPathArt - 1),
00293         kRasterInputArt                         = 1 << ((ai::int32) kRasterArt - 1),
00294 
00297         kPluginInputArt                         = 1 << ((ai::int32) kPluginArt - 1),
00299         kMeshInputArt                           = 1 << ((ai::int32) kMeshArt - 1),
00301         kTextFrameInputArt                      = 1 << ((ai::int32) kTextFrameArt - 1),
00303         kSymbolInputArt                         = 1 << ((ai::int32) kSymbolArt - 1),
00305         kForeignInputArt                        = 1 << ((ai::int32) kForeignArt - 1),
00307         kLegacyTextInputArt                     = 1 << ((ai::int32) kLegacyTextArt - 1),
00309         kChartInputArt                          = 1 << ((ai::int32) kChartArt - 1),
00310 
00312         kAnyInputArt                            = 0xFFFF,
00315         kAnyInputArtButPluginArt        = kAnyInputArt & ~kPluginInputArt,
00316 
00317         // Special values that don't correspond to regular art types should be in the high half word
00318 
00320         // When set, convert strokes to outlines before sending to effect
00321         kOutlinedStrokeInputArt         = 0x10000,
00325         /* (Because it would destroy them by rasterizing, for example,
00326                 or by splitting a single path into multiple non-intersecting paths,
00327                 or by turning it into a plug-in group, like the brush filter).
00328                 This flag is on for "Not OK" instead of on for "OK" because destroying clipping paths is
00329                 an exceptional condition and we don't want to require normal filters to explicitly say they're OK. */
00330         kNoClipMasksInputArt            = 0x20000
00331 
00332 };
00333 
00334 
00336 enum AILiveEffectMergeAction {
00338         kAppendLiveEffectToStyle,
00340         kReplaceFillWithLiveEffect,
00342         kReplaceStrokeWithLiveEffect,
00346         kSendHandleMergeMessage = 0x10000
00347 };
00348 
00349 
00352 struct AILiveEffectData {
00355         SPPluginRef self;
00357         const char* name;
00359         char *title;
00361         ai::int32 majorVersion;
00363         ai::int32 minorVersion;
00366         ai::int32 prefersAsInput;
00369         ai::int32 styleFilterFlags;
00370 };
00371 
00372 
00373 
00374 //
00375 // The contents of Live Effect messages.
00376 //
00377 
00384 struct AILiveEffectGoMessage {
00386         SPMessageData d;
00388         AILiveEffectHandle effect;
00390         AILiveEffectParameters parameters;
00393         AILiveEffectParameters instanceInfo;
00400         AIArtHandle     art;
00401 };
00402 
00414 struct AILiveEffectEditParamMessage {
00416         SPMessageData d;
00418         AILiveEffectHandle effect;
00421         AILiveEffectParameters parameters;
00423         AILiveEffectParamContext context;
00428         AIBoolean allowPreview;
00429 
00433         AIBoolean isNewInstance;
00434 };
00435 
00445 struct AILiveEffectInterpParamMessage {
00447         SPMessageData d;
00449         AILiveEffectHandle effect;
00451         AILiveEffectParameters startParams;
00453         AILiveEffectParameters endParams;
00455         AILiveEffectParameters outParams;
00459         AIReal percent;
00460 
00461 };
00462 
00467 struct AILiveEffectInputTypeMessage {
00469         SPMessageData d;
00471         AILiveEffectHandle effect;
00473         AILiveEffectParameters parameters;
00475         AIArtHandle inputArt;
00480         ai::int32 typeMask;
00481 };
00482 
00488 struct AILiveEffectConvertColorMessage {
00490         SPMessageData d;
00492         AILiveEffectHandle effect;
00494         AILiveEffectParameters parameters;
00496         AIColorTag newColorSpace;
00497 };
00498 
00523 struct AILiveEffectAdjustColorsMessage {
00525         SPMessageData d;
00527         AILiveEffectHandle effect;
00529         AILiveEffectParameters parameters;
00530 
00534         AIAdjustColorFunc adjustColorCallback;
00537         AIAdjustPatternHandleFunc adjustPatternHandleCallback;
00539         void *clientData;
00541         VisitAIColorFlags controlFlags;
00542 
00544         AIBoolean modifiedSomething;
00545 };
00546 
00547 
00549 struct AILiveEffectScaleParamMessage {
00551         SPMessageData d;
00553         AILiveEffectHandle effect;
00556         AILiveEffectParameters parameters;
00559         AIReal scaleFactor;
00561         AIBoolean scaledParams;
00562 };
00563 
00568 struct AILiveEffectHandleMergeMessage {
00570         SPMessageData d;
00572         AILiveEffectHandle effect;
00575         AILiveEffectHandle oldEffect;
00577         AIBoolean dontMerge;
00580         AIBoolean keepInstanceInfo;
00583         AILiveEffectParameters parameters;
00584 };
00585 
00594 struct AILiveEffectGetSVGFilterMessage {
00596         SPMessageData d;
00598         AILiveEffectHandle effect;
00600         AILiveEffectParameters parameters;
00602         AISVGFilterHandle svgFilter;
00603 };
00604 
00611 struct AILiveEffectIsCompatibleMessage {
00612         explicit AILiveEffectIsCompatibleMessage(
00613                 AILiveEffectHandle thisEffect = 0,
00614                 AIVersion version = kAIVersion1,
00615                 ConstAILiveEffectParameters params = 0,
00616                 AIBoolean compat = false)
00617         :       effect(thisEffect), appVersion(version), parameters(params), compatible(compat) {}
00618 
00620         SPMessageData d;
00622         AILiveEffectHandle effect;
00624         AIVersion appVersion;
00626         ConstAILiveEffectParameters parameters;
00627 
00629         AIBoolean compatible;
00630 };
00631 
00632 /*******************************************************************************
00633  **
00634  **     Suite
00635  **
00636  **/
00637 
00680 struct AILiveEffectSuite {
00681 
00687         AIAPI AIErr (*AddLiveEffect) ( AILiveEffectData* effectInfo, AILiveEffectHandle *liveEffectHandle );
00688 
00699         AIAPI AIErr (*AddLiveEffectFilterItem) ( AILiveEffectHandle liveEffectHandle,
00700                 AIFilterHandle filterHandle, AIMenuItemHandle *menuItem, AIMenuGroup *menuGroup );
00701 
00716         AIAPI AIErr (*AddLiveEffectMenuItem) ( AILiveEffectHandle liveEffectHandle, const char* menuName,
00717                  AddLiveEffectMenuData *menuData, AIMenuItemHandle *menuItem, AIMenuGroup *menuGroup );
00718 
00720         AIAPI AIErr (*ExecuteLiveEffect) ( AILiveEffectHandle effect,
00721                                 AILiveEffectParameters parameters, AIArtHandle art );
00722 
00732         AIAPI AIErr (*EditParameters) ( AILiveEffectParamContext context, AIBoolean enablePreview );
00733 
00741         AIAPI AIErr (*UpdateParameters) ( AILiveEffectParamContext context );
00742 
00754         AIAPI AIErr (*InterpolateEffectParameters) ( AILiveEffectHandle effect,
00755                                 AILiveEffectParameters startParams, AILiveEffectParameters endParams,
00756                                 AIReal percent, AILiveEffectParameters resultParams );
00757 
00762         AIAPI AIErr (*CountLiveEffects) ( ai::int32* count );
00763 
00769         AIAPI AIErr (*GetNthLiveEffect) ( ai::int32 n, AILiveEffectHandle* effect );
00770 
00776         AIAPI AIErr (*GetLiveEffectName) ( AILiveEffectHandle effect, const char** name );
00777 
00783         AIAPI AIErr (*GetLiveEffectTitle) ( AILiveEffectHandle effect, const char** name );
00784 
00790         AIAPI AIErr (*GetLiveEffectVersion) ( AILiveEffectHandle effect, ai::int32* major, ai::int32* minor );
00791 
00797         AIAPI AIErr (*GetInputPreference) ( AILiveEffectHandle effect, ai::int32* inputPreference );
00798 
00804         AIAPI AIErr (*GetStyleFilterFlags) ( AILiveEffectHandle effect, ai::int32* styleFilterFlags );
00805 
00812         AIAPI AIErr (*MergeLiveEffectIntoSelection) ( AILiveEffectHandle effect, AILiveEffectMergeAction action );
00813 
00822         AIAPI AIMenuItemHandle (*GetMenuItem) ( AILiveEffectParamContext context );
00823 
00837         AIAPI AIErr (*CreateLiveEffectParameters) ( AILiveEffectParameters* params );
00838 
00850         AIAPI AIErr (*GetLiveEffectAppVersion) ( AILiveEffectHandle effect, AIVersion* appVersionRGB, AIVersion* appVersionCMYK );
00851 
00863         AIAPI AIErr (*SetLiveEffectAppVersion) ( AILiveEffectHandle effect, AIVersion appVersionRGB, AIVersion appVersionCMYK );
00864 
00865 };
00866 
00867 
00868 #include "AIHeaderEnd.h"
00869 
00870 
00871 
00872 #endif


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