blob: f15dd8f0770e082bc1c6aa0f953a88f7458ed3a5 [file] [log] [blame]
function BaseRenderer(){}
BaseRenderer.prototype.checkLayers = function(num){
var i, len = this.layers.length, data;
this.completeLayers = true;
for (i = len - 1; i >= 0; i--) {
if (!this.elements[i]) {
data = this.layers[i];
if(data.ip - data.st <= (num - this.layers[i].st) && data.op - data.st > (num - this.layers[i].st))
{
this.buildItem(i);
}
}
this.completeLayers = this.elements[i] ? this.completeLayers:false;
}
this.checkPendingElements();
};
BaseRenderer.prototype.createItem = function(layer){
switch(layer.ty){
case 2:
return this.createImage(layer);
case 0:
return this.createComp(layer);
case 1:
return this.createSolid(layer);
case 4:
return this.createShape(layer);
case 5:
return this.createText(layer);
case 13:
return this.createCamera(layer);
case 99:
return null;
}
return this.createBase(layer);
};
BaseRenderer.prototype.createCamera = function(){
throw new Error('You\'re using a 3d camera. Try the html renderer.');
}
BaseRenderer.prototype.buildAllItems = function(){
var i, len = this.layers.length;
for(i=0;i<len;i+=1){
this.buildItem(i);
}
this.checkPendingElements();
};
BaseRenderer.prototype.includeLayers = function(newLayers){
this.completeLayers = false;
var i, len = newLayers.length;
var j, jLen = this.layers.length;
for(i=0;i<len;i+=1){
j = 0;
while(j<jLen){
if(this.layers[j].id == newLayers[i].id){
this.layers[j] = newLayers[i];
break;
}
j += 1;
}
}
};
BaseRenderer.prototype.setProjectInterface = function(pInterface){
this.globalData.projectInterface = pInterface;
};
BaseRenderer.prototype.initItems = function(){
if(!this.globalData.progressiveLoad){
this.buildAllItems();
}
};
BaseRenderer.prototype.buildElementParenting = function(element, parentName, hierarchy){
hierarchy = hierarchy || [];
var elements = this.elements;
var layers = this.layers;
var i=0, len = layers.length;
while(i<len){
if(layers[i].ind == parentName){
if(!elements[i] || elements[i] === true){
this.buildItem(i);
this.addPendingElement(element);
} else if(layers[i].parent !== undefined){
hierarchy.push(elements[i]);
elements[i]._isParent = true;
this.buildElementParenting(element,layers[i].parent, hierarchy);
} else {
hierarchy.push(elements[i]);
elements[i]._isParent = true;
element.setHierarchy(hierarchy);
}
}
i += 1;
}
};
BaseRenderer.prototype.addPendingElement = function(element){
this.pendingElements.push(element);
};