blob: 85e258ec15cc2e141b1b65466047a386cb6a3cf6 [file] [log] [blame]
function IImageElement(data,parentContainer,globalData,placeholder){
this.assetData = globalData.getAssetData(data.ll);
this.path = globalData.getPath();
this.parent.constructor.call(this,data,parentContainer,globalData,placeholder);
}
createElement(BaseElement, IImageElement);
IImageElement.prototype.createElements = function(){
var self = this;
var imageLoaded = function(){
self.image.setAttributeNS('http://www.w3.org/1999/xlink','href',self.path+self.assetData.p);
self.maskedElement = self.image;
};
var img = new Image();
img.addEventListener('load', imageLoaded, false);
img.addEventListener('error', imageLoaded, false);
img.src = this.path+this.assetData.p;
this.parent.createElements.call(this);
this.image = document.createElementNS(svgNS,'image');
this.image.setAttribute('width',this.assetData.w+"px");
this.image.setAttribute('height',this.assetData.h+"px");
if(this.layerElement === this.parentContainer){
this.appendNodeToParent(this.image);
}else{
this.layerElement.appendChild(this.image);
}
};
IImageElement.prototype.hide = function(){
if(!this.hidden){
this.image.setAttribute('visibility','hidden');
this.hidden = true;
}
};
IImageElement.prototype.renderFrame = function(num,parentMatrix){
var renderParent = this.parent.renderFrame.call(this,num,parentMatrix);
if(renderParent===false){
this.hide();
return;
}
if(this.hidden){
this.lastData.o = -1;
this.hidden = false;
this.image.setAttribute('visibility', 'visible');
}
if(!this.data.hasMask){
if(!this.renderedFrames[this.globalData.frameNum]){
var tr = 'matrix('+this.finalTransform.mat.props.join(',')+')';
if(this.lastData && this.lastData.tr === tr && this.lastData.o === this.finalTransform.opacity){
this.renderedFrames[this.globalData.frameNum] = this.lastData;
}else{
this.renderedFrames[this.globalData.frameNum] = new RenderedFrame(tr,this.finalTransform.opacity);
}
}
var renderedFrameData = this.renderedFrames[this.globalData.frameNum];
if(this.lastData.tr != renderedFrameData.tr){
this.image.setAttribute('transform',renderedFrameData.tr);
}
if(this.lastData.o !== renderedFrameData.o){
this.image.setAttribute('opacity',renderedFrameData.o);
}
this.lastData = renderedFrameData;
}
};
IImageElement.prototype.destroy = function(){
this.parent.destroy.call();
this.image = null;
};