UNPKG

bodymovin

Version:

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

186 lines (169 loc) 6.58 kB
var LayerExpressionInterface = (function (){ function toWorld(arr, time){ var toWorldMat = new Matrix(); toWorldMat.reset(); var transformMat; if(time) { //Todo implement value at time on transform properties //transformMat = this._elem.finalTransform.mProp.getValueAtTime(time); transformMat = this._elem.finalTransform.mProp; } else { transformMat = this._elem.finalTransform.mProp; } transformMat.applyToMatrix(toWorldMat); if(this._elem.hierarchy && this._elem.hierarchy.length){ var i, len = this._elem.hierarchy.length; for(i=0;i<len;i+=1){ this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat); } return toWorldMat.applyToPointArray(arr[0],arr[1],arr[2]||0); } return toWorldMat.applyToPointArray(arr[0],arr[1],arr[2]||0); } function fromWorld(arr, time){ var toWorldMat = new Matrix(); toWorldMat.reset(); var transformMat; if(time) { //Todo implement value at time on transform properties //transformMat = this._elem.finalTransform.mProp.getValueAtTime(time); transformMat = this._elem.finalTransform.mProp; } else { transformMat = this._elem.finalTransform.mProp; } transformMat.applyToMatrix(toWorldMat); if(this._elem.hierarchy && this._elem.hierarchy.length){ var i, len = this._elem.hierarchy.length; for(i=0;i<len;i+=1){ this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat); } return toWorldMat.inversePoint(arr); } return toWorldMat.inversePoint(arr); } function fromComp(arr){ var toWorldMat = new Matrix(); toWorldMat.reset(); this._elem.finalTransform.mProp.applyToMatrix(toWorldMat); if(this._elem.hierarchy && this._elem.hierarchy.length){ var i, len = this._elem.hierarchy.length; for(i=0;i<len;i+=1){ this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat); } return toWorldMat.inversePoint(arr); } return toWorldMat.inversePoint(arr); } return function(elem){ var transformInterface = TransformExpressionInterface(elem.transform); function _registerMaskInterface(maskManager){ _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem); } function _registerEffectsInterface(effects){ _thisLayerFunction.effect = effects; } function _thisLayerFunction(name){ switch(name){ case "ADBE Root Vectors Group": case "Contents": case 2: return _thisLayerFunction.shapeInterface; case 1: case 6: case "Transform": case "transform": case "ADBE Transform Group": return transformInterface; case 4: case "ADBE Effect Parade": return _thisLayerFunction.effect; } } _thisLayerFunction.toWorld = toWorld; _thisLayerFunction.fromWorld = fromWorld; _thisLayerFunction.toComp = toWorld; _thisLayerFunction.fromComp = fromComp; _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem); _thisLayerFunction._elem = elem; Object.defineProperty(_thisLayerFunction, 'hasParent', { get: function(){ return !!elem.hierarchy; } }); Object.defineProperty(_thisLayerFunction, 'parent', { get: function(){ return elem.hierarchy[0].layerInterface; } }); Object.defineProperty(_thisLayerFunction, "rotation", { get: function(){ return transformInterface.rotation; } }); Object.defineProperty(_thisLayerFunction, "scale", { get: function () { return transformInterface.scale; } }); Object.defineProperty(_thisLayerFunction, "position", { get: function () { return transformInterface.position; } }); Object.defineProperty(_thisLayerFunction, "anchorPoint", { get: function () { return transformInterface.anchorPoint; } }); Object.defineProperty(_thisLayerFunction, "transform", { get: function () { return transformInterface; } }); Object.defineProperty(_thisLayerFunction, "width", { get: function () { if(elem.data.ty === 0) { return elem.data.w } return 100; } }); Object.defineProperty(_thisLayerFunction, "height", { get: function () { if(elem.data.ty === 0) { return elem.data.h } return 100; } }); Object.defineProperty(_thisLayerFunction, "source", { get: function () { return elem.data.refId; } }); Object.defineProperty(_thisLayerFunction, "index", { get: function () { return elem.data.ind; } }); Object.defineProperty(_thisLayerFunction, "_name", { value:elem.data.nm }); Object.defineProperty(_thisLayerFunction, "content", { get: function(){ return _thisLayerFunction.shapeInterface; } }); Object.defineProperty(_thisLayerFunction, "active", { get: function(){ return elem.isVisible; } }); Object.defineProperty(_thisLayerFunction, "text", { get: function(){ return _thisLayerFunction.textInterface; } }); _thisLayerFunction.registerMaskInterface = _registerMaskInterface; _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface; return _thisLayerFunction; } }());