blob: 7088e48c7a6fd55029d05df92ee10ffa4d7be0d1 [file] [log] [blame]
import {
createTypedArray,
} from '../helpers/arrays';
function ExpressionValue(elementProp, mult, type) {
mult = mult || 1;
var expressionValue;
if (elementProp.k) {
elementProp.getValue();
}
var i;
var len;
var arrValue;
var val;
if (type) {
if (type === 'color') {
len = 4;
expressionValue = createTypedArray('float32', len);
arrValue = createTypedArray('float32', len);
for (i = 0; i < len; i += 1) {
arrValue[i] = (i < 3) ? elementProp.v[i] * mult : 1;
expressionValue[i] = arrValue[i];
}
expressionValue.value = arrValue;
}
} else if (elementProp.propType === 'unidimensional') {
val = elementProp.v * mult;
expressionValue = new Number(val); // eslint-disable-line no-new-wrappers
expressionValue.value = val;
} else {
len = elementProp.pv.length;
expressionValue = createTypedArray('float32', len);
arrValue = createTypedArray('float32', len);
for (i = 0; i < len; i += 1) {
arrValue[i] = elementProp.v[i] * mult;
expressionValue[i] = arrValue[i];
}
expressionValue.value = arrValue;
}
expressionValue.numKeys = elementProp.keyframes ? elementProp.keyframes.length : 0;
expressionValue.key = function (pos) {
if (!expressionValue.numKeys) {
return 0;
}
return elementProp.keyframes[pos - 1].t;
};
expressionValue.valueAtTime = elementProp.getValueAtTime;
expressionValue.speedAtTime = elementProp.getSpeedAtTime;
expressionValue.velocityAtTime = elementProp.getVelocityAtTime;
expressionValue.propertyGroup = elementProp.propertyGroup;
Object.defineProperty(expressionValue, 'velocity', {
get: function () {
return elementProp.getVelocityAtTime(elementProp.comp.currentFrame);
},
});
return expressionValue;
}
export default ExpressionValue;