blob: f707fed1fde7f5ed9177e3445f952dbbebc0eb3f [file] [log] [blame]
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if(!dojo._hasResource["dojox.gfx.arc"]){
dojo._hasResource["dojox.gfx.arc"]=true;
dojo.provide("dojox.gfx.arc");
dojo.require("dojox.gfx.matrix");
(function(){
var m=dojox.gfx.matrix,_2=function(_3){
var _4=Math.cos(_3),_5=Math.sin(_3),p2={x:_4+(4/3)*(1-_4),y:_5-(4/3)*_4*(1-_4)/_5};
return {s:{x:_4,y:-_5},c1:{x:p2.x,y:-p2.y},c2:p2,e:{x:_4,y:_5}};
},_7=2*Math.PI,_8=Math.PI/4,_9=Math.PI/8,_a=_8+_9,_b=_2(_9);
dojo.mixin(dojox.gfx.arc,{unitArcAsBezier:_2,curvePI4:_b,arcAsBezier:function(_c,rx,ry,_f,_10,_11,x,y){
_10=Boolean(_10);
_11=Boolean(_11);
var _14=m._degToRad(_f),rx2=rx*rx,ry2=ry*ry,pa=m.multiplyPoint(m.rotate(-_14),{x:(_c.x-x)/2,y:(_c.y-y)/2}),_18=pa.x*pa.x,_19=pa.y*pa.y,c1=Math.sqrt((rx2*ry2-rx2*_19-ry2*_18)/(rx2*_19+ry2*_18));
if(isNaN(c1)){
c1=0;
}
var ca={x:c1*rx*pa.y/ry,y:-c1*ry*pa.x/rx};
if(_10==_11){
ca={x:-ca.x,y:-ca.y};
}
var c=m.multiplyPoint([m.translate((_c.x+x)/2,(_c.y+y)/2),m.rotate(_14)],ca);
var _1d=m.normalize([m.translate(c.x,c.y),m.rotate(_14),m.scale(rx,ry)]);
var _1e=m.invert(_1d),sp=m.multiplyPoint(_1e,_c),ep=m.multiplyPoint(_1e,x,y),_21=Math.atan2(sp.y,sp.x),_22=Math.atan2(ep.y,ep.x),_23=_21-_22;
if(_11){
_23=-_23;
}
if(_23<0){
_23+=_7;
}else{
if(_23>_7){
_23-=_7;
}
}
var _24=_9,_25=_b,_26=_11?_24:-_24,_27=[];
for(var _28=_23;_28>0;_28-=_8){
if(_28<_a){
_24=_28/2;
_25=_2(_24);
_26=_11?_24:-_24;
_28=0;
}
var c1,c2,e,M=m.normalize([_1d,m.rotate(_21+_26)]);
if(_11){
c1=m.multiplyPoint(M,_25.c1);
c2=m.multiplyPoint(M,_25.c2);
e=m.multiplyPoint(M,_25.e);
}else{
c1=m.multiplyPoint(M,_25.c2);
c2=m.multiplyPoint(M,_25.c1);
e=m.multiplyPoint(M,_25.s);
}
_27.push([c1.x,c1.y,c2.x,c2.y,e.x,e.y]);
_21+=2*_26;
}
return _27;
}});
})();
}