blob: bbe52017328b6f6fbab6e0a61e09bf53e789ac0b [file] [log] [blame]
var EffectsExpressionInterface = (function (){
var ob = {
createEffectsInterface: createEffectsInterface
};
function createEffectsInterface(elem, propertyGroup){
if(elem.effectsManager){
var effectElements = [];
var effectsData = elem.data.ef;
var i, len = elem.effectsManager.effectElements.length;
for(i=0;i<len;i+=1){
effectElements.push(createGroupInterface(effectsData[i],elem.effectsManager.effectElements[i],propertyGroup,elem));
}
var effects = elem.data.ef || [];
var groupInterface = function(name){
i = 0, len = effects.length;
while(i<len) {
if(name === effects[i].nm || name === effects[i].mn || name === effects[i].ix){
return effectElements[i];
}
i += 1;
}
};
Object.defineProperty(groupInterface, 'numProperties', {
get: function(){
return effects.length;
}
});
return groupInterface
}
}
function createGroupInterface(data,elements, propertyGroup, elem){
function groupInterface(name){
var effects = data.ef, i = 0, len = effects.length;
while(i<len) {
if(name === effects[i].nm || name === effects[i].mn || name === effects[i].ix){
if(effects[i].ty === 5){
return effectElements[i];
} else {
return effectElements[i]();
}
}
i += 1;
}
return effectElements[0]();
};
var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);
var effectElements = [];
var i, len = data.ef.length;
for(i=0;i<len;i+=1){
if(data.ef[i].ty === 5){
effectElements.push(createGroupInterface(data.ef[i],elements.effectElements[i],elements.effectElements[i].propertyGroup, elem));
} else {
effectElements.push(createValueInterface(elements.effectElements[i],data.ef[i].ty, elem, _propertyGroup));
}
}
if(data.mn === 'ADBE Color Control'){
Object.defineProperty(groupInterface, 'color', {
get: function(){
return effectElements[0]();
}
});
}
Object.defineProperties(groupInterface, {
numProperties: {
get: function(){
return data.np;
}
},
_name: { value: data.nm },
propertyGroup: {value: _propertyGroup},
});
groupInterface.active = groupInterface.enabled = data.en !== 0;
return groupInterface;
}
function createValueInterface(element, type, elem, propertyGroup){
var expressionProperty = ExpressionPropertyInterface(element.p);
function interfaceFunction(){
if(type === 10){
return elem.comp.compInterface(element.p.v);
}
return expressionProperty();
}
if(element.p.setGroupProperty) {
element.p.setGroupProperty(PropertyInterface('', propertyGroup));
}
return interfaceFunction;
}
return ob;
}());