font fixes
diff --git a/player/index.html b/player/index.html
index e62da68..2c7e787 100644
--- a/player/index.html
+++ b/player/index.html
@@ -120,7 +120,7 @@
var animData = {
container: elem,
renderer: 'svg',
- loop: true,
+ loop: false,
autoplay: true,
rendererSettings: {
progressiveLoad:false
diff --git a/player/js/utils/FontManager.js b/player/js/utils/FontManager.js
index 21fa53e..e08041f 100644
--- a/player/js/utils/FontManager.js
+++ b/player/js/utils/FontManager.js
@@ -37,7 +37,7 @@
loadedCount -= 1;
continue;
}
- if(this.fonts[i].fOrigin === 't'){
+ if(this.fonts[i].fOrigin === 't' || this.fonts[i].origin === 2){
if(window.Typekit && window.Typekit.load && this.typekitLoaded === 0){
this.typekitLoaded = 1;
try{window.Typekit.load({
@@ -50,7 +50,7 @@
if(this.typekitLoaded === 2) {
this.fonts[i].loaded = true;
}
- } else if(this.fonts[i].fOrigin === 'n'){
+ } else if(this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0){
this.fonts[i].loaded = true;
} else{
node = this.fonts[i].monoCase.node;
@@ -118,19 +118,19 @@
fontArr[i].sansCase = setUpNode(fontArr[i].fFamily,'sans-serif');
if(!fontArr[i].fPath) {
fontArr[i].loaded = true;
- }else if(fontArr[i].fOrigin === 'p'){
+ }else if(fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3){
var s = document.createElement('style');
s.type = "text/css";
s.innerHTML = "@font-face {" + "font-family: "+fontArr[i].fFamily+"; font-style: normal; src: url('"+fontArr[i].fPath+"');}";
defs.appendChild(s);
- } else if(fontArr[i].fOrigin === 'g'){
+ } else if(fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1){
//<link href='https://fonts.googleapis.com/css?family=Montserrat' rel='stylesheet' type='text/css'>
var l = document.createElement('link');
l.type = "text/css";
l.rel = "stylesheet";
l.href = fontArr[i].fPath;
defs.appendChild(l);
- } else if(fontArr[i].fOrigin === 't'){
+ } else if(fontArr[i].fOrigin === 't' || fontArr[i].origin === 2){
//<link href='https://fonts.googleapis.com/css?family=Montserrat' rel='stylesheet' type='text/css'>
var sc = document.createElement('script');
sc.setAttribute('src',fontArr[i].fPath);
diff --git a/player/js/utils/expressions/ExpressionManager.js b/player/js/utils/expressions/ExpressionManager.js
index ea967d0..b330971 100644
--- a/player/js/utils/expressions/ExpressionManager.js
+++ b/player/js/utils/expressions/ExpressionManager.js
@@ -69,10 +69,11 @@
return b;
}
if(a.constructor === Array && b.constructor === Array){
+
var i = 0, lenA = a.length, lenB = b.length;
var retArr = [];
while(i<lenA || i < lenB){
- if(typeof a[i] === 'number' && typeof b[i] === 'number'){
+ if((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)){
retArr[i] = a[i] + b[i];
}else{
retArr[i] = b[i] == undefined ? a[i] : a[i] || b[i];
@@ -103,7 +104,7 @@
var i = 0, lenA = a.length, lenB = b.length;
var retArr = [];
while(i<lenA || i < lenB){
- if(typeof a[i] === 'number' && typeof b[i] === 'number'){
+ if((typeof a[i] === 'number' || a[i] instanceof Number) && typeof (typeof b[i] === 'number' || b[i] instanceof Number)){
retArr[i] = a[i] - b[i];
}else{
retArr[i] = b[i] == undefined ? a[i] : a[i] || b[i];
@@ -322,7 +323,7 @@
var outPoint = elem.data.op/elem.comp.globalData.frameRate;
var width = elem.data.sw ? elem.data.sw : 0;
var height = elem.data.sh ? elem.data.sh : 0;
- var thisLayer,thisComp;
+ var toWorld,fromWorld,anchorPoint,thisLayer,thisComp;
var fn = new Function();
//var fnStr = 'var fn = function(){'+val+';this.v = $bm_rt;}';
//eval(fnStr);
@@ -596,9 +597,8 @@
}
return t*fps;
}
-
- var toworldMatrix = new Matrix();
- function toWorld(arr){
+ /*var toworldMatrix = new Matrix();
+ function toWorld(arr, time){
toworldMatrix.reset();
elem.finalTransform.mProp.applyToMatrix(toworldMatrix);
if(elem.hierarchy && elem.hierarchy.length){
@@ -609,9 +609,9 @@
return toworldMatrix.applyToPointArray(arr[0],arr[1],arr[2]||0);
}
return toworldMatrix.applyToPointArray(arr[0],arr[1],arr[2]||0);
- }
+ }*/
- var fromworldMatrix = new Matrix();
+ /*var fromworldMatrix = new Matrix();
function fromWorld(arr){
fromworldMatrix.reset();
var pts = [];
@@ -625,7 +625,7 @@
return fromworldMatrix.inversePoints(pts)[0];
}
return fromworldMatrix.inversePoints(pts)[0];
- }
+ }*/
function seedRandom(seed){
BMMath.seedrandom(randSeed + seed);
@@ -655,10 +655,14 @@
if(!thisLayer){
thisLayer = elem.layerInterface;
thisComp = elem.comp.compInterface;
+ toWorld = thisLayer.toWorld.bind(thisLayer);
+ fromWorld = thisLayer.fromWorld.bind(thisLayer);
}
if(!transform){
transform = elem.layerInterface("ADBE Transform Group");
}
+ anchorPoint = transform.anchorPoint
+
if(elemType === 4 && !content){
content = thisLayer("ADBE Root Vectors Group");
}
@@ -678,6 +682,7 @@
if(needsVelocity){
velocity = velocityAtTime(time);
}
+
bindedFn();
this.frameExpressionId = elem.globalData.frameId;
var i,len;
diff --git a/player/js/utils/expressions/ExpressionPropertyDecorator.js b/player/js/utils/expressions/ExpressionPropertyDecorator.js
index b8c75bd..3c6cb10 100644
--- a/player/js/utils/expressions/ExpressionPropertyDecorator.js
+++ b/player/js/utils/expressions/ExpressionPropertyDecorator.js
@@ -194,6 +194,14 @@
}
}
+ function getTransformValueAtTime(time) {
+ console.log('time:', time)
+ }
+
+ function getTransformStaticValueAtTime(time) {
+
+ }
+
var TextExpressionSelectorProp = (function(){
function getValueProxy(index,total){
@@ -229,10 +237,18 @@
PropertyFactory.getProp = function(elem,data,type, mult, arr){
var prop = propertyGetProp(elem,data,type, mult, arr);
prop.getVelocityAtTime = getVelocityAtTime;
- if(prop.kf){
- prop.getValueAtTime = getValueAtTime.bind(prop);
+ if(type === 2) {
+ if(prop.dynamicProperties.length) {
+ prop.getValueAtTime = getTransformValueAtTime.bind(prop);
+ } else {
+ prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);
+ }
} else {
- prop.getValueAtTime = getStaticValueAtTime.bind(prop);
+ if(prop.kf){
+ prop.getValueAtTime = getValueAtTime.bind(prop);
+ } else {
+ prop.getValueAtTime = getStaticValueAtTime.bind(prop);
+ }
}
prop.setGroupProperty = setGroupProperty;
var isAdded = prop.k;
diff --git a/player/js/utils/expressions/LayerInterface.js b/player/js/utils/expressions/LayerInterface.js
index f47ef8e..9e568c3 100644
--- a/player/js/utils/expressions/LayerInterface.js
+++ b/player/js/utils/expressions/LayerInterface.js
@@ -1,8 +1,16 @@
var LayerExpressionInterface = (function (){
- function toWorld(arr){
+ function toWorld(arr, time){
var toWorldMat = new Matrix();
toWorldMat.reset();
- this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);
+ 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){
@@ -12,6 +20,28 @@
}
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){
+ console.log(this._elem.hierarchy[i].finalTransform.mProp.getValueAtTime)
+ 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();
@@ -55,6 +85,7 @@
}
}
_thisLayerFunction.toWorld = toWorld;
+ _thisLayerFunction.fromWorld = fromWorld;
_thisLayerFunction.toComp = toWorld;
_thisLayerFunction.fromComp = fromComp;
_thisLayerFunction._elem = elem;