在AE内部传递参数,特别是一些复杂计算,对值具有一定的限制,源代码如下:
/* PF_ParamFlags
These flags are passed when adding a param (using PF_ADD_PARAM) to specify
some details about how the param can be used. The flags
are:
PF_ParamFlag_CANNOT_TIME_VARY
If this is passed, the parameter will not be allowed to vary
over time -- no keyframe controller will appear at the right.
PF_ParamFlag_CANNOT_INTERP
If this is passed, parameter values are not interpolated
between. You can still use no interp and discontinuous interp.
PF_ParamFlag_COLLAPSE_TWIRLY / PF_ParamFlag_START_COLLAPSED
Set this flag if you want the parameter's twirly arrow in the
Effect Control Window to be twirled up by default when the
effect is first applied. New in AE 4.0: you can now set &
clear this bit when handling PF_Cmd_UPDATE_PARAMS_UI and
PF_Cmd_USER_CHANGED_PARAM messages, so as to twirl your
parameters and groups up and down at will.
PF_ParamFlag_SUPERVISE
If this is passed, PF_Cmd_USER_CHANGED_PARAM will be sent when
this parameter changes.
PF_ParamFlag_USE_VALUE_FOR_OLD_PROJECTS
This only affects the loading of projects saved with an older version
of the effect which lacks parameters added later. When set, the PF_ParamDef
"value" field set in PF_ADD_PARAM will be used to initialize the missing parameter,
but the "dephault" field will still be used for initial value of the parameter when
the effect is newly applied or reset. This is useful for when you want a
parameter to default to one value but need it set to something else to
preserve rendering behaviour for older projects.
This flag is valid for all PF_Param types except PF_Param_LAYER
PF_ParamFlag_LAYER_PARAM_IS_TRACKMATTE
For PF_Param_LAYER, this flag indicates that the layer parameter is to be presented
as a track matte. Supported by Premiere, ignored in AE.
PF_ParamFlag_EXCLUDE_FROM_HAVE_INPUTS_CHANGED
See doc for PF_HaveInputsChangedOverTimeSpan.
PF_ParamFlag_SKIP_REVEAL_WHEN_UNHIDDEN
when this param is "un hidden" (cuz it may hide and show), then the GUI is NOT to cause
the parameter to be "revealed", ie: it won't twirl down it's parents and scroll it into view
**/
enum {
PF_ParamFlag_RESERVED1 = 1 << 0,
PF_ParamFlag_CANNOT_TIME_VARY = 1 << 1, /* can't vary over time */
PF_ParamFlag_CANNOT_INTERP = 1 << 2, /* can only vary discontinuously */
PF_ParamFlag_RESERVED2 = 1 << 3, /* was _old_ PF_ParamFlag_WANTS_UPDATE value, never used */
PF_ParamFlag_RESERVED3 = 1 << 4, /* was _old_ PF_ParamFlag_SEPARATE, now use PF_PUI_ECW_SEPARATOR */
PF_ParamFlag_COLLAPSE_TWIRLY = 1 << 5, /* controls the twirl-state of the twirly-arrow in the ECW (dynamic) */
PF_ParamFlag_SUPERVISE = 1 << 6, /* call me with PF_Cmd_USER_CHANGED_PARAM (new in AE 4.0) */
PF_ParamFlag_START_COLLAPSED = PF_ParamFlag_COLLAPSE_TWIRLY, /* when first applied, param comes up collapsed */
PF_ParamFlag_USE_VALUE_FOR_OLD_PROJECTS = 1 << 7, /* see extensive comment above */
PF_ParamFlag_LAYER_PARAM_IS_TRACKMATTE = 1 << 7, /* only valid for layer parameters. indicates that a layer param is used as a track-matte with applied filters (used in Premiere, ignored in AE) */
PF_ParamFlag_EXCLUDE_FROM_HAVE_INPUTS_CHANGED = 1 << 8, /* only relevant if you call PF_HaveInputsChangedOverTimeSpan() */
PF_ParamFlag_SKIP_REVEAL_WHEN_UNHIDDEN = 1 << 9 /* dont reveal this stream when un-hidden (use only during param setup) */
};
typedef A_long PF_ParamFlags;//不同类型的参数标志
//错误类型
enum {
PF_Err_NONE = 0,
PF_Err_OUT_OF_MEMORY = 4,//内存溢出
PF_Err_INTERNAL_STRUCT_DAMAGED = PF_FIRST_ERR,
PF_Err_INVALID_INDEX, /* out of range, or action not allowed on this index */
PF_Err_UNRECOGNIZED_PARAM_TYPE,
PF_Err_INVALID_CALLBACK,
PF_Err_BAD_CALLBACK_PARAM,
PF_Interrupt_CANCEL, /* Returned when user interrupts rendering */
PF_Err_CANNOT_PARSE_KEYFRAME_TEXT /* Returned from PF_Arbitrary_SCAN_FUNC when effect
cannot parse arbitrary data from text */
};
typedef A_long PF_Err;
enum {
PF_WorldFlag_DEEP = 1L << 0,
PF_WorldFlag_WRITEABLE = 1L << 1,
PF_WorldFlag_RESERVED0 = 1L << 24,
PF_WorldFlag_RESERVED1 = 1L << 25,
PF_WorldFlag_RESERVED2 = 1L << 26,
PF_WorldFlag_RESERVED3 = 1L << 27,
PF_WorldFlag_RESERVED4 = 1L << 28,
PF_WorldFlag_RESERVED5 = 1L << 29,
PF_WorldFlag_RESERVED6 = 1L << 30,
PF_WorldFlag_RESERVED = 1L << 31
};
typedef A_long PF_WorldFlags;
#define PF_WORLD_IS_DEEP(W) ( ((W)->world_flags & PF_WorldFlag_DEEP) != 0 )
//字符串的长度限制
#define PF_MAX_CHAN8 255
#define PF_HALF_CHAN8 128
#define PF_MAX_CHAN16 32768
#define PF_HALF_CHAN16 16384
参数意义见注释。
如有疑问,请留言。