forked from makr0/seajax-utils
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathseajax-utils.js
5 lines (5 loc) · 3.58 KB
/
seajax-utils.js
1
2
3
4
5
No5={OpenSeajax:{}};No5.OpenSeajax.Shapes={};No5.OpenSeajax.Tilesource={};No5.OpenSeajax.toImageCoordinates=function(a,b,c){return new Seadragon.Point(b*a.source.width,c*a.source.height*a.source.aspectRatio)};No5.OpenSeajax.toWorldCoordinates=function(a,b,c){return new Seadragon.Point(b/a.source.width,c/a.source.height/a.source.aspectRatio)};No5.OpenSeajax.Shapes.Marker=function(a){this.img=document.createElement("img");this.img.src=a};No5.OpenSeajax.Shapes.Marker.prototype.attachTo=function(a,b,c){b=No5.OpenSeajax.toWorldCoordinates(a,b,c);a.drawer.addOverlay(this.img,b,Seadragon.OverlayPlacement.BOTTOM)};No5.OpenSeajax.Shapes.Marker.prototype.addEventListener=function(a,b){Seadragon.Utils.addEvent(this.img,a,Seadragon.Utils.stopEvent);this.img.addEventListener(a,b,!1)};No5.OpenSeajax.Shapes.Ellipse=function(a,b){this.width=a;this.height=b;this.div=document.createElement("div");var c=Raphael(this.div,a,b),d=viewer.viewport.getMaxZoom();this.ellipse=c.ellipse(a/(2*d),b/(2*d),a/(2*d),b/(2*d));this.ellipse.node.style.cursor="pointer"};
No5.OpenSeajax.Shapes.Ellipse.prototype.attachTo=function(a,b,c){b=No5.OpenSeajax.toWorldCoordinates(a,b,c);c=No5.OpenSeajax.toWorldCoordinates(a,this.width,this.height);a.drawer.addOverlay(this.div,new Seadragon.Rect(b.x,b.y,c.x,c.y));var d=this.ellipse;a.addEventListener("animation",function(){var b=a.viewport.getZoom(!0);d.scale(b,b,0,0)})};No5.OpenSeajax.Shapes.Ellipse.prototype.getElement=function(){return this.ellipse};
No5.OpenSeajax.Shapes.Ellipse.prototype.redraw=function(a){a=a.viewport.getZoom(!0);this.ellipse.scale(a,a,0,0)};No5.OpenSeajax.Shapes.Ellipse.prototype.addEventListener=function(a,b){Seadragon.Utils.addEvent(this.div,a,Seadragon.Utils.stopEvent);this.img.addEventListener(a,b,!1)};No5.OpenSeajax.Shapes.Polygon=function(a){for(var b=a[0].x,c=b,d=a[0].y,f=d,e=1,h=a.length;e<h;++e)a[e].x<b&&(b=a[e].x),a[e].x>c&&(c=a[e].x),a[e].y<d&&(d=a[e].y),a[e].y>f&&(f=a[e].y);this.origin=new Seadragon.Point(b,d);this.width=c-b;this.height=f-d;c=viewer.viewport.getMaxZoom();this.normWidth=2*this.width/c;this.normHeight=2*this.height/c;this.div=document.createElement("div");this.paper=Raphael(this.div);for(var f=2*(a[0].x-b)/c+" "+2*(a[0].y-d)/c,g="M"+f,e=1,h=a.length;e<h;++e)g+="L"+2*(a[e].x-
b)/c+" "+2*(a[e].y-d)/c;this.path=this.paper.path(g+("L"+f));this.paper.setSize(this.normWidth,this.normHeight)};No5.OpenSeajax.Shapes.Polygon.prototype.attachTo=function(a){var b=No5.OpenSeajax.toWorldCoordinates(a,this.origin.x,this.origin.y);a.drawer.addOverlay(this.div,new Seadragon.Rect(b.x,b.y,0,0));var c=this.paper,d=this.path,f=this.normWidth,e=this.normHeight;a.addEventListener("animation",function(){var b=a.viewport.getZoom(!0);c.setSize(f*b,e*b);d.scale(b,b,0,0)})};
No5.OpenSeajax.Shapes.Polygon.prototype.getElement=function(){return this.path};No5.OpenSeajax.Shapes.Polygon.prototype.redraw=function(a){a=a.viewport.getZoom(!0);this.paper.setSize(this.normWidth*a,this.normHeight*a);this.path.scale(a,a,0,0)};No5.OpenSeajax.Shapes.Polygon.prototype.addEventListener=function(a,b){Seadragon.Utils.addEvent(this.div,a,Seadragon.Utils.stopEvent);this.div.addEventListener(a,b,!1)};No5.Seajax.Tilesource.OSM=function(){var a=new Seadragon.TileSource(65572864,65572864,256,0);a.getTileUrl=function(a,c,d){return"http://tile.openstreetmap.org/"+(a-8)+"/"+c+"/"+d+".png"};return a};No5.Seajax.Tilesource.TMS=function(a,b,c){b=256*Math.ceil(b/256);c=256*Math.ceil(c/256);var d=Math.ceil(Math.log(b>c?b/256:c/256)/Math.log(2)),f=c/256;c=new Seadragon.TileSource(b,c,256,0);c.getTileUrl=function(b,c,g){b-=8;var j=Math.ceil(f/Math.pow(2,d-b))-1;return a+b+"/"+c+"/"+(j-g)+".jpg"};return c};