Adobe.com
Contents Suites Classes Class Index Member Index

AILiveEffect.h

Go to the documentation of this file.
00001 /*************************************************************************
00002 *
00003 * ADOBE CONFIDENTIAL
00004 *
00005 * Copyright 1986 Adobe
00006 *
00007 * All Rights Reserved.
00008 *
00009 * NOTICE: Adobe permits you to use, modify, and distribute this file in
00010 * accordance with the terms of the Adobe license agreement accompanying
00011 * it. If you have received this file from a source other than Adobe,
00012 * then your use, modification, or distribution of it requires the prior
00013 * written permission of Adobe.
00014 *
00015 **************************************************************************/
00016 
00017 #ifndef __AILiveEffect__
00018 #define __AILiveEffect__
00019 
00020 
00021 /*******************************************************************************
00022  **
00023  **     Imports
00024  **
00025  **/
00026 
00027 #ifndef __AITypes__
00028 #include "AITypes.h"
00029 #endif
00030 
00031 #ifndef __AIArt__
00032 #include "AIArt.h"
00033 #endif
00034 
00035 #ifndef __AIDict__
00036 #include "AIDictionary.h"
00037 #endif
00038 
00039 #ifndef __AIFilter__
00040 #include "AIFilter.h"
00041 #endif
00042 
00043 #ifndef __AIMenu__
00044 #include "AIMenu.h"
00045 #endif
00046 
00047 #ifndef __AIPlugin__
00048 #include "AIPlugin.h"
00049 #endif
00050 
00051 #ifndef __AIXMLElement__
00052 #include "AIXMLElement.h"
00053 #endif
00054 
00055 
00056 
00057 #include "AIHeaderBegin.h"
00058 
00061 /*******************************************************************************
00062  **
00063  ** Constants
00064  **
00065  **/
00066 
00067 #define kAILiveEffectSuite                                      "AI Live Effect Suite"
00068 #define kAILiveEffectSuiteVersion                       AIAPI_VERSION(7)
00069 #define kAILiveEffectVersion                            kAILiveEffectSuiteVersion
00070 
00073 #define kCallerAILiveEffect                                             "AI Live Effect"
00074 
00075 
00083 #define kAILiveEffectParamsExpandBeforeKey      "Adobe Effect Expand Before Version"
00084 
00085 #define kAILiveEffectParamsWriteAlternateVersionMajorKey "Adobe Effect Expand Write Alternate Version Major"
00086 #define kAILiveEffectParamsWriteAlternateVersionMinorKey "Adobe Effect Expand Write Alternate Version Minor"
00087 
00088 
00089 // These are the effect messages.
00090 
00094 #define kSelectorAIEditLiveEffectParameters             "AI Live Effect Edit Parameters"
00095 
00098 #define kSelectorAIGoLiveEffect                                 "AI Live Effect Go Live"
00099 
00101 #define kSelectorAILiveEffectInterpolate                "AI Live Effect Interpolate Parameters"
00102 
00104 #define kSelectorAILiveEffectInputType                  "AI Live Effect Input Type"
00105 
00107 #define kSelectorAILiveEffectConverColorSpace   "AI Live Effect Convert Color Space"
00108 
00110 #define kSelectorAILiveEffectScaleParameters    "AI Live Effect Scale Parameters"
00111 
00113 #define kSelectorAILiveEffectHandleMerge                "AI Live Effect Handle Merge"
00114 
00116 #define kSelectorAILiveEffectGetSVGFilter               "AI Live Effect Get SVG Filter"
00117 
00119 #define kSelectorAILiveEffectAdjustColors               "AI Live Effect Adjust Colors"
00120 
00122 #define kSelectorAILiveEffectIsCompatible               "AI Live Effect Is Compatible"
00123 
00125 #define kSelectorAILiveEffectDocScaleConvertParameters    "AI Live Effect Doc Scale Convert Parameters"
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     /*Parameters can be converted during Document Scale Conversion*/
00264     kHasDocScaleConvertibleParams = 1 << 22
00265 };
00266 
00267 
00273 enum AIStyleFilterPreferredInputArtType {
00276         kInputArtDynamic                        = 0,
00278         kGroupInputArt                          = 1 << ((ai::int32) kGroupArt - 1),
00280         kPathInputArt                           = 1 << ((ai::int32) kPathArt - 1),
00282         kCompoundPathInputArt           = 1 << ((ai::int32) kCompoundPathArt - 1),
00283 
00285         kTextInputArtUnsupported        = 1 << ((ai::int32) kTextArtUnsupported - 1),
00287         kTextPathInputArtUnsupported= 1 << ((ai::int32) kTextPathArtUnsupported - 1),
00289         kTextRunInputArtUnsupported     = 1 << ((ai::int32) kTextRunArtUnsupported - 1),
00291         kPlacedInputArt                         = 1 << ((ai::int32) kPlacedArt - 1),
00293         kMysteryPathInputArt            = 1 << ((ai::int32) kMysteryPathArt - 1),
00295         kRasterInputArt                         = 1 << ((ai::int32) kRasterArt - 1),
00296 
00299         kPluginInputArt                         = 1 << ((ai::int32) kPluginArt - 1),
00301         kMeshInputArt                           = 1 << ((ai::int32) kMeshArt - 1),
00303         kTextFrameInputArt                      = 1 << ((ai::int32) kTextFrameArt - 1),
00305         kSymbolInputArt                         = 1 << ((ai::int32) kSymbolArt - 1),
00307         kForeignInputArt                        = 1 << ((ai::int32) kForeignArt - 1),
00309         kLegacyTextInputArt                     = 1 << ((ai::int32) kLegacyTextArt - 1),
00311         kChartInputArt                          = 1 << ((ai::int32) kChartArt - 1),
00312 
00314         kAnyInputArt                            = 0xFFFF,
00317         kAnyInputArtButPluginArt        = kAnyInputArt & ~kPluginInputArt,
00318 
00319         // Special values that don't correspond to regular art types should be in the high half word
00320 
00322         // When set, convert strokes to outlines before sending to effect
00323         kOutlinedStrokeInputArt         = 0x10000,
00327         /* (Because it would destroy them by rasterizing, for example,
00328                 or by splitting a single path into multiple non-intersecting paths,
00329                 or by turning it into a plug-in group, like the brush filter).
00330                 This flag is on for "Not OK" instead of on for "OK" because destroying clipping paths is
00331                 an exceptional condition and we don't want to require normal filters to explicitly say they're OK. */
00332         kNoClipMasksInputArt            = 0x20000
00333 
00334 };
00335 
00336 
00338 enum AILiveEffectMergeAction {
00340         kAppendLiveEffectToStyle,
00342         kReplaceFillWithLiveEffect,
00344         kReplaceStrokeWithLiveEffect,
00348         kSendHandleMergeMessage = 0x10000
00349 };
00350 
00351 
00354 struct AILiveEffectData {
00357         SPPluginRef self;
00359         const char* name;
00361         char *title;
00363         ai::int32 majorVersion;
00365         ai::int32 minorVersion;
00368         ai::int32 prefersAsInput;
00371         ai::int32 styleFilterFlags;
00372 };
00373 
00374 
00375 
00376 //
00377 // The contents of Live Effect messages.
00378 //
00379 
00386 struct AILiveEffectGoMessage {
00388         SPMessageData d;
00390         AILiveEffectHandle effect;
00392         AILiveEffectParameters parameters;
00395         AILiveEffectParameters instanceInfo;
00402         AIArtHandle     art;
00403 };
00404 
00416 struct AILiveEffectEditParamMessage {
00418         SPMessageData d;
00420         AILiveEffectHandle effect;
00423         AILiveEffectParameters parameters;
00425         AILiveEffectParamContext context;
00430         AIBoolean allowPreview;
00431 
00435         AIBoolean isNewInstance;
00436 };
00437 
00447 struct AILiveEffectInterpParamMessage {
00449         SPMessageData d;
00451         AILiveEffectHandle effect;
00453         AILiveEffectParameters startParams;
00455         AILiveEffectParameters endParams;
00457         AILiveEffectParameters outParams;
00461         AIReal percent;
00462 
00463 };
00464 
00469 struct AILiveEffectInputTypeMessage {
00471         SPMessageData d;
00473         AILiveEffectHandle effect;
00475         AILiveEffectParameters parameters;
00477         AIArtHandle inputArt;
00482         ai::int32 typeMask;
00483 };
00484 
00490 struct AILiveEffectConvertColorMessage {
00492         SPMessageData d;
00494         AILiveEffectHandle effect;
00496         AILiveEffectParameters parameters;
00498         AIColorTag newColorSpace;
00499 };
00500 
00525 struct AILiveEffectAdjustColorsMessage {
00527         SPMessageData d;
00529         AILiveEffectHandle effect;
00531         AILiveEffectParameters parameters;
00532 
00536         AIAdjustColorFunc adjustColorCallback;
00539         AIAdjustPatternHandleFunc adjustPatternHandleCallback;
00541         void *clientData;
00543         VisitAIColorFlags controlFlags;
00544 
00546         AIBoolean modifiedSomething;
00547 };
00548 
00549 
00551 struct AILiveEffectScaleParamMessage {
00553         SPMessageData d;
00555         AILiveEffectHandle effect;
00558         AILiveEffectParameters parameters;
00561         AIReal scaleFactor;
00563         AIBoolean scaledParams;
00564 };
00565 
00570 struct AILiveEffectHandleMergeMessage {
00572         SPMessageData d;
00574         AILiveEffectHandle effect;
00577         AILiveEffectHandle oldEffect;
00579         AIBoolean dontMerge;
00582         AIBoolean keepInstanceInfo;
00585         AILiveEffectParameters parameters;
00586 };
00587 
00596 struct AILiveEffectGetSVGFilterMessage {
00598         SPMessageData d;
00600         AILiveEffectHandle effect;
00602         AILiveEffectParameters parameters;
00604         AISVGFilterHandle svgFilter;
00605 };
00606 
00613 struct AILiveEffectIsCompatibleMessage {
00614         explicit AILiveEffectIsCompatibleMessage(
00615                 AILiveEffectHandle thisEffect = 0,
00616                 AIVersion version = kAIVersion1,
00617                 ConstAILiveEffectParameters params = 0,
00618                 AIBoolean compat = false)
00619         :       effect(thisEffect), appVersion(version), parameters(params), compatible(compat) {}
00620 
00622         SPMessageData d;
00624         AILiveEffectHandle effect;
00626         AIVersion appVersion;
00628         ConstAILiveEffectParameters parameters;
00629 
00631         AIBoolean compatible;
00632 };
00633 
00634 /*******************************************************************************
00635  **
00636  **     Suite
00637  **
00638  **/
00639 
00682 struct AILiveEffectSuite {
00683 
00689         AIAPI AIErr (*AddLiveEffect) ( AILiveEffectData* effectInfo, AILiveEffectHandle *liveEffectHandle );
00690 
00701         AIAPI AIErr (*AddLiveEffectFilterItem) ( AILiveEffectHandle liveEffectHandle,
00702                 AIFilterHandle filterHandle, AIMenuItemHandle *menuItem, AIMenuGroup *menuGroup );
00703 
00718         AIAPI AIErr (*AddLiveEffectMenuItem) ( AILiveEffectHandle liveEffectHandle, const char* menuName,
00719                  AddLiveEffectMenuData *menuData, AIMenuItemHandle *menuItem, AIMenuGroup *menuGroup );
00720 
00722         AIAPI AIErr (*ExecuteLiveEffect) ( AILiveEffectHandle effect,
00723                                 AILiveEffectParameters parameters, AIArtHandle art );
00724 
00734         AIAPI AIErr (*EditParameters) ( AILiveEffectParamContext context, AIBoolean enablePreview );
00735 
00743         AIAPI AIErr (*UpdateParameters) ( AILiveEffectParamContext context );
00744 
00756         AIAPI AIErr (*InterpolateEffectParameters) ( AILiveEffectHandle effect,
00757                                 AILiveEffectParameters startParams, AILiveEffectParameters endParams,
00758                                 AIReal percent, AILiveEffectParameters resultParams );
00759 
00764         AIAPI AIErr (*CountLiveEffects) ( ai::int32* count );
00765 
00771         AIAPI AIErr (*GetNthLiveEffect) ( ai::int32 n, AILiveEffectHandle* effect );
00772 
00778         AIAPI AIErr (*GetLiveEffectName) ( AILiveEffectHandle effect, const char** name );
00779 
00785         AIAPI AIErr (*GetLiveEffectTitle) ( AILiveEffectHandle effect, const char** name );
00786 
00792         AIAPI AIErr (*GetLiveEffectVersion) ( AILiveEffectHandle effect, ai::int32* major, ai::int32* minor );
00793 
00799         AIAPI AIErr (*GetInputPreference) ( AILiveEffectHandle effect, ai::int32* inputPreference );
00800 
00806         AIAPI AIErr (*GetStyleFilterFlags) ( AILiveEffectHandle effect, ai::int32* styleFilterFlags );
00807 
00814         AIAPI AIErr (*MergeLiveEffectIntoSelection) ( AILiveEffectHandle effect, AILiveEffectMergeAction action );
00815 
00825         AIAPI AIErr (*NewArtStyleByMergingLiveEffect) ( AIArtStyleHandle artStyle, AILiveEffectHandle effect,
00826                 AILiveEffectParameters params, AILiveEffectMergeAction action, AIArtStyleHandle *newArtStyle );
00827 
00836         AIAPI AIMenuItemHandle (*GetMenuItem) ( AILiveEffectParamContext context );
00837 
00851         AIAPI AIErr (*CreateLiveEffectParameters) ( AILiveEffectParameters* params );
00852 
00864         AIAPI AIErr (*GetLiveEffectAppVersion) ( AILiveEffectHandle effect, AIVersion* appVersionRGB, AIVersion* appVersionCMYK );
00865 
00877         AIAPI AIErr (*SetLiveEffectAppVersion) ( AILiveEffectHandle effect, AIVersion appVersionRGB, AIVersion appVersionCMYK );
00878 
00879         /*
00880         Searches for a given live effect and returns its Handle. If no live effect corresponding to the name exists then nullptr is returned.
00881         @param liveEffectName name of live effect to search for 
00882         @param outLiveEffect[out] the live effect whose name is same as the input name.
00883         */
00884         AIAPI AIErr (*GetLiveEffectHandleByName) (const char* liveEffectName, AILiveEffectHandle* outLiveEffect);
00885 };
00886 
00887 
00888 #include "AIHeaderEnd.h"
00889 
00890 
00891 #endif


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