UNPKG

lottie-web

Version:

After Effects plugin for exporting animations to SVG + JavaScript or canvas + JavaScript

62 lines (58 loc) 1.61 kB
import Matrix from '../../../3rd_party/transformation-matrix'; function ShapeTransformManager() { this.sequences = {}; this.sequenceList = []; this.transform_key_count = 0; } ShapeTransformManager.prototype = { addTransformSequence: function (transforms) { var i; var len = transforms.length; var key = '_'; for (i = 0; i < len; i += 1) { key += transforms[i].transform.key + '_'; } var sequence = this.sequences[key]; if (!sequence) { sequence = { transforms: [].concat(transforms), finalTransform: new Matrix(), _mdf: false, }; this.sequences[key] = sequence; this.sequenceList.push(sequence); } return sequence; }, processSequence: function (sequence, isFirstFrame) { var i = 0; var len = sequence.transforms.length; var _mdf = isFirstFrame; while (i < len && !isFirstFrame) { if (sequence.transforms[i].transform.mProps._mdf) { _mdf = true; break; } i += 1; } if (_mdf) { sequence.finalTransform.reset(); for (i = len - 1; i >= 0; i -= 1) { sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v); } } sequence._mdf = _mdf; }, processSequences: function (isFirstFrame) { var i; var len = this.sequenceList.length; for (i = 0; i < len; i += 1) { this.processSequence(this.sequenceList[i], isFirstFrame); } }, getNewKey: function () { this.transform_key_count += 1; return '_' + this.transform_key_count; }, }; export default ShapeTransformManager;