ExpressionValue.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import {
  2. createTypedArray,
  3. } from '../helpers/arrays';
  4. function ExpressionValue(elementProp, mult, type) {
  5. mult = mult || 1;
  6. var expressionValue;
  7. if (elementProp.k) {
  8. elementProp.getValue();
  9. }
  10. var i;
  11. var len;
  12. var arrValue;
  13. var val;
  14. if (type) {
  15. if (type === 'color') {
  16. len = 4;
  17. expressionValue = createTypedArray('float32', len);
  18. arrValue = createTypedArray('float32', len);
  19. for (i = 0; i < len; i += 1) {
  20. arrValue[i] = (i < 3) ? elementProp.v[i] * mult : 1;
  21. expressionValue[i] = arrValue[i];
  22. }
  23. expressionValue.value = arrValue;
  24. }
  25. } else if (elementProp.propType === 'unidimensional') {
  26. val = elementProp.v * mult;
  27. expressionValue = new Number(val); // eslint-disable-line no-new-wrappers
  28. expressionValue.value = val;
  29. } else {
  30. len = elementProp.pv.length;
  31. expressionValue = createTypedArray('float32', len);
  32. arrValue = createTypedArray('float32', len);
  33. for (i = 0; i < len; i += 1) {
  34. arrValue[i] = elementProp.v[i] * mult;
  35. expressionValue[i] = arrValue[i];
  36. }
  37. expressionValue.value = arrValue;
  38. }
  39. expressionValue.numKeys = elementProp.keyframes ? elementProp.keyframes.length : 0;
  40. expressionValue.key = function (pos) {
  41. if (!expressionValue.numKeys) {
  42. return 0;
  43. }
  44. return elementProp.keyframes[pos - 1].t;
  45. };
  46. expressionValue.valueAtTime = elementProp.getValueAtTime;
  47. expressionValue.speedAtTime = elementProp.getSpeedAtTime;
  48. expressionValue.velocityAtTime = elementProp.getVelocityAtTime;
  49. expressionValue.propertyGroup = elementProp.propertyGroup;
  50. Object.defineProperty(expressionValue, 'velocity', {
  51. get: function () {
  52. return elementProp.getVelocityAtTime(elementProp.comp.currentFrame);
  53. },
  54. });
  55. return expressionValue;
  56. }
  57. export default ExpressionValue;