| 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 3: |
| return this.createNull(layer); |
| case 4: |
| return this.createShape(layer); |
| case 5: |
| return this.createText(layer); |
| case 13: |
| return this.createCamera(layer); |
| } |
| return this.createNull(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) { |
| 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 { |
| hierarchy.push(elements[i]); |
| elements[i].setAsParent(); |
| if(layers[i].parent !== undefined) { |
| this.buildElementParenting(element, layers[i].parent, hierarchy); |
| } else { |
| element.setHierarchy(hierarchy); |
| } |
| } |
| } |
| i += 1; |
| } |
| }; |
| |
| BaseRenderer.prototype.addPendingElement = function(element){ |
| this.pendingElements.push(element); |
| }; |
| |
| BaseRenderer.prototype.searchExtraCompositions = function(assets){ |
| var i, len = assets.length; |
| for(i=0;i<len;i+=1){ |
| if(assets[i].xt){ |
| var comp = this.createComp(assets[i]); |
| comp.initExpressions(); |
| this.globalData.projectInterface.registerComposition(comp); |
| } |
| } |
| }; |
| |
| BaseRenderer.prototype.setupGlobalData = function(animData, fontsContainer) { |
| this.globalData.fontManager = new FontManager(); |
| this.globalData.fontManager.addChars(animData.chars); |
| this.globalData.fontManager.addFonts(animData.fonts, fontsContainer); |
| this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem); |
| this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem); |
| this.globalData.imageLoader = this.animationItem.imagePreloader; |
| this.globalData.frameId = 0; |
| this.globalData.frameRate = animData.fr; |
| this.globalData.nm = animData.nm; |
| this.globalData.compSize = { |
| w: animData.w, |
| h: animData.h |
| } |
| } |