blob: 3fd27a398d57866308454a4e11ef9ae90cefe8ba [file] [log] [blame]
function IImageElement(data,parentContainer,globalData,comp,placeholder){
this.assetData = globalData.getAssetData(data.refId);
this.path = globalData.getPath();
this.parent.constructor.call(this,data,parentContainer,globalData,comp,placeholder);
}
createElement(SVGBaseElement, IImageElement);
IImageElement.prototype.createElements = function(){
var self = this;
var imageLoaded = function(){
var cv = document.createElement('canvas');
cv.width = self.assetData.w;
cv.height = self.assetData.h;
var ctx = cv.getContext('2d');
ctx.drawImage(img,self.assetData.x,self.assetData.y,self.assetData.w,self.assetData.h,0,0,self.assetData.w,self.assetData.h);
var dataUri = cv.toDataURL();
self.innerElem.setAttributeNS('http://www.w3.org/1999/xlink','href',dataUri);
//self.innerElem.setAttributeNS('http://www.w3.org/1999/xlink','href',self.path+self.assetData.p);
self.maskedElement = self.innerElem;
ImageManager.unregisterImage(imgLoader);
};
var imgLoader = ImageManager.getImage(this.path+this.assetData.p);
var img = imgLoader.elem;
if(imgLoader.loaded) {
imageLoaded();
} else {
img.addEventListener('load', imageLoaded, false);
img.addEventListener('error', imageLoaded, false);
}
this.parent.createElements.call(this);
this.innerElem = document.createElementNS(svgNS,'image');
this.innerElem.setAttribute('width',this.assetData.w+"px");
this.innerElem.setAttribute('height',this.assetData.h+"px");
if(this.layerElement === this.parentContainer){
this.appendNodeToParent(this.innerElem);
}else{
this.layerElement.appendChild(this.innerElem);
}
if(this.data.ln){
this.innerElem.setAttribute('id',this.data.ln);
}
};
IImageElement.prototype.hide = function(){
if(!this.hidden){
this.innerElem.setAttribute('visibility','hidden');
this.hidden = true;
}
};
IImageElement.prototype.renderFrame = function(parentMatrix){
var renderParent = this.parent.renderFrame.call(this,parentMatrix);
if(renderParent===false){
this.hide();
return;
}
if(this.hidden){
this.hidden = false;
this.innerElem.setAttribute('visibility', 'visible');
}
if(!this.data.hasMask){
if(this.finalTransform.matMdf || this.firstFrame){
this.innerElem.setAttribute('transform',this.finalTransform.mat.to2dCSS());
}
if(this.finalTransform.opMdf || this.firstFrame){
this.innerElem.setAttribute('opacity',this.finalTransform.opacity);
}
}
if(this.firstFrame){
this.firstFrame = false;
}
};
IImageElement.prototype.destroy = function(){
this.parent.destroy.call();
this.innerElem = null;
};