//Collage module JavaScript interface. //Please, only use PURE JS here (i.e. no jQuery). //JS code follows: var collageManipulations = new Array(); var collageBackgroundImage = ''; var collageBackgroundWidth = 0; var collageBackgroundHeight = 0; var collageSaveFile = false; function AddCollageManipulation(src,x,y,w,h,angle,arr){ //Adds manipulation to temporary array. //Defaults: if(arr==null) arr = collageManipulations; if(arr==null) arr = new Array(); if(src==null) src = ""; if(x==null) x=0; if(y==null) y=0; if(w==null) w=0; if(h==null) h=0; if(angle==null) angle=0; //Function: var tmp = {}; tmp['action']='image';tmp['src']=src; tmp['x']=x;tmp['y']=y;tmp['width']=w;tmp['height']=h; tmp['angle']=angle; arr.push(tmp); return arr; } function ClearCollageManipulations(arr){ //Clears temporary array. //Defaults: if(arr==null) arr = collageManipulations; if(arr==null) arr = new Array(); //Function: arr.length = 0; return arr; } function CompileCollageManipulations(bkgSrc,bkgW,bkgH,bkgSave,arr){ //Compiles manipulation data into HTTP-POST-query string. //Defaults: if(bkgSrc==null) bkgSrc=collageBackgroundImage; if(bkgSrc==null) bkgSrc=''; if(bkgW==null) bkgW=collageBackgroundWidth; if(bkgW==null) bkgW=0; if(bkgH==null) bkgH=collageBackgroundHeight; if(bkgH==null) bkgH=0; if(bkgSave==null) bkgSave=collageSaveFile; if(bkgSave==null) bkgSave=false; if(arr==null) arr = collageManipulations; if(arr==null) arr = new Array(); //Function: var saveCmd = ""; //Do NOT save by default. if(bkgSave) saveCmd = "&save=true"; //If expicitly stated to save the result - add this to request. return 'backgroundsrc='+bkgSrc+'&width='+bkgW+'&height='+bkgH+saveCmd+'&manipulations='+JSON.stringify(arr); } //Not actually a collage function, but helps getting element's rotation: function CollageGetElementAngle(el){ var st = window.getComputedStyle(el, null); var tr = st.getPropertyValue("-webkit-transform") || st.getPropertyValue("-moz-transform") || st.getPropertyValue("-ms-transform") || st.getPropertyValue("-o-transform") || st.getPropertyValue("transform") || "fail..."; if(tr!=="none"){ var values=tr.split('(')[1];values=values.split(')')[0];values=values.split(','); var a=values[0];var b=values[1]; var c=values[2]; var d=values[3]; var scale=Math.sqrt(a*a+b*b); var radians=Math.atan2(b,a); var angle=Math.round(radians*(180/Math.PI)); var radians=Math.atan2(b,a); if (radians<0)radians+=(2*Math.PI); var angle=Math.round(radians*(180/Math.PI)); }else{ var angle=0; } return angle; }