diff war/scripts/excanvas.js @ 3:cf06b77a8bbd

Committed branch of the e4D repos sti-gwt branch 16384. git-svn-id: http://dev.dariah.eu/svn/repos/eu.dariah.de/ap1/sti-gwt-dariah-geobrowser@36 f2b5be40-def6-11e0-8a09-b3c1cc336c6b
author StefanFunk <StefanFunk@f2b5be40-def6-11e0-8a09-b3c1cc336c6b>
date Tue, 17 Jul 2012 13:34:40 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/war/scripts/excanvas.js	Tue Jul 17 13:34:40 2012 +0000
@@ -0,0 +1,544 @@
+if(!document.createElement("canvas").getContext){
+(function(){
+var m=Math;
+var mr=m.round;
+var ms=m.sin;
+var mc=m.cos;
+var _5=m.abs;
+var _6=m.sqrt;
+var Z=10;
+var Z2=Z/2;
+function getContext(){
+return this.context_||(this.context_=new CanvasRenderingContext2D_(this));
+};
+var _9=Array.prototype.slice;
+function bind(f,_b,_c){
+var a=_9.call(arguments,2);
+return function(){
+return f.apply(_b,a.concat(_9.call(arguments)));
+};
+};
+var _e={init:function(_f){
+if(/MSIE/.test(navigator.userAgent)&&!window.opera){
+var doc=_f||document;
+doc.createElement("canvas");
+doc.attachEvent("onreadystatechange",bind(this.init_,this,doc));
+}
+},init_:function(doc){
+if(!doc.namespaces["g_vml_"]){
+doc.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML");
+}
+if(!doc.namespaces["g_o_"]){
+doc.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML");
+}
+if(!doc.styleSheets["ex_canvas_"]){
+var ss=doc.createStyleSheet();
+ss.owningElement.id="ex_canvas_";
+ss.cssText="canvas{display:inline-block;overflow:hidden;"+"text-align:left;width:300px;height:150px}"+"g_vml_\\:*{behavior:url(#default#VML)}"+"g_o_\\:*{behavior:url(#default#VML)}";
+}
+var els=doc.getElementsByTagName("canvas");
+for(var i=0;i<els.length;i++){
+this.initElement(els[i]);
+}
+},initElement:function(el){
+if(!el.getContext){
+el.getContext=getContext;
+el.innerHTML="";
+el.attachEvent("onpropertychange",onPropertyChange);
+el.attachEvent("onresize",onResize);
+var _16=el.attributes;
+if(_16.width&&_16.width.specified){
+el.style.width=_16.width.nodeValue+"px";
+}else{
+el.width=el.clientWidth;
+}
+if(_16.height&&_16.height.specified){
+el.style.height=_16.height.nodeValue+"px";
+}else{
+el.height=el.clientHeight;
+}
+}
+return el;
+}};
+function onPropertyChange(e){
+var el=e.srcElement;
+switch(e.propertyName){
+case "width":
+el.style.width=el.attributes.width.nodeValue+"px";
+el.getContext().clearRect();
+break;
+case "height":
+el.style.height=el.attributes.height.nodeValue+"px";
+el.getContext().clearRect();
+break;
+}
+};
+function onResize(e){
+var el=e.srcElement;
+if(el.firstChild){
+el.firstChild.style.width=el.clientWidth+"px";
+el.firstChild.style.height=el.clientHeight+"px";
+}
+};
+_e.init();
+var _1b=[];
+for(var i=0;i<16;i++){
+for(var j=0;j<16;j++){
+_1b[i*16+j]=i.toString(16)+j.toString(16);
+}
+}
+function createMatrixIdentity(){
+return [[1,0,0],[0,1,0],[0,0,1]];
+};
+function matrixMultiply(m1,m2){
+var _20=createMatrixIdentity();
+for(var x=0;x<3;x++){
+for(var y=0;y<3;y++){
+var sum=0;
+for(var z=0;z<3;z++){
+sum+=m1[x][z]*m2[z][y];
+}
+_20[x][y]=sum;
+}
+}
+return _20;
+};
+function copyState(o1,o2){
+o2.fillStyle=o1.fillStyle;
+o2.lineCap=o1.lineCap;
+o2.lineJoin=o1.lineJoin;
+o2.lineWidth=o1.lineWidth;
+o2.miterLimit=o1.miterLimit;
+o2.shadowBlur=o1.shadowBlur;
+o2.shadowColor=o1.shadowColor;
+o2.shadowOffsetX=o1.shadowOffsetX;
+o2.shadowOffsetY=o1.shadowOffsetY;
+o2.strokeStyle=o1.strokeStyle;
+o2.globalAlpha=o1.globalAlpha;
+o2.arcScaleX_=o1.arcScaleX_;
+o2.arcScaleY_=o1.arcScaleY_;
+o2.lineScale_=o1.lineScale_;
+};
+function processStyle(_27){
+var str,_29=1;
+_27=String(_27);
+if(_27.substring(0,3)=="rgb"){
+var _2a=_27.indexOf("(",3);
+var end=_27.indexOf(")",_2a+1);
+var _2c=_27.substring(_2a+1,end).split(",");
+str="#";
+for(var i=0;i<3;i++){
+str+=_1b[Number(_2c[i])];
+}
+if(_2c.length==4&&_27.substr(3,1)=="a"){
+_29=_2c[3];
+}
+}else{
+str=_27;
+}
+return {color:str,alpha:_29};
+};
+function processLineCap(_2e){
+switch(_2e){
+case "butt":
+return "flat";
+case "round":
+return "round";
+case "square":
+default:
+return "square";
+}
+};
+function CanvasRenderingContext2D_(_2f){
+this.m_=createMatrixIdentity();
+this.mStack_=[];
+this.aStack_=[];
+this.currentPath_=[];
+this.strokeStyle="#000";
+this.fillStyle="#000";
+this.lineWidth=1;
+this.lineJoin="miter";
+this.lineCap="butt";
+this.miterLimit=Z*1;
+this.globalAlpha=1;
+this.canvas=_2f;
+var el=_2f.ownerDocument.createElement("div");
+el.style.width=_2f.clientWidth+"px";
+el.style.height=_2f.clientHeight+"px";
+el.style.overflow="hidden";
+el.style.position="absolute";
+_2f.appendChild(el);
+this.element_=el;
+this.arcScaleX_=1;
+this.arcScaleY_=1;
+this.lineScale_=1;
+};
+var _31=CanvasRenderingContext2D_.prototype;
+_31.clearRect=function(){
+this.element_.innerHTML="";
+};
+_31.beginPath=function(){
+this.currentPath_=[];
+};
+_31.moveTo=function(aX,aY){
+var p=this.getCoords_(aX,aY);
+this.currentPath_.push({type:"moveTo",x:p.x,y:p.y});
+this.currentX_=p.x;
+this.currentY_=p.y;
+};
+_31.lineTo=function(aX,aY){
+var p=this.getCoords_(aX,aY);
+this.currentPath_.push({type:"lineTo",x:p.x,y:p.y});
+this.currentX_=p.x;
+this.currentY_=p.y;
+};
+_31.bezierCurveTo=function(_38,_39,_3a,_3b,aX,aY){
+var p=this.getCoords_(aX,aY);
+var cp1=this.getCoords_(_38,_39);
+var cp2=this.getCoords_(_3a,_3b);
+bezierCurveTo(this,cp1,cp2,p);
+};
+function bezierCurveTo(_41,cp1,cp2,p){
+_41.currentPath_.push({type:"bezierCurveTo",cp1x:cp1.x,cp1y:cp1.y,cp2x:cp2.x,cp2y:cp2.y,x:p.x,y:p.y});
+_41.currentX_=p.x;
+_41.currentY_=p.y;
+};
+_31.quadraticCurveTo=function(_45,_46,aX,aY){
+var cp=this.getCoords_(_45,_46);
+var p=this.getCoords_(aX,aY);
+var cp1={x:this.currentX_+2/3*(cp.x-this.currentX_),y:this.currentY_+2/3*(cp.y-this.currentY_)};
+var cp2={x:cp1.x+(p.x-this.currentX_)/3,y:cp1.y+(p.y-this.currentY_)/3};
+bezierCurveTo(this,cp1,cp2,p);
+};
+_31.arc=function(aX,aY,_4f,_50,_51,_52){
+_4f*=Z;
+var _53=_52?"at":"wa";
+var _54=aX+mc(_50)*_4f-Z2;
+var _55=aY+ms(_50)*_4f-Z2;
+var _56=aX+mc(_51)*_4f-Z2;
+var _57=aY+ms(_51)*_4f-Z2;
+if(_54==_56&&!_52){
+_54+=0.125;
+}
+var p=this.getCoords_(aX,aY);
+var _59=this.getCoords_(_54,_55);
+var _5a=this.getCoords_(_56,_57);
+this.currentPath_.push({type:_53,x:p.x,y:p.y,radius:_4f,xStart:_59.x,yStart:_59.y,xEnd:_5a.x,yEnd:_5a.y});
+};
+_31.rect=function(aX,aY,_5d,_5e){
+this.moveTo(aX,aY);
+this.lineTo(aX+_5d,aY);
+this.lineTo(aX+_5d,aY+_5e);
+this.lineTo(aX,aY+_5e);
+this.closePath();
+};
+_31.strokeRect=function(aX,aY,_61,_62){
+var _63=this.currentPath_;
+this.beginPath();
+this.moveTo(aX,aY);
+this.lineTo(aX+_61,aY);
+this.lineTo(aX+_61,aY+_62);
+this.lineTo(aX,aY+_62);
+this.closePath();
+this.stroke();
+this.currentPath_=_63;
+};
+_31.fillRect=function(aX,aY,_66,_67){
+var _68=this.currentPath_;
+this.beginPath();
+this.moveTo(aX,aY);
+this.lineTo(aX+_66,aY);
+this.lineTo(aX+_66,aY+_67);
+this.lineTo(aX,aY+_67);
+this.closePath();
+this.fill();
+this.currentPath_=_68;
+};
+_31.createLinearGradient=function(aX0,aY0,aX1,aY1){
+var _6d=new CanvasGradient_("gradient");
+_6d.x0_=aX0;
+_6d.y0_=aY0;
+_6d.x1_=aX1;
+_6d.y1_=aY1;
+return _6d;
+};
+_31.createRadialGradient=function(aX0,aY0,aR0,aX1,aY1,aR1){
+var _74=new CanvasGradient_("gradientradial");
+_74.x0_=aX0;
+_74.y0_=aY0;
+_74.r0_=aR0;
+_74.x1_=aX1;
+_74.y1_=aY1;
+_74.r1_=aR1;
+return _74;
+};
+_31.drawImage=function(_75,_76){
+var dx,dy,dw,dh,sx,sy,sw,sh;
+var _7f=_75.runtimeStyle.width;
+var _80=_75.runtimeStyle.height;
+_75.runtimeStyle.width="auto";
+_75.runtimeStyle.height="auto";
+var w=_75.width;
+var h=_75.height;
+_75.runtimeStyle.width=_7f;
+_75.runtimeStyle.height=_80;
+if(arguments.length==3){
+dx=arguments[1];
+dy=arguments[2];
+sx=sy=0;
+sw=dw=w;
+sh=dh=h;
+}else{
+if(arguments.length==5){
+dx=arguments[1];
+dy=arguments[2];
+dw=arguments[3];
+dh=arguments[4];
+sx=sy=0;
+sw=w;
+sh=h;
+}else{
+if(arguments.length==9){
+sx=arguments[1];
+sy=arguments[2];
+sw=arguments[3];
+sh=arguments[4];
+dx=arguments[5];
+dy=arguments[6];
+dw=arguments[7];
+dh=arguments[8];
+}else{
+throw Error("Invalid number of arguments");
+}
+}
+}
+var d=this.getCoords_(dx,dy);
+var w2=sw/2;
+var h2=sh/2;
+var _86=[];
+var W=10;
+var H=10;
+_86.push(" <g_vml_:group"," coordsize=\"",Z*W,",",Z*H,"\""," coordorigin=\"0,0\""," style=\"width:",W,"px;height:",H,"px;position:absolute;");
+if(this.m_[0][0]!=1||this.m_[0][1]){
+var _89=[];
+_89.push("M11=",this.m_[0][0],",","M12=",this.m_[1][0],",","M21=",this.m_[0][1],",","M22=",this.m_[1][1],",","Dx=",mr(d.x/Z),",","Dy=",mr(d.y/Z),"");
+var max=d;
+var c2=this.getCoords_(dx+dw,dy);
+var c3=this.getCoords_(dx,dy+dh);
+var c4=this.getCoords_(dx+dw,dy+dh);
+max.x=m.max(max.x,c2.x,c3.x,c4.x);
+max.y=m.max(max.y,c2.y,c3.y,c4.y);
+_86.push("padding:0 ",mr(max.x/Z),"px ",mr(max.y/Z),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",_89.join(""),", sizingmethod='clip');");
+}else{
+_86.push("top:",mr(d.y/Z),"px;left:",mr(d.x/Z),"px;");
+}
+_86.push(" \">","<g_vml_:image src=\"",_75.src,"\""," style=\"width:",Z*dw,"px;"," height:",Z*dh,"px;\""," cropleft=\"",sx/w,"\""," croptop=\"",sy/h,"\""," cropright=\"",(w-sx-sw)/w,"\""," cropbottom=\"",(h-sy-sh)/h,"\""," />","</g_vml_:group>");
+this.element_.insertAdjacentHTML("BeforeEnd",_86.join(""));
+};
+_31.stroke=function(_8e){
+var _8f=[];
+var _90=false;
+var a=processStyle(_8e?this.fillStyle:this.strokeStyle);
+var _92=a.color;
+var _93=a.alpha*this.globalAlpha;
+var W=10;
+var H=10;
+_8f.push("<g_vml_:shape"," filled=\"",!!_8e,"\""," style=\"position:absolute;width:",W,"px;height:",H,"px;\""," coordorigin=\"0 0\" coordsize=\"",Z*W," ",Z*H,"\""," stroked=\"",!_8e,"\""," path=\"");
+var _96=false;
+var min={x:null,y:null};
+var max={x:null,y:null};
+for(var i=0;i<this.currentPath_.length;i++){
+var p=this.currentPath_[i];
+var c;
+switch(p.type){
+case "moveTo":
+c=p;
+_8f.push(" m ",mr(p.x),",",mr(p.y));
+break;
+case "lineTo":
+_8f.push(" l ",mr(p.x),",",mr(p.y));
+break;
+case "close":
+_8f.push(" x ");
+p=null;
+break;
+case "bezierCurveTo":
+_8f.push(" c ",mr(p.cp1x),",",mr(p.cp1y),",",mr(p.cp2x),",",mr(p.cp2y),",",mr(p.x),",",mr(p.y));
+break;
+case "at":
+case "wa":
+_8f.push(" ",p.type," ",mr(p.x-this.arcScaleX_*p.radius),",",mr(p.y-this.arcScaleY_*p.radius)," ",mr(p.x+this.arcScaleX_*p.radius),",",mr(p.y+this.arcScaleY_*p.radius)," ",mr(p.xStart),",",mr(p.yStart)," ",mr(p.xEnd),",",mr(p.yEnd));
+break;
+}
+if(p){
+if(min.x==null||p.x<min.x){
+min.x=p.x;
+}
+if(max.x==null||p.x>max.x){
+max.x=p.x;
+}
+if(min.y==null||p.y<min.y){
+min.y=p.y;
+}
+if(max.y==null||p.y>max.y){
+max.y=p.y;
+}
+}
+}
+_8f.push(" \">");
+if(!_8e){
+var _9c=this.lineScale_*this.lineWidth;
+if(_9c<1){
+_93*=_9c;
+}
+_8f.push("<g_vml_:stroke"," opacity=\"",_93,"\""," joinstyle=\"",this.lineJoin,"\""," miterlimit=\"",this.miterLimit,"\""," endcap=\"",processLineCap(this.lineCap),"\""," weight=\"",_9c,"px\""," color=\"",_92,"\" />");
+}else{
+if(typeof this.fillStyle=="object"){
+var _9d=this.fillStyle;
+var _9e=0;
+var _9f={x:0,y:0};
+var _a0=0;
+var _a1=1;
+if(_9d.type_=="gradient"){
+var x0=_9d.x0_/this.arcScaleX_;
+var y0=_9d.y0_/this.arcScaleY_;
+var x1=_9d.x1_/this.arcScaleX_;
+var y1=_9d.y1_/this.arcScaleY_;
+var p0=this.getCoords_(x0,y0);
+var p1=this.getCoords_(x1,y1);
+var dx=p1.x-p0.x;
+var dy=p1.y-p0.y;
+_9e=Math.atan2(dx,dy)*180/Math.PI;
+if(_9e<0){
+_9e+=360;
+}
+if(_9e<0.000001){
+_9e=0;
+}
+}else{
+var p0=this.getCoords_(_9d.x0_,_9d.y0_);
+var _aa=max.x-min.x;
+var _ab=max.y-min.y;
+_9f={x:(p0.x-min.x)/_aa,y:(p0.y-min.y)/_ab};
+_aa/=this.arcScaleX_*Z;
+_ab/=this.arcScaleY_*Z;
+var _ac=m.max(_aa,_ab);
+_a0=2*_9d.r0_/_ac;
+_a1=2*_9d.r1_/_ac-_a0;
+}
+var _ad=_9d.colors_;
+_ad.sort(function(cs1,cs2){
+return cs1.offset-cs2.offset;
+});
+var _b0=_ad.length;
+var _b1=_ad[0].color;
+var _b2=_ad[_b0-1].color;
+var _b3=_ad[0].alpha*this.globalAlpha;
+var _b4=_ad[_b0-1].alpha*this.globalAlpha;
+var _b5=[];
+for(var i=0;i<_b0;i++){
+var _b6=_ad[i];
+_b5.push(_b6.offset*_a1+_a0+" "+_b6.color);
+}
+_8f.push("<g_vml_:fill type=\"",_9d.type_,"\""," method=\"none\" focus=\"100%\""," color=\"",_b1,"\""," color2=\"",_b2,"\""," colors=\"",_b5.join(","),"\""," opacity=\"",_b4,"\""," g_o_:opacity2=\"",_b3,"\""," angle=\"",_9e,"\""," focusposition=\"",_9f.x,",",_9f.y,"\" />");
+}else{
+_8f.push("<g_vml_:fill color=\"",_92,"\" opacity=\"",_93,"\" />");
+}
+}
+_8f.push("</g_vml_:shape>");
+this.element_.insertAdjacentHTML("beforeEnd",_8f.join(""));
+};
+_31.fill=function(){
+this.stroke(true);
+};
+_31.closePath=function(){
+this.currentPath_.push({type:"close"});
+};
+_31.getCoords_=function(aX,aY){
+var m=this.m_;
+return {x:Z*(aX*m[0][0]+aY*m[1][0]+m[2][0])-Z2,y:Z*(aX*m[0][1]+aY*m[1][1]+m[2][1])-Z2};
+};
+_31.save=function(){
+var o={};
+copyState(this,o);
+this.aStack_.push(o);
+this.mStack_.push(this.m_);
+this.m_=matrixMultiply(createMatrixIdentity(),this.m_);
+};
+_31.restore=function(){
+copyState(this.aStack_.pop(),this);
+this.m_=this.mStack_.pop();
+};
+function matrixIsFinite(m){
+for(var j=0;j<3;j++){
+for(var k=0;k<2;k++){
+if(!isFinite(m[j][k])||isNaN(m[j][k])){
+return false;
+}
+}
+}
+return true;
+};
+function setM(ctx,m,_c0){
+if(!matrixIsFinite(m)){
+return;
+}
+ctx.m_=m;
+if(_c0){
+var det=m[0][0]*m[1][1]-m[0][1]*m[1][0];
+ctx.lineScale_=_6(_5(det));
+}
+};
+_31.translate=function(aX,aY){
+var m1=[[1,0,0],[0,1,0],[aX,aY,1]];
+setM(this,matrixMultiply(m1,this.m_),false);
+};
+_31.rotate=function(_c5){
+var c=mc(_c5);
+var s=ms(_c5);
+var m1=[[c,s,0],[-s,c,0],[0,0,1]];
+setM(this,matrixMultiply(m1,this.m_),false);
+};
+_31.scale=function(aX,aY){
+this.arcScaleX_*=aX;
+this.arcScaleY_*=aY;
+var m1=[[aX,0,0],[0,aY,0],[0,0,1]];
+setM(this,matrixMultiply(m1,this.m_),true);
+};
+_31.transform=function(m11,m12,m21,m22,dx,dy){
+var m1=[[m11,m12,0],[m21,m22,0],[dx,dy,1]];
+setM(this,matrixMultiply(m1,this.m_),true);
+};
+_31.setTransform=function(m11,m12,m21,m22,dx,dy){
+var m=[[m11,m12,0],[m21,m22,0],[dx,dy,1]];
+setM(this,m,true);
+};
+_31.clip=function(){
+};
+_31.arcTo=function(){
+};
+_31.createPattern=function(){
+return new CanvasPattern_;
+};
+function CanvasGradient_(_da){
+this.type_=_da;
+this.x0_=0;
+this.y0_=0;
+this.r0_=0;
+this.x1_=0;
+this.y1_=0;
+this.r1_=0;
+this.colors_=[];
+};
+CanvasGradient_.prototype.addColorStop=function(_db,_dc){
+_dc=processStyle(_dc);
+this.colors_.push({offset:_db,color:_dc.color,alpha:_dc.alpha});
+};
+function CanvasPattern_(){
+};
+G_vmlCanvasManager=_e;
+CanvasRenderingContext2D=CanvasRenderingContext2D_;
+CanvasGradient=CanvasGradient_;
+CanvasPattern=CanvasPattern_;
+})();
+}