blob: f47ef8e5975c6e8f4ba614bbfe3e18d5c7d1df9a [file] [log] [blame]
var LayerExpressionInterface = (function (){
function toWorld(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.applyToPointArray(arr[0],arr[1],arr[2]||0);
}
return toWorldMat.applyToPointArray(arr[0],arr[1],arr[2]||0);
}
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 = maskManager.getMask.bind(maskManager);
}
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 "Transform":
case "transform":
case "ADBE Transform Group":
return transformInterface;
case 4:
case "ADBE Effect Parade":
return _thisLayerFunction.effect;
}
}
_thisLayerFunction.toWorld = toWorld;
_thisLayerFunction.toComp = toWorld;
_thisLayerFunction.fromComp = fromComp;
_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, "_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;
}
}());