diff --git a/help/publicapi.html b/help/publicapi.html index b73d4502..7d3bc3bf 100644 --- a/help/publicapi.html +++ b/help/publicapi.html @@ -3492,24 +3492,24 @@
- opts.ongroupcreate = function(im, xregs, evt){ + opts.ongroupcreate = function(im, xreg, evt){ var i, nshape, xcen, ycen; var xtot=0, ytot=0; - nshape = xregs.length; + nshape = xreg.length; for(i=0; i<nshape; i++){ - xtot += xregs[i].x; ytot += xregs[i].y; + xtot += xreg[i].x; ytot += xreg[i].y; } xcen = xtot / nshape; ycen = ytot / nshape; console.log("average pos for %s objects: %s,%s", nshape, xcen, ycen); @@ -3536,6 +3536,7 @@Create a new shape layer
generated tooltip will display current image id in bold, followed by that object's x,y pixel position, followed by a user tag property passed in the data object when the shape was added. +As a convenience, $data can be used as a shorthand for $xreg.data.Show or hide the specified shape layer
diff --git a/js9-allinone.js b/js9-allinone.js index bda43863..d61827cf 100644 --- a/js9-allinone.js +++ b/js9-allinone.js @@ -4310,113 +4310,113 @@ corsURL:"params/loadcors.html",proxyURL:"params/loadproxy.html",loadProxy:!1,ims imexamLineHeight:1,copyWcsPosFormat:"$ra $dec $sys",floatPrecision:6,mouseActions:["display value/position","change contrast/bias","pan the image"],touchActions:["display value/position","change contrast/bias","pan the image"],keyboardActions:{b:"toggle selected region: source/background",c:"toggle crosshair",d:"send selected region to back",e:"toggle selected region: include/exclude","M-e":"edit selected region",i:"refresh image",I:"display full image","M-i":"display selected cutouts","M-k":"toggle keyboard actions plugin", l:"toggle active shape layers","M-l":"new JS9 light window",m:"pan to mouse position","M-m":"toggle mouse/touch plugin","M-o":"open local file",P:"paste regions from local clipboard",p:"paste regions to current position",u:"undo remove of region(s)","M-,":"toggle preferences plugin","M-p":"toggle preferences plugin",r:"copy selected region to clipboard",R:"copy all regions to clipboard",s:"select region",S:"select all regions","M-s":"toggle shape layers plugin",x:"flip image around x axis",y:"flip image around y axis", 9:"rotate image by 90 degrees","/":"copy wcs position to clipboard","?":"copy value and position to clipboard",0:"reset zoom","=":"zoom in","+":"zoom in","-":"zoom out","^":"raise region layer to top",">":"display next image","<":"display previous image","delete":"remove selected region",leftArrow:"move region/position left",upArrow:"move region/position up",rightArrow:"move region/position right",downArrow:"move region/position down"},mousetouchZoom:!1,metaClickPan:!0,toolbarTooltips:!1,centerDivs:["JS9Menubar"], -resizeDivs:["JS9Menubar","JS9Colorbar","JS9Toolbar"],pinchWait:8,pinchThresh:6,xeqPlugins:!0,extendedPlugins:!0,intensivePlugins:!1,dynamicSelect:"click",dynamicHighlight:!0,corsProxy:"https://js9.si.edu/cgi-bin/CORS-proxy.cgi",simbadProxy:"https://js9.si.edu/cgi-bin/simbad-proxy.cgi",catalogs:{ras:["RA","_RAJ2000","RAJ2000"],decs:["Dec","_DEJ2000","DEJ2000"],shape:"circle",color:"yellow",width:7,height:7,radius:3.5,r1:5,r2:3.5,wcssys:"ICRS",skip:"#\n",save:!0,tooltip:"$xreg.data.ra $xreg.data.dec"}, -topColormaps:"grey heat cool viridis magma sls red green blue".split(" "),infoBox:"file object wcsfov wcscen wcspos impos physpos value regions progress".split(" "),infoBoxResize:!0,menuBar:"file edit view zoom scale color region wcs analysis help".split(" "),menubarStyle:"classic",userMenus:!1,userMenuDivider:" ",imagesFileSubmenu:5,toolBar:"annulus box circle ellipse line polygon text linear log zoom+ zoom- zoom1".split(" "),syncOps:"colormap contrastbias pan regions scale wcs zoom".split(" "), -syncReciprocate:!0,hiddenPluginDivs:[],separate:{layout:"auto",leftMargin:10,topMargin:10},imageTemplates:".fits,.fts,.png,.jpg,.jpeg,.fz,.ftz",wcsUnits:{FK4:"sexagesimal",FK5:"sexagesimal",ICRS:"sexagesimal",galactic:"degrees",ecliptic:"degrees",linear:"degrees",physical:"pixels",image:"pixels"},regionTemplates:".reg",sessionTemplates:".ses,.js9ses",colormapTemplates:".cmap",catalogTemplates:".cat,.tab",localTemplates:".fits,.fts",controlsMatchRegion:!1,internalColorPicker:!0,newWindowWidth:530, -newWindowHeight:625,debug:0};a.desktopOpts={currentPath:!0,sessionPath:!0};a.imageOpts={inherit:!1,contrast:1,bias:.5,invert:!1,exp:1E3,colormap:"grey",scale:"linear",scaleclipping:"dataminmax",scalemin:Number.NaN,scalemax:Number.NaN,flip:"none",rot90:0,zscalecontrast:.25,zscalesamples:600,zscaleline:120,wcssys:"native",lcs:"physical",valpos:!0,opacity:1,sigma:"none",maskOpacity:.4,alpha:255,alpha1:100,zoom:1,zooms:6,topZooms:2,nancolor:"#000000",wcsalign:!0,rotationMode:"relative",crosshair:!1,disable:[], -ltvbug:!1,listonchange:!1,whichonchange:"selected"};a.regionOpts={};a.catalogOpts={};a.crosshairOpts={};a.gridOpts={};a.emscriptenOpts={};a.blendOpts={active:!0,mode:"screen",opacity:1};a.analOpts={epattern:/^(ERROR:[^\n]*)\n/,dpathURL:"params/datapath.html",fpathURL:"params/filepath.html"};a.lightOpts={nclick:0,dhtml:{top:".dhtmlwindow",drag:".drag-contentarea",dragBar:"drag-handle",format:"width=%spx,height=%spx,center=1,resize=%s,scrolling=0",textWin:"width=830px,height=400px,center=1,resize=1,scrolling=1", -plotWin:"width=830px,height=420px,center=1,resize=1,scrolling=1",dpathWin:"width=830px,height=175px,center=1,resize=1,scrolling=1",lcloseWin:"width=512px,height=190px,center=1,resize=1,scrolling=1",paramWin:"width=830px,height=235px,center=1,resize=1,scrolling=1",regWin0:"width=600px,height=72px,center=1,resize=1,scrolling=1",regWin:"width=600px,height=235px,center=1,resize=1,scrolling=1",imageWin:"width=512px,height=598px,center=1,resize=1,scrolling=1",lineWin:"width=400px,height=60px,center=1,resize=1,scrolling=1"}, -lcloseURL:"params/lightclose.html"};a.textColorOpts={regions:"#00FF00",info:"#00FF00",inimage:"#000000"};a.plotOpts={annotate:!1,annotateColor:"#FF0000",color:"blue",zoomStack:{enabled:!0},selection:{mode:"xy"},series:{clickable:!0,hoverable:!0,lines:{show:!0},points:{show:!1}},legend:{backgroundColor:null,backgroundOpacity:0},xaxis:{autorange:!0},yaxis:{autorange:!0}};a.helpOpts={user:{heading:"JS9Help",type:"help",url:"user.html",title:"User Manual"},install:{heading:"JS9Help",type:"help",url:"install.html", -title:"Installing JS9"},webpage:{heading:"JS9Help",type:"help",url:"webpage.html",title:"Adding JS9 to a Web Page"},yourdata:{heading:"JS9Help",type:"help",url:"yourdata.html",title:"Adding Data to a Web Page"},localtasks:{heading:"JS9Help",type:"help",url:"localtasks.html",title:"Adding Local Analysis Tasks and Plugins"},helper:{heading:"JS9Help",type:"help",url:"helper.html",title:"Adding Server-side Analysis Tasks"},serverside:{heading:"JS9Help",type:"help",url:"serverside.html",title:"Server-side Analysis with JS9"}, -publicapi:{heading:"JS9Help",type:"help",url:"publicapi.html",title:"The JS9 Public API"},extmsg:{heading:"JS9Help",type:"help",url:"extmsg.html",title:"External Messaging"},desktop:{heading:"JS9Help",type:"help",url:"desktop.html",title:"JS9 on the Desktop"},python:{heading:"JS9Help",type:"help",url:"python.html",title:"JS9 with Python and Jupyter"},archives:{heading:"JS9Help",type:"help",url:"archives.html",title:"Accessing Data Archives"},preferences:{heading:"JS9Help",type:"help",url:"preferences.html", -title:"Setting Site Preferences"},regions:{heading:"JS9Help",type:"help",url:"regions.html",title:"Regions Format"},changelog:{heading:"JS9Help",type:"help",url:"changelog.html",title:"ChangeLog"},repfile:{heading:"JS9Help",type:"help",url:"repfile.html",title:"Dealing with Large Files"},memory:{heading:"JS9Help",type:"help",url:"memory.html",title:"Dealing with Memory Limitations"},issues:{heading:"JS9Help",type:"help",url:"knownissues.html",title:"Known Issues"}};a.images=[];a.displays=[];a.colormaps= -[];a.commands=[];a.plugins=[];a.preloads=[];a.auxFiles=[];a.supermenus=[];a.publics={};a.helper={};a.fits={};a.userOpts={};a.preloadwaiting={};a.scales="linear log histeq power sqrt squared asinh sinh".split(" ");a.wcssyss="FK4 FK5 ICRS galactic ecliptic native image physical".split(" ");a.wcsunitss=["degrees","sexagesimal","pixels"];a.bugs={};a.bugs.hide_menu=!1;"Firefox"===a.BROWSER[0]&&0<=a.BROWSER[2].search(/Linux/)&&(a.bugs.firefox_linux=!0);if("Chrome"===a.BROWSER[0]||"Safari"===a.BROWSER[0])a.bugs.webkit_resize= -!0;"Chrome"!==a.BROWSER[0]&&(a.globalOpts.imageTemplates+=",.gz");/iPad|iPhone|iPod/.test(navigator.platform)&&/11_2_(?:[2-9])/.test(navigator.userAgent)&&(a.globalOpts.useWasm=!1);a.BROWSER[3]&&(a.globalOpts.maxMemory=Math.min(a.globalOpts.maxMemory,35E7),a.globalOpts.table.xdim=2048,a.globalOpts.table.ydim=2048,a.globalOpts.image.xdim=2048,a.globalOpts.image.ydim=2048,a.imageOpts.crosshair=!1,a.globalOpts.reproj={xdim:2048,ydim:2048});window.hasOwnProperty("Jupyter")&&(a.globalOpts.useWasm=!1); -if(window.isElectron){"Chrome"===a.BROWSER[0]&&66<=parseFloat(a.BROWSER[1])&&(a.globalOpts.allowFileWasm=!0);if(!window.electronVersion||5>parseInt(window.electronVersion,10))a.globalOpts.internalColorPicker=!1;a.hasNode="object"===typeof process&&"function"===typeof require;a.hasNode&&(a.localMount=require("os").hostname()||"localAccess");window.multiElectron&&(a.globalOpts.localStorage=!1)}a.Image=function(c,b,d){var e=this,g=null,f=0,h=0,k=function(b){b=b||{};a.isNull(b.scaleclipping)?"zscale"=== -e.params.scaleclipping?e.zscale(!0):"zmax"===e.params.scaleclipping&&e.zscale("zmax"):"zscale"===b.scaleclipping?e.zscale(!0):"zmax"===b.scaleclipping&&e.zscale("zmax");a.notNull(b.scalemin)&&(e.params.scalemin=b.scalemin);a.notNull(b.scalemax)&&(e.params.scalemax=b.scalemax)},l=function(b){var c,d=a.globalOpts.imopts,f=a.globalOpts.imcmap,h=a.globalOpts.alerts;e.display.clearMessage();a.images.push(e);e.notifyHelper();e.showShapeLayer("regions",!0,{local:!0});g&&g.regions&&e.addShapes("regions", -g.regions);a.globalOpts.alerts=!1;if(e.raw&&e.raw.header&&e.raw.header[f]){try{var k=JSON.parse(e.raw.header[f])}catch(x){k=null}if(k)try{a.AddColormap(k)}catch(x){}}if(e.raw&&e.raw.header&&e.raw.header[f+"1"]){var l=1;for(c="";100>l;l++){var m=f+String(l);if(e.raw.header[m])c+=e.raw.header[m];else break}if(c){try{k=JSON.parse(c)}catch(x){k=null}if(k)try{a.AddColormap(k)}catch(x){}}}if(e.raw&&e.raw.header&&e.raw.header[d]){try{k=JSON.parse(e.raw.header[d])}catch(x){k=null}if(k)try{e.setParam("all", -k)}catch(x){}}if(e.raw&&e.raw.header&&e.raw.header[d+"1"]){l=1;for(c="";100>l;l++)if(m=d+String(l),e.raw.header[m])c+=e.raw.header[m];else break;if(c){try{k=JSON.parse(c)}catch(x){k=null}if(k)try{e.setParam("all",k)}catch(x){}}}a.globalOpts.alerts=h;e.xeqPlugins("image","onimageload");e.updateshapes&&e.updateShapes("regions","all","update");e.setStatus("load","complete");a.waiting(!1);if(b)try{a.xeqByName(b,window,e)}catch(x){a.error("in image onload callback",x,!1)}c=e.proxyURL||e.file;b=c.replace(/\[.*\]/, -"");if(a.preloadwaiting[c]||a.preloadwaiting[b])if(delete a.preloadwaiting[c],delete a.preloadwaiting[b],!Object.keys(a.preloadwaiting).length&&a.notNull(a.globalOpts.onpreload))try{a.xeqByName(a.globalOpts.onpreload,window,e)}catch(x){a.error("in onpreload callback",x,!1)}g&&g.allext&&e.hdus&&0
=g.length&&a.cleanupFITSFile(f,!0));f.altwcs&&this.freeWCS(f)}e.removeProxyFile();e.rgb=null;e.offscreen=null;e.raw=null;e.colorData=null;e.colorCells=null;e.psColors=null;e.psInverse= -null;a.images.splice(b,1);break}if(d){for(b=d-=2;0<=b;b--)if(e=a.images[b],this.display===e.display){e.displayImage("all");e.refreshLayers();d=a.images.length;break}for(b=a.images.length-1;b>d;b--)if(e=a.images[b],this.display===e.display){e.displayImage("all");e.refreshLayers();break}}};a.Image.prototype.mkOffScreenCanvas=function(){if(!this.png||!this.png.image)return this;this.offscreen={};this.offscreen.canvas=document.createElement("canvas");this.offscreen.canvas.setAttribute("width",this.png.image.width); -this.offscreen.canvas.setAttribute("height",this.png.image.height);this.offscreen.context=this.offscreen.canvas.getContext("2d");a.ANTIALIAS||(this.offscreen.context.imageSmoothingEnabled=!1,this.offscreen.context.webkitImageSmoothingEnabled=!1,this.offscreen.context.msImageSmoothingEnabled=!1);this.offscreen.context.drawImage(this.png.image,0,0);try{this.offscreen.img=this.offscreen.context.getImageData(0,0,this.png.image.width,this.png.image.height)}catch(c){a.CHROMEFILEWARNING&&"Chrome"===a.BROWSER[0]&& -""===document.domain?alert("When using the file:// URI, Chrome must be run with the --allow-file-access-from-files switch to permit JS9 to access data."):alert("could not read off-screen image data [same-origin policy violation?]")}return this};a.Image.prototype.initLCS=function(c){var b=[[0,0,0],[0,0,0],[0,0,0]];c=c||this.raw.header;var d=c.CRPIX1||1,e=c.CRPIX2||1;if(c.LCSROTA2&&c.CROTA2){var g=-c.CROTA2*Math.PI/180;var f=Math.sin(g);var h=Math.cos(g);g=[[0,0,0],[0,0,0],[0,0,0]];g[0][0]=h;g[0][1]= --f;g[0][2]=0;g[1][0]=f;g[1][1]=h;g[1][2]=0;(f=a.invertMatrix3(g))||(g=null)}b[0][0]=a.defNull(c.LTM1_1,1);b[1][0]=c.LTM2_1||0;b[0][1]=c.LTM1_2||0;b[1][1]=a.defNull(c.LTM2_2,1);b[2][0]=c.LTV1||0;b[2][1]=c.LTV2||0;if("image"===this.imtab&&this.params.ltvbug){if(a.notNull(c.LTV1))for(h=0;2>h;h++){var k=Math.abs(b[0][h]);0 k&&(b[2][0]+=.5*k)}if(a.notNull(c.LTV2))for(h=0;2>h;h++)k=Math.abs(b[1][h]),0 k&&(b[2][1]+=.5*k)}this.lcs.physical={forward:$.extend(!0,[],b),reverse:a.invertMatrix3(b)}; -this.lcs.physical.reverse?g&&(this.lcs.physical.frot=$.extend(!0,[],g),this.lcs.physical.rrot=$.extend(!0,[],f),this.lcs.physical.cx=d-b[2][0]-1,this.lcs.physical.cy=e-b[2][1]-1):delete this.lcs.physical;b[0][0]=a.defNull(c.DTM1_1,1);b[1][0]=c.DTM2_1||0;b[0][1]=c.DTM1_2||0;b[1][1]=a.defNull(c.DTM2_2,1);b[2][0]=c.DTV1||0;b[2][1]=c.DTV2||0;this.lcs.detector={forward:$.extend(!0,[],b),reverse:a.invertMatrix3(b)};this.lcs.detector.reverse?g&&(this.lcs.detector.frot=$.extend(!0,[],g),this.lcs.detector.rrot= -$.extend(!0,[],f),this.lcs.detector.cx=d-b[2][0]-1,this.lcs.detector.cy=e-b[2][1]-1):delete this.lcs.detector;b[0][0]=a.defNull(c.ATM1_1,1);b[1][0]=c.ATM2_1||0;b[0][1]=c.ATM1_2||0;b[1][1]=a.defNull(c.ATM2_2,1);b[2][0]=c.ATV1||0;b[2][1]=c.ATV2||0;this.lcs.amplifier={forward:$.extend(!0,[],b),reverse:a.invertMatrix3(b)};this.lcs.amplifier.reverse?g&&(this.lcs.amplifier.frot=$.extend(!0,[],g),this.lcs.amplifier.rrot=$.extend(!0,[],f),this.lcs.amplifier.cx=d-b[2][0]-1,this.lcs.amplifier.cy=e-b[2][1]- -1):delete this.lcs.amplifier;this.params&&!this.lcs[this.params.lcs]&&(this.params.lcs="image");this.params&&!this.params.wcssys0&&(this.setWCSSys("physical"),this.params.wcssys0=this.params.lcs);this.lcs.physical&&!this.lcs.ophysical&&(this.lcs.ophysical=$.extend(!0,{},this.lcs.physical));return this};a.Image.prototype.mkRawDataFromIMG=function(c){var b,d;if(c){var e=c.height;var g=c.width;var f=c.data;this.raws.push({from:"img"});this.raw=this.raws[this.raws.length-1];this.raw.id=a.RAWID0;this.raw.data= -new Float32Array(e*g);for(d=c=0;d c||m)this.mkRawDataFromIMG(this.offscreen.img);else{c=g.join("");2 l.naxis&&a.error("can't image a FITS file with less than 2 dimensions");if(this.raw){var m=this.raw;var n=this.raw.width;var q=this.raw.height;var p=this.raw.bitpix;var t=a.defNull(this.raw.header.LTM1_1,1);var r=this.params.wcssys;var u=this.params.wcsunits;this.freeWCS()}this.raws=this.raws||[];if(f=this.raws.length){b.rawid=b.rawid||a.RAWIDX;for(e=g=0;e ]/);m=c=!1;e=0;for(b=!1;e =this.raw.header.NAXIS&&(!this.hdus||1===this.hdus.length)?c=!0:(c=!1,b=!0);break;case "nocube":2>=this.raw.header.NAXIS? -c=!0:(c=!1,b=!0);break;case "noext":this.hdus&&1!==this.hdus.length?(c=!1,b=!0):c=!0;break;case "size":v[e+1]?a.vsize(l.fits.vfile)>1E6*v[e+1]?c=!0:(c=!1,b=!0):(c=!1,b=!0)}c?(2 d.x0&&(a.globalOpts.panWithinDisplay?d.x1-=d.x0:d.ix=d.x0*d.zoom,d.x0=0);0>d.y0&&(a.globalOpts.panWithinDisplay?d.y1-=d.y0:d.iy=d.y0*d.zoom, -d.y0=0);d.x1>this.raw.width&&(a.globalOpts.panWithinDisplay?d.x0-=d.x1-this.raw.width:d.ix=(d.x1-this.raw.width)*d.zoom,d.x1=this.raw.width);d.y1>this.raw.height&&(a.globalOpts.panWithinDisplay?d.y0-=d.y1-this.raw.height:d.iy=(d.y1-this.raw.height)*d.zoom,d.y1=this.raw.height);0 d.ix&&d.x1 d.iy&&d.y1 =d.width||0>=d.height)b=sprintf("invalid image section: %s,%s [%s,%s, %s,%s, %s]",d.width,d.height,d.x0,d.y0,d.x1, -d.y1,d.zoom),a.error(b);this.offscreenRGB=null;this.params.zoom=d.zoom;return this};a.Image.prototype.mkColorData=function(){var c,b=a.SCALESIZE,d=this.params.scalemin,e=this.params.scalemax,g=this.raw.width*this.raw.height,f=(b-1)/(e-d);if(!this.colorData||this.colorData.length =e?b-1:Math.floor((h-d)*f+.5)}return this};a.Image.prototype.calcContrastBias=function(c){var b=this.params.bias,d=a.COLORSIZE, -e=this.params.contrast;if(1E-4>b-.5&&1E-4>e-1)return c;this.params.invert&&(b=1-b);c=Math.floor(((c/d-b)*e+.5)*d);return 0>c?0:c>=d?d-1:c};a.Image.prototype.mkColorCells=function(){var c,b=a.COLORSIZE;this.colorCells||(this.colorCells=[]);for(c=0;cb;b+=2,c++){var m="0123456789ABCDEF".indexOf(k.charAt(b));var n="0123456789ABCDEF".indexOf(k.charAt(b+1));l[c]=16*m+n}h[NaN]=l}this.psInverse||(this.psInverse=[],this.psInverse[NaN]=0);k=this.params.scalemax-this.params.scalemin;b=this.params.scalemin;switch(this.params.scale){case "linear":for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =b&&l[h]<=p&&(n=Math.floor((l[h]-b)/k*f+.5),n =n&&l d);n++);c=n/f;this.psInverse[h]=c*k+b}break;default:a.error("unknown scale '"+this.params.scale+"'")}return this};a.Image.prototype.mkRGBImage=function(){var c,b,d,e,g=null,f=null,h=null,k=!1;if(!this.rgb)return this;!a.globalOpts.rgb.active|| -this!==a.globalOpts.rgb.rim&&this!==a.globalOpts.rgb.gim&&this!==a.globalOpts.rgb.bim||(k=!0,a.globalOpts.rgb.rim&&(g=a.globalOpts.rgb.rim),a.globalOpts.rgb.gim&&(f=a.globalOpts.rgb.gim),a.globalOpts.rgb.bim&&(h=a.globalOpts.rgb.bim));var l=this.display.context;var m=this.rgb;var n=m.sect;if(this.MakeRGBImage&&"function"===typeof this.MakeRGBImage&&this.MakeRGBImage()||this.MakePrimaryImage&&"function"===typeof this.MakePrimaryImage&&this.MakePrimaryImage())return this;if(this.rgbFile){var q=n.width/ -n.zoom;var p=n.height/n.zoom;var t=n.x0;var r=this.offscreen.canvas.height-1-(n.y0+p);r=this.offscreen.context.getImageData(t,r,q,p);if(1===n.zoom)m.img=r;else for(m.img=l.createImageData(n.width,n.height),m=m.img,d=c=0;c =n.y0;c-=B,d++)for(u=c*this.raw.width,v=d*E,l=Math.floor(n.x0),b=0;l h&&(h=a.pts[q].x),a.pts[q].x m&&(m=a.pts[q].y),a.pts[q].y parseInt(window.electronVersion,10))a.globalOpts.internalColorPicker=!1;a.hasNode="object"===typeof process&&"function"===typeof require;a.hasNode&&(a.localMount=require("os").hostname()||"localAccess");window.multiElectron&&(a.globalOpts.localStorage=!1)}a.Image=function(c,b,d){var e=this,g=null,f=0,h=0,k=function(b){b=b||{};a.isNull(b.scaleclipping)?"zscale"===e.params.scaleclipping?e.zscale(!0): +"zmax"===e.params.scaleclipping&&e.zscale("zmax"):"zscale"===b.scaleclipping?e.zscale(!0):"zmax"===b.scaleclipping&&e.zscale("zmax");a.notNull(b.scalemin)&&(e.params.scalemin=b.scalemin);a.notNull(b.scalemax)&&(e.params.scalemax=b.scalemax)},l=function(b){var c,d=a.globalOpts.imopts,f=a.globalOpts.imcmap,h=a.globalOpts.alerts;e.display.clearMessage();a.images.push(e);e.notifyHelper();e.showShapeLayer("regions",!0,{local:!0});g&&g.regions&&e.addShapes("regions",g.regions);a.globalOpts.alerts=!1;if(e.raw&& +e.raw.header&&e.raw.header[f]){try{var k=JSON.parse(e.raw.header[f])}catch(x){k=null}if(k)try{a.AddColormap(k)}catch(x){}}if(e.raw&&e.raw.header&&e.raw.header[f+"1"]){var l=1;for(c="";100>l;l++){var m=f+String(l);if(e.raw.header[m])c+=e.raw.header[m];else break}if(c){try{k=JSON.parse(c)}catch(x){k=null}if(k)try{a.AddColormap(k)}catch(x){}}}if(e.raw&&e.raw.header&&e.raw.header[d]){try{k=JSON.parse(e.raw.header[d])}catch(x){k=null}if(k)try{e.setParam("all",k)}catch(x){}}if(e.raw&&e.raw.header&&e.raw.header[d+ +"1"]){l=1;for(c="";100>l;l++)if(m=d+String(l),e.raw.header[m])c+=e.raw.header[m];else break;if(c){try{k=JSON.parse(c)}catch(x){k=null}if(k)try{e.setParam("all",k)}catch(x){}}}a.globalOpts.alerts=h;e.xeqPlugins("image","onimageload");e.updateshapes&&e.updateShapes("regions","all","update");e.setStatus("load","complete");a.waiting(!1);if(b)try{a.xeqByName(b,window,e)}catch(x){a.error("in image onload callback",x,!1)}c=e.proxyURL||e.file;b=c.replace(/\[.*\]/,"");if(a.preloadwaiting[c]||a.preloadwaiting[b])if(delete a.preloadwaiting[c], +delete a.preloadwaiting[b],!Object.keys(a.preloadwaiting).length&&a.notNull(a.globalOpts.onpreload))try{a.xeqByName(a.globalOpts.onpreload,window,e)}catch(x){a.error("in onpreload callback",x,!1)}g&&g.allext&&e.hdus&&0 =g.length&&a.cleanupFITSFile(f,!0));f.altwcs&&this.freeWCS(f)}e.removeProxyFile();e.rgb=null;e.offscreen=null;e.raw=null;e.colorData=null;e.colorCells=null;e.psColors=null;e.psInverse=null;a.images.splice(b,1);break}if(d){for(b=d-=2;0<=b;b--)if(e= +a.images[b],this.display===e.display){e.displayImage("all");e.refreshLayers();d=a.images.length;break}for(b=a.images.length-1;b>d;b--)if(e=a.images[b],this.display===e.display){e.displayImage("all");e.refreshLayers();break}}};a.Image.prototype.mkOffScreenCanvas=function(){if(!this.png||!this.png.image)return this;this.offscreen={};this.offscreen.canvas=document.createElement("canvas");this.offscreen.canvas.setAttribute("width",this.png.image.width);this.offscreen.canvas.setAttribute("height",this.png.image.height); +this.offscreen.context=this.offscreen.canvas.getContext("2d");a.ANTIALIAS||(this.offscreen.context.imageSmoothingEnabled=!1,this.offscreen.context.webkitImageSmoothingEnabled=!1,this.offscreen.context.msImageSmoothingEnabled=!1);this.offscreen.context.drawImage(this.png.image,0,0);try{this.offscreen.img=this.offscreen.context.getImageData(0,0,this.png.image.width,this.png.image.height)}catch(c){a.CHROMEFILEWARNING&&"Chrome"===a.BROWSER[0]&&""===document.domain?alert("When using the file:// URI, Chrome must be run with the --allow-file-access-from-files switch to permit JS9 to access data."): +alert("could not read off-screen image data [same-origin policy violation?]")}return this};a.Image.prototype.initLCS=function(c){var b=[[0,0,0],[0,0,0],[0,0,0]];c=c||this.raw.header;var d=c.CRPIX1||1,e=c.CRPIX2||1;if(c.LCSROTA2&&c.CROTA2){var g=-c.CROTA2*Math.PI/180;var f=Math.sin(g);var h=Math.cos(g);g=[[0,0,0],[0,0,0],[0,0,0]];g[0][0]=h;g[0][1]=-f;g[0][2]=0;g[1][0]=f;g[1][1]=h;g[1][2]=0;(f=a.invertMatrix3(g))||(g=null)}b[0][0]=a.defNull(c.LTM1_1,1);b[1][0]=c.LTM2_1||0;b[0][1]=c.LTM1_2||0;b[1][1]= +a.defNull(c.LTM2_2,1);b[2][0]=c.LTV1||0;b[2][1]=c.LTV2||0;if("image"===this.imtab&&this.params.ltvbug){if(a.notNull(c.LTV1))for(h=0;2>h;h++){var k=Math.abs(b[0][h]);0 k&&(b[2][0]+=.5*k)}if(a.notNull(c.LTV2))for(h=0;2>h;h++)k=Math.abs(b[1][h]),0 k&&(b[2][1]+=.5*k)}this.lcs.physical={forward:$.extend(!0,[],b),reverse:a.invertMatrix3(b)};this.lcs.physical.reverse?g&&(this.lcs.physical.frot=$.extend(!0,[],g),this.lcs.physical.rrot=$.extend(!0,[],f),this.lcs.physical.cx=d-b[2][0]-1,this.lcs.physical.cy= +e-b[2][1]-1):delete this.lcs.physical;b[0][0]=a.defNull(c.DTM1_1,1);b[1][0]=c.DTM2_1||0;b[0][1]=c.DTM1_2||0;b[1][1]=a.defNull(c.DTM2_2,1);b[2][0]=c.DTV1||0;b[2][1]=c.DTV2||0;this.lcs.detector={forward:$.extend(!0,[],b),reverse:a.invertMatrix3(b)};this.lcs.detector.reverse?g&&(this.lcs.detector.frot=$.extend(!0,[],g),this.lcs.detector.rrot=$.extend(!0,[],f),this.lcs.detector.cx=d-b[2][0]-1,this.lcs.detector.cy=e-b[2][1]-1):delete this.lcs.detector;b[0][0]=a.defNull(c.ATM1_1,1);b[1][0]=c.ATM2_1||0; +b[0][1]=c.ATM1_2||0;b[1][1]=a.defNull(c.ATM2_2,1);b[2][0]=c.ATV1||0;b[2][1]=c.ATV2||0;this.lcs.amplifier={forward:$.extend(!0,[],b),reverse:a.invertMatrix3(b)};this.lcs.amplifier.reverse?g&&(this.lcs.amplifier.frot=$.extend(!0,[],g),this.lcs.amplifier.rrot=$.extend(!0,[],f),this.lcs.amplifier.cx=d-b[2][0]-1,this.lcs.amplifier.cy=e-b[2][1]-1):delete this.lcs.amplifier;this.params&&!this.lcs[this.params.lcs]&&(this.params.lcs="image");this.params&&!this.params.wcssys0&&(this.setWCSSys("physical"),this.params.wcssys0= +this.params.lcs);this.lcs.physical&&!this.lcs.ophysical&&(this.lcs.ophysical=$.extend(!0,{},this.lcs.physical));return this};a.Image.prototype.mkRawDataFromIMG=function(c){var b,d;if(c){var e=c.height;var g=c.width;var f=c.data;this.raws.push({from:"img"});this.raw=this.raws[this.raws.length-1];this.raw.id=a.RAWID0;this.raw.data=new Float32Array(e*g);for(d=c=0;d c||m)this.mkRawDataFromIMG(this.offscreen.img);else{c=g.join("");2 l.naxis&&a.error("can't image a FITS file with less than 2 dimensions"); +if(this.raw){var m=this.raw;var n=this.raw.width;var q=this.raw.height;var p=this.raw.bitpix;var t=a.defNull(this.raw.header.LTM1_1,1);var r=this.params.wcssys;var u=this.params.wcsunits;this.freeWCS()}this.raws=this.raws||[];if(f=this.raws.length){b.rawid=b.rawid||a.RAWIDX;for(e=g=0;e ]/);m=c=!1;e=0;for(b=!1;e< +v.length&&!b;e++)switch(v[e]){case "never":c=!1;b=!0;break;case "always":b=c=!0;break;case "heap":m=!0;break;case "auto":2>=this.raw.header.NAXIS&&(!this.hdus||1===this.hdus.length)?c=!0:(c=!1,b=!0);break;case "nocube":2>=this.raw.header.NAXIS?c=!0:(c=!1,b=!0);break;case "noext":this.hdus&&1!==this.hdus.length?(c=!1,b=!0):c=!0;break;case "size":v[e+1]?a.vsize(l.fits.vfile)>1E6*v[e+1]?c=!0:(c=!1,b=!0):(c=!1,b=!0)}c?(2 d.x0&&(a.globalOpts.panWithinDisplay?d.x1-=d.x0:d.ix=d.x0*d.zoom,d.x0=0);0>d.y0&&(a.globalOpts.panWithinDisplay?d.y1-=d.y0:d.iy=d.y0*d.zoom,d.y0=0);d.x1>this.raw.width&&(a.globalOpts.panWithinDisplay?d.x0-=d.x1-this.raw.width:d.ix=(d.x1-this.raw.width)*d.zoom,d.x1=this.raw.width);d.y1>this.raw.height&&(a.globalOpts.panWithinDisplay?d.y0-=d.y1-this.raw.height:d.iy=(d.y1-this.raw.height)*d.zoom,d.y1=this.raw.height); +0 d.ix&&d.x1 d.iy&&d.y1 =d.width||0>=d.height)b=sprintf("invalid image section: %s,%s [%s,%s, %s,%s, %s]",d.width,d.height,d.x0,d.y0,d.x1,d.y1,d.zoom),a.error(b);this.offscreenRGB=null;this.params.zoom=d.zoom;return this};a.Image.prototype.mkColorData=function(){var c,b=a.SCALESIZE,d=this.params.scalemin,e=this.params.scalemax,g=this.raw.width*this.raw.height,f=(b-1)/(e-d);if(!this.colorData||this.colorData.length =e?b-1:Math.floor((h-d)*f+.5)}return this};a.Image.prototype.calcContrastBias=function(c){var b=this.params.bias,d=a.COLORSIZE,e=this.params.contrast;if(1E-4>b-.5&&1E-4>e-1)return c;this.params.invert&&(b=1-b);c=Math.floor(((c/d-b)*e+.5)*d);return 0>c?0:c>=d?d-1:c};a.Image.prototype.mkColorCells=function(){var c,b=a.COLORSIZE;this.colorCells||(this.colorCells=[]);for(c=0;cb;b+=2,c++){var m="0123456789ABCDEF".indexOf(k.charAt(b));var n="0123456789ABCDEF".indexOf(k.charAt(b+1));l[c]=16*m+n}h[NaN]= +l}this.psInverse||(this.psInverse=[],this.psInverse[NaN]=0);k=this.params.scalemax-this.params.scalemin;b=this.params.scalemin;switch(this.params.scale){case "linear":for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h : name: %s type: %s",e.hdu,g,e.type);switch(e.type){case "image":c+=sprintf(" bitpix: %d naxis: %d",e.bitpix,e.naxis);if(e.naxes.length){c+=" axes: [";for(g=0;g=d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h= +0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =b&&l[h]<=p&&(n=Math.floor((l[h]-b)/k*f+.5),n =n&&l +d);n++);c=n/f;this.psInverse[h]=c*k+b}break;default:a.error("unknown scale '"+this.params.scale+"'")}return this};a.Image.prototype.mkRGBImage=function(){var c,b,d,e,g=null,f=null,h=null,k=!1;if(!this.rgb)return this;!a.globalOpts.rgb.active||this!==a.globalOpts.rgb.rim&&this!==a.globalOpts.rgb.gim&&this!==a.globalOpts.rgb.bim||(k=!0,a.globalOpts.rgb.rim&&(g=a.globalOpts.rgb.rim),a.globalOpts.rgb.gim&&(f=a.globalOpts.rgb.gim),a.globalOpts.rgb.bim&&(h=a.globalOpts.rgb.bim));var l=this.display.context; +var m=this.rgb;var n=m.sect;if(this.MakeRGBImage&&"function"===typeof this.MakeRGBImage&&this.MakeRGBImage()||this.MakePrimaryImage&&"function"===typeof this.MakePrimaryImage&&this.MakePrimaryImage())return this;if(this.rgbFile){var q=n.width/n.zoom;var p=n.height/n.zoom;var t=n.x0;var r=this.offscreen.canvas.height-1-(n.y0+p);r=this.offscreen.context.getImageData(t,r,q,p);if(1===n.zoom)m.img=r;else for(m.img=l.createImageData(n.width,n.height),m=m.img,d=c=0;c =n.y0;c-=B,d++)for(u=c*this.raw.width,v=d*E,l=Math.floor(n.x0),b=0;l h&&(h=a.pts[q].x),a.pts[q].x m&&(m=a.pts[q].y),a.pts[q].y #%d =e.rows&&(g+=" ");c+=sprintf(" rows: %d%scols: [",e.rows,g);for(g=0;g ":"display next image","<":"display previous image","delete":"remove selected region",leftArrow:"move region/position left",upArrow:"move region/position up",rightArrow:"move region/position right",downArrow:"move region/position down"},mousetouchZoom:!1,metaClickPan:!0,toolbarTooltips:!1,centerDivs:["JS9Menubar"], -resizeDivs:["JS9Menubar","JS9Colorbar","JS9Toolbar"],pinchWait:8,pinchThresh:6,xeqPlugins:!0,extendedPlugins:!0,intensivePlugins:!1,dynamicSelect:"click",dynamicHighlight:!0,corsProxy:"https://js9.si.edu/cgi-bin/CORS-proxy.cgi",simbadProxy:"https://js9.si.edu/cgi-bin/simbad-proxy.cgi",catalogs:{ras:["RA","_RAJ2000","RAJ2000"],decs:["Dec","_DEJ2000","DEJ2000"],shape:"circle",color:"yellow",width:7,height:7,radius:3.5,r1:5,r2:3.5,wcssys:"ICRS",skip:"#\n",save:!0,tooltip:"$xreg.data.ra $xreg.data.dec"}, -topColormaps:"grey heat cool viridis magma sls red green blue".split(" "),infoBox:"file object wcsfov wcscen wcspos impos physpos value regions progress".split(" "),infoBoxResize:!0,menuBar:"file edit view zoom scale color region wcs analysis help".split(" "),menubarStyle:"classic",userMenus:!1,userMenuDivider:" ",imagesFileSubmenu:5,toolBar:"annulus box circle ellipse line polygon text linear log zoom+ zoom- zoom1".split(" "),syncOps:"colormap contrastbias pan regions scale wcs zoom".split(" "), -syncReciprocate:!0,hiddenPluginDivs:[],separate:{layout:"auto",leftMargin:10,topMargin:10},imageTemplates:".fits,.fts,.png,.jpg,.jpeg,.fz,.ftz",wcsUnits:{FK4:"sexagesimal",FK5:"sexagesimal",ICRS:"sexagesimal",galactic:"degrees",ecliptic:"degrees",linear:"degrees",physical:"pixels",image:"pixels"},regionTemplates:".reg",sessionTemplates:".ses,.js9ses",colormapTemplates:".cmap",catalogTemplates:".cat,.tab",localTemplates:".fits,.fts",controlsMatchRegion:!1,internalColorPicker:!0,newWindowWidth:530, -newWindowHeight:625,debug:0};a.desktopOpts={currentPath:!0,sessionPath:!0};a.imageOpts={inherit:!1,contrast:1,bias:.5,invert:!1,exp:1E3,colormap:"grey",scale:"linear",scaleclipping:"dataminmax",scalemin:Number.NaN,scalemax:Number.NaN,flip:"none",rot90:0,zscalecontrast:.25,zscalesamples:600,zscaleline:120,wcssys:"native",lcs:"physical",valpos:!0,opacity:1,sigma:"none",maskOpacity:.4,alpha:255,alpha1:100,zoom:1,zooms:6,topZooms:2,nancolor:"#000000",wcsalign:!0,rotationMode:"relative",crosshair:!1,disable:[], -ltvbug:!1,listonchange:!1,whichonchange:"selected"};a.regionOpts={};a.catalogOpts={};a.crosshairOpts={};a.gridOpts={};a.emscriptenOpts={};a.blendOpts={active:!0,mode:"screen",opacity:1};a.analOpts={epattern:/^(ERROR:[^\n]*)\n/,dpathURL:"params/datapath.html",fpathURL:"params/filepath.html"};a.lightOpts={nclick:0,dhtml:{top:".dhtmlwindow",drag:".drag-contentarea",dragBar:"drag-handle",format:"width=%spx,height=%spx,center=1,resize=%s,scrolling=0",textWin:"width=830px,height=400px,center=1,resize=1,scrolling=1", -plotWin:"width=830px,height=420px,center=1,resize=1,scrolling=1",dpathWin:"width=830px,height=175px,center=1,resize=1,scrolling=1",lcloseWin:"width=512px,height=190px,center=1,resize=1,scrolling=1",paramWin:"width=830px,height=235px,center=1,resize=1,scrolling=1",regWin0:"width=600px,height=72px,center=1,resize=1,scrolling=1",regWin:"width=600px,height=235px,center=1,resize=1,scrolling=1",imageWin:"width=512px,height=598px,center=1,resize=1,scrolling=1",lineWin:"width=400px,height=60px,center=1,resize=1,scrolling=1"}, -lcloseURL:"params/lightclose.html"};a.textColorOpts={regions:"#00FF00",info:"#00FF00",inimage:"#000000"};a.plotOpts={annotate:!1,annotateColor:"#FF0000",color:"blue",zoomStack:{enabled:!0},selection:{mode:"xy"},series:{clickable:!0,hoverable:!0,lines:{show:!0},points:{show:!1}},legend:{backgroundColor:null,backgroundOpacity:0},xaxis:{autorange:!0},yaxis:{autorange:!0}};a.helpOpts={user:{heading:"JS9Help",type:"help",url:"user.html",title:"User Manual"},install:{heading:"JS9Help",type:"help",url:"install.html", -title:"Installing JS9"},webpage:{heading:"JS9Help",type:"help",url:"webpage.html",title:"Adding JS9 to a Web Page"},yourdata:{heading:"JS9Help",type:"help",url:"yourdata.html",title:"Adding Data to a Web Page"},localtasks:{heading:"JS9Help",type:"help",url:"localtasks.html",title:"Adding Local Analysis Tasks and Plugins"},helper:{heading:"JS9Help",type:"help",url:"helper.html",title:"Adding Server-side Analysis Tasks"},serverside:{heading:"JS9Help",type:"help",url:"serverside.html",title:"Server-side Analysis with JS9"}, -publicapi:{heading:"JS9Help",type:"help",url:"publicapi.html",title:"The JS9 Public API"},extmsg:{heading:"JS9Help",type:"help",url:"extmsg.html",title:"External Messaging"},desktop:{heading:"JS9Help",type:"help",url:"desktop.html",title:"JS9 on the Desktop"},python:{heading:"JS9Help",type:"help",url:"python.html",title:"JS9 with Python and Jupyter"},archives:{heading:"JS9Help",type:"help",url:"archives.html",title:"Accessing Data Archives"},preferences:{heading:"JS9Help",type:"help",url:"preferences.html", -title:"Setting Site Preferences"},regions:{heading:"JS9Help",type:"help",url:"regions.html",title:"Regions Format"},changelog:{heading:"JS9Help",type:"help",url:"changelog.html",title:"ChangeLog"},repfile:{heading:"JS9Help",type:"help",url:"repfile.html",title:"Dealing with Large Files"},memory:{heading:"JS9Help",type:"help",url:"memory.html",title:"Dealing with Memory Limitations"},issues:{heading:"JS9Help",type:"help",url:"knownissues.html",title:"Known Issues"}};a.images=[];a.displays=[];a.colormaps= -[];a.commands=[];a.plugins=[];a.preloads=[];a.auxFiles=[];a.supermenus=[];a.publics={};a.helper={};a.fits={};a.userOpts={};a.preloadwaiting={};a.scales="linear log histeq power sqrt squared asinh sinh".split(" ");a.wcssyss="FK4 FK5 ICRS galactic ecliptic native image physical".split(" ");a.wcsunitss=["degrees","sexagesimal","pixels"];a.bugs={};a.bugs.hide_menu=!1;"Firefox"===a.BROWSER[0]&&0<=a.BROWSER[2].search(/Linux/)&&(a.bugs.firefox_linux=!0);if("Chrome"===a.BROWSER[0]||"Safari"===a.BROWSER[0])a.bugs.webkit_resize= -!0;"Chrome"!==a.BROWSER[0]&&(a.globalOpts.imageTemplates+=",.gz");/iPad|iPhone|iPod/.test(navigator.platform)&&/11_2_(?:[2-9])/.test(navigator.userAgent)&&(a.globalOpts.useWasm=!1);a.BROWSER[3]&&(a.globalOpts.maxMemory=Math.min(a.globalOpts.maxMemory,35E7),a.globalOpts.table.xdim=2048,a.globalOpts.table.ydim=2048,a.globalOpts.image.xdim=2048,a.globalOpts.image.ydim=2048,a.imageOpts.crosshair=!1,a.globalOpts.reproj={xdim:2048,ydim:2048});window.hasOwnProperty("Jupyter")&&(a.globalOpts.useWasm=!1); -if(window.isElectron){"Chrome"===a.BROWSER[0]&&66<=parseFloat(a.BROWSER[1])&&(a.globalOpts.allowFileWasm=!0);if(!window.electronVersion||5>parseInt(window.electronVersion,10))a.globalOpts.internalColorPicker=!1;a.hasNode="object"===typeof process&&"function"===typeof require;a.hasNode&&(a.localMount=require("os").hostname()||"localAccess");window.multiElectron&&(a.globalOpts.localStorage=!1)}a.Image=function(c,b,d){var e=this,g=null,f=0,h=0,k=function(b){b=b||{};a.isNull(b.scaleclipping)?"zscale"=== -e.params.scaleclipping?e.zscale(!0):"zmax"===e.params.scaleclipping&&e.zscale("zmax"):"zscale"===b.scaleclipping?e.zscale(!0):"zmax"===b.scaleclipping&&e.zscale("zmax");a.notNull(b.scalemin)&&(e.params.scalemin=b.scalemin);a.notNull(b.scalemax)&&(e.params.scalemax=b.scalemax)},l=function(b){var c,d=a.globalOpts.imopts,f=a.globalOpts.imcmap,h=a.globalOpts.alerts;e.display.clearMessage();a.images.push(e);e.notifyHelper();e.showShapeLayer("regions",!0,{local:!0});g&&g.regions&&e.addShapes("regions", -g.regions);a.globalOpts.alerts=!1;if(e.raw&&e.raw.header&&e.raw.header[f]){try{var k=JSON.parse(e.raw.header[f])}catch(x){k=null}if(k)try{a.AddColormap(k)}catch(x){}}if(e.raw&&e.raw.header&&e.raw.header[f+"1"]){var l=1;for(c="";100>l;l++){var m=f+String(l);if(e.raw.header[m])c+=e.raw.header[m];else break}if(c){try{k=JSON.parse(c)}catch(x){k=null}if(k)try{a.AddColormap(k)}catch(x){}}}if(e.raw&&e.raw.header&&e.raw.header[d]){try{k=JSON.parse(e.raw.header[d])}catch(x){k=null}if(k)try{e.setParam("all", -k)}catch(x){}}if(e.raw&&e.raw.header&&e.raw.header[d+"1"]){l=1;for(c="";100>l;l++)if(m=d+String(l),e.raw.header[m])c+=e.raw.header[m];else break;if(c){try{k=JSON.parse(c)}catch(x){k=null}if(k)try{e.setParam("all",k)}catch(x){}}}a.globalOpts.alerts=h;e.xeqPlugins("image","onimageload");e.updateshapes&&e.updateShapes("regions","all","update");e.setStatus("load","complete");a.waiting(!1);if(b)try{a.xeqByName(b,window,e)}catch(x){a.error("in image onload callback",x,!1)}c=e.proxyURL||e.file;b=c.replace(/\[.*\]/, -"");if(a.preloadwaiting[c]||a.preloadwaiting[b])if(delete a.preloadwaiting[c],delete a.preloadwaiting[b],!Object.keys(a.preloadwaiting).length&&a.notNull(a.globalOpts.onpreload))try{a.xeqByName(a.globalOpts.onpreload,window,e)}catch(x){a.error("in onpreload callback",x,!1)}g&&g.allext&&e.hdus&&0 =g.length&&a.cleanupFITSFile(f,!0));f.altwcs&&this.freeWCS(f)}e.removeProxyFile();e.rgb=null;e.offscreen=null;e.raw=null;e.colorData=null;e.colorCells=null;e.psColors=null;e.psInverse= -null;a.images.splice(b,1);break}if(d){for(b=d-=2;0<=b;b--)if(e=a.images[b],this.display===e.display){e.displayImage("all");e.refreshLayers();d=a.images.length;break}for(b=a.images.length-1;b>d;b--)if(e=a.images[b],this.display===e.display){e.displayImage("all");e.refreshLayers();break}}};a.Image.prototype.mkOffScreenCanvas=function(){if(!this.png||!this.png.image)return this;this.offscreen={};this.offscreen.canvas=document.createElement("canvas");this.offscreen.canvas.setAttribute("width",this.png.image.width); -this.offscreen.canvas.setAttribute("height",this.png.image.height);this.offscreen.context=this.offscreen.canvas.getContext("2d");a.ANTIALIAS||(this.offscreen.context.imageSmoothingEnabled=!1,this.offscreen.context.webkitImageSmoothingEnabled=!1,this.offscreen.context.msImageSmoothingEnabled=!1);this.offscreen.context.drawImage(this.png.image,0,0);try{this.offscreen.img=this.offscreen.context.getImageData(0,0,this.png.image.width,this.png.image.height)}catch(c){a.CHROMEFILEWARNING&&"Chrome"===a.BROWSER[0]&& -""===document.domain?alert("When using the file:// URI, Chrome must be run with the --allow-file-access-from-files switch to permit JS9 to access data."):alert("could not read off-screen image data [same-origin policy violation?]")}return this};a.Image.prototype.initLCS=function(c){var b=[[0,0,0],[0,0,0],[0,0,0]];c=c||this.raw.header;var d=c.CRPIX1||1,e=c.CRPIX2||1;if(c.LCSROTA2&&c.CROTA2){var g=-c.CROTA2*Math.PI/180;var f=Math.sin(g);var h=Math.cos(g);g=[[0,0,0],[0,0,0],[0,0,0]];g[0][0]=h;g[0][1]= --f;g[0][2]=0;g[1][0]=f;g[1][1]=h;g[1][2]=0;(f=a.invertMatrix3(g))||(g=null)}b[0][0]=a.defNull(c.LTM1_1,1);b[1][0]=c.LTM2_1||0;b[0][1]=c.LTM1_2||0;b[1][1]=a.defNull(c.LTM2_2,1);b[2][0]=c.LTV1||0;b[2][1]=c.LTV2||0;if("image"===this.imtab&&this.params.ltvbug){if(a.notNull(c.LTV1))for(h=0;2>h;h++){var k=Math.abs(b[0][h]);0 k&&(b[2][0]+=.5*k)}if(a.notNull(c.LTV2))for(h=0;2>h;h++)k=Math.abs(b[1][h]),0 k&&(b[2][1]+=.5*k)}this.lcs.physical={forward:$.extend(!0,[],b),reverse:a.invertMatrix3(b)}; -this.lcs.physical.reverse?g&&(this.lcs.physical.frot=$.extend(!0,[],g),this.lcs.physical.rrot=$.extend(!0,[],f),this.lcs.physical.cx=d-b[2][0]-1,this.lcs.physical.cy=e-b[2][1]-1):delete this.lcs.physical;b[0][0]=a.defNull(c.DTM1_1,1);b[1][0]=c.DTM2_1||0;b[0][1]=c.DTM1_2||0;b[1][1]=a.defNull(c.DTM2_2,1);b[2][0]=c.DTV1||0;b[2][1]=c.DTV2||0;this.lcs.detector={forward:$.extend(!0,[],b),reverse:a.invertMatrix3(b)};this.lcs.detector.reverse?g&&(this.lcs.detector.frot=$.extend(!0,[],g),this.lcs.detector.rrot= -$.extend(!0,[],f),this.lcs.detector.cx=d-b[2][0]-1,this.lcs.detector.cy=e-b[2][1]-1):delete this.lcs.detector;b[0][0]=a.defNull(c.ATM1_1,1);b[1][0]=c.ATM2_1||0;b[0][1]=c.ATM1_2||0;b[1][1]=a.defNull(c.ATM2_2,1);b[2][0]=c.ATV1||0;b[2][1]=c.ATV2||0;this.lcs.amplifier={forward:$.extend(!0,[],b),reverse:a.invertMatrix3(b)};this.lcs.amplifier.reverse?g&&(this.lcs.amplifier.frot=$.extend(!0,[],g),this.lcs.amplifier.rrot=$.extend(!0,[],f),this.lcs.amplifier.cx=d-b[2][0]-1,this.lcs.amplifier.cy=e-b[2][1]- -1):delete this.lcs.amplifier;this.params&&!this.lcs[this.params.lcs]&&(this.params.lcs="image");this.params&&!this.params.wcssys0&&(this.setWCSSys("physical"),this.params.wcssys0=this.params.lcs);this.lcs.physical&&!this.lcs.ophysical&&(this.lcs.ophysical=$.extend(!0,{},this.lcs.physical));return this};a.Image.prototype.mkRawDataFromIMG=function(c){var b,d;if(c){var e=c.height;var g=c.width;var f=c.data;this.raws.push({from:"img"});this.raw=this.raws[this.raws.length-1];this.raw.id=a.RAWID0;this.raw.data= -new Float32Array(e*g);for(d=c=0;d c||m)this.mkRawDataFromIMG(this.offscreen.img);else{c=g.join("");2 l.naxis&&a.error("can't image a FITS file with less than 2 dimensions");if(this.raw){var m=this.raw;var n=this.raw.width;var q=this.raw.height;var p=this.raw.bitpix;var t=a.defNull(this.raw.header.LTM1_1,1);var r=this.params.wcssys;var u=this.params.wcsunits;this.freeWCS()}this.raws=this.raws||[];if(f=this.raws.length){b.rawid=b.rawid||a.RAWIDX;for(e=g=0;e ]/);m=c=!1;e=0;for(b=!1;e =this.raw.header.NAXIS&&(!this.hdus||1===this.hdus.length)?c=!0:(c=!1,b=!0);break;case "nocube":2>=this.raw.header.NAXIS? -c=!0:(c=!1,b=!0);break;case "noext":this.hdus&&1!==this.hdus.length?(c=!1,b=!0):c=!0;break;case "size":v[e+1]?a.vsize(l.fits.vfile)>1E6*v[e+1]?c=!0:(c=!1,b=!0):(c=!1,b=!0)}c?(2 d.x0&&(a.globalOpts.panWithinDisplay?d.x1-=d.x0:d.ix=d.x0*d.zoom,d.x0=0);0>d.y0&&(a.globalOpts.panWithinDisplay?d.y1-=d.y0:d.iy=d.y0*d.zoom, -d.y0=0);d.x1>this.raw.width&&(a.globalOpts.panWithinDisplay?d.x0-=d.x1-this.raw.width:d.ix=(d.x1-this.raw.width)*d.zoom,d.x1=this.raw.width);d.y1>this.raw.height&&(a.globalOpts.panWithinDisplay?d.y0-=d.y1-this.raw.height:d.iy=(d.y1-this.raw.height)*d.zoom,d.y1=this.raw.height);0 d.ix&&d.x1 d.iy&&d.y1 =d.width||0>=d.height)b=sprintf("invalid image section: %s,%s [%s,%s, %s,%s, %s]",d.width,d.height,d.x0,d.y0,d.x1, -d.y1,d.zoom),a.error(b);this.offscreenRGB=null;this.params.zoom=d.zoom;return this};a.Image.prototype.mkColorData=function(){var c,b=a.SCALESIZE,d=this.params.scalemin,e=this.params.scalemax,g=this.raw.width*this.raw.height,f=(b-1)/(e-d);if(!this.colorData||this.colorData.length =e?b-1:Math.floor((h-d)*f+.5)}return this};a.Image.prototype.calcContrastBias=function(c){var b=this.params.bias,d=a.COLORSIZE, -e=this.params.contrast;if(1E-4>b-.5&&1E-4>e-1)return c;this.params.invert&&(b=1-b);c=Math.floor(((c/d-b)*e+.5)*d);return 0>c?0:c>=d?d-1:c};a.Image.prototype.mkColorCells=function(){var c,b=a.COLORSIZE;this.colorCells||(this.colorCells=[]);for(c=0;cb;b+=2,c++){var m="0123456789ABCDEF".indexOf(k.charAt(b));var n="0123456789ABCDEF".indexOf(k.charAt(b+1));l[c]=16*m+n}h[NaN]=l}this.psInverse||(this.psInverse=[],this.psInverse[NaN]=0);k=this.params.scalemax-this.params.scalemin;b=this.params.scalemin;switch(this.params.scale){case "linear":for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =b&&l[h]<=p&&(n=Math.floor((l[h]-b)/k*f+.5),n =n&&l d);n++);c=n/f;this.psInverse[h]=c*k+b}break;default:a.error("unknown scale '"+this.params.scale+"'")}return this};a.Image.prototype.mkRGBImage=function(){var c,b,d,e,g=null,f=null,h=null,k=!1;if(!this.rgb)return this;!a.globalOpts.rgb.active|| -this!==a.globalOpts.rgb.rim&&this!==a.globalOpts.rgb.gim&&this!==a.globalOpts.rgb.bim||(k=!0,a.globalOpts.rgb.rim&&(g=a.globalOpts.rgb.rim),a.globalOpts.rgb.gim&&(f=a.globalOpts.rgb.gim),a.globalOpts.rgb.bim&&(h=a.globalOpts.rgb.bim));var l=this.display.context;var m=this.rgb;var n=m.sect;if(this.MakeRGBImage&&"function"===typeof this.MakeRGBImage&&this.MakeRGBImage()||this.MakePrimaryImage&&"function"===typeof this.MakePrimaryImage&&this.MakePrimaryImage())return this;if(this.rgbFile){var q=n.width/ -n.zoom;var p=n.height/n.zoom;var t=n.x0;var r=this.offscreen.canvas.height-1-(n.y0+p);r=this.offscreen.context.getImageData(t,r,q,p);if(1===n.zoom)m.img=r;else for(m.img=l.createImageData(n.width,n.height),m=m.img,d=c=0;c =n.y0;c-=B,d++)for(u=c*this.raw.width,v=d*E,l=Math.floor(n.x0),b=0;l h&&(h=a.pts[q].x),a.pts[q].x m&&(m=a.pts[q].y),a.pts[q].y parseInt(window.electronVersion,10))a.globalOpts.internalColorPicker=!1;a.hasNode="object"===typeof process&&"function"===typeof require;a.hasNode&&(a.localMount=require("os").hostname()||"localAccess");window.multiElectron&&(a.globalOpts.localStorage=!1)}a.Image=function(c,b,d){var e=this,g=null,f=0,h=0,k=function(b){b=b||{};a.isNull(b.scaleclipping)?"zscale"===e.params.scaleclipping?e.zscale(!0): +"zmax"===e.params.scaleclipping&&e.zscale("zmax"):"zscale"===b.scaleclipping?e.zscale(!0):"zmax"===b.scaleclipping&&e.zscale("zmax");a.notNull(b.scalemin)&&(e.params.scalemin=b.scalemin);a.notNull(b.scalemax)&&(e.params.scalemax=b.scalemax)},l=function(b){var c,d=a.globalOpts.imopts,f=a.globalOpts.imcmap,h=a.globalOpts.alerts;e.display.clearMessage();a.images.push(e);e.notifyHelper();e.showShapeLayer("regions",!0,{local:!0});g&&g.regions&&e.addShapes("regions",g.regions);a.globalOpts.alerts=!1;if(e.raw&& +e.raw.header&&e.raw.header[f]){try{var k=JSON.parse(e.raw.header[f])}catch(x){k=null}if(k)try{a.AddColormap(k)}catch(x){}}if(e.raw&&e.raw.header&&e.raw.header[f+"1"]){var l=1;for(c="";100>l;l++){var m=f+String(l);if(e.raw.header[m])c+=e.raw.header[m];else break}if(c){try{k=JSON.parse(c)}catch(x){k=null}if(k)try{a.AddColormap(k)}catch(x){}}}if(e.raw&&e.raw.header&&e.raw.header[d]){try{k=JSON.parse(e.raw.header[d])}catch(x){k=null}if(k)try{e.setParam("all",k)}catch(x){}}if(e.raw&&e.raw.header&&e.raw.header[d+ +"1"]){l=1;for(c="";100>l;l++)if(m=d+String(l),e.raw.header[m])c+=e.raw.header[m];else break;if(c){try{k=JSON.parse(c)}catch(x){k=null}if(k)try{e.setParam("all",k)}catch(x){}}}a.globalOpts.alerts=h;e.xeqPlugins("image","onimageload");e.updateshapes&&e.updateShapes("regions","all","update");e.setStatus("load","complete");a.waiting(!1);if(b)try{a.xeqByName(b,window,e)}catch(x){a.error("in image onload callback",x,!1)}c=e.proxyURL||e.file;b=c.replace(/\[.*\]/,"");if(a.preloadwaiting[c]||a.preloadwaiting[b])if(delete a.preloadwaiting[c], +delete a.preloadwaiting[b],!Object.keys(a.preloadwaiting).length&&a.notNull(a.globalOpts.onpreload))try{a.xeqByName(a.globalOpts.onpreload,window,e)}catch(x){a.error("in onpreload callback",x,!1)}g&&g.allext&&e.hdus&&0 =g.length&&a.cleanupFITSFile(f,!0));f.altwcs&&this.freeWCS(f)}e.removeProxyFile();e.rgb=null;e.offscreen=null;e.raw=null;e.colorData=null;e.colorCells=null;e.psColors=null;e.psInverse=null;a.images.splice(b,1);break}if(d){for(b=d-=2;0<=b;b--)if(e= +a.images[b],this.display===e.display){e.displayImage("all");e.refreshLayers();d=a.images.length;break}for(b=a.images.length-1;b>d;b--)if(e=a.images[b],this.display===e.display){e.displayImage("all");e.refreshLayers();break}}};a.Image.prototype.mkOffScreenCanvas=function(){if(!this.png||!this.png.image)return this;this.offscreen={};this.offscreen.canvas=document.createElement("canvas");this.offscreen.canvas.setAttribute("width",this.png.image.width);this.offscreen.canvas.setAttribute("height",this.png.image.height); +this.offscreen.context=this.offscreen.canvas.getContext("2d");a.ANTIALIAS||(this.offscreen.context.imageSmoothingEnabled=!1,this.offscreen.context.webkitImageSmoothingEnabled=!1,this.offscreen.context.msImageSmoothingEnabled=!1);this.offscreen.context.drawImage(this.png.image,0,0);try{this.offscreen.img=this.offscreen.context.getImageData(0,0,this.png.image.width,this.png.image.height)}catch(c){a.CHROMEFILEWARNING&&"Chrome"===a.BROWSER[0]&&""===document.domain?alert("When using the file:// URI, Chrome must be run with the --allow-file-access-from-files switch to permit JS9 to access data."): +alert("could not read off-screen image data [same-origin policy violation?]")}return this};a.Image.prototype.initLCS=function(c){var b=[[0,0,0],[0,0,0],[0,0,0]];c=c||this.raw.header;var d=c.CRPIX1||1,e=c.CRPIX2||1;if(c.LCSROTA2&&c.CROTA2){var g=-c.CROTA2*Math.PI/180;var f=Math.sin(g);var h=Math.cos(g);g=[[0,0,0],[0,0,0],[0,0,0]];g[0][0]=h;g[0][1]=-f;g[0][2]=0;g[1][0]=f;g[1][1]=h;g[1][2]=0;(f=a.invertMatrix3(g))||(g=null)}b[0][0]=a.defNull(c.LTM1_1,1);b[1][0]=c.LTM2_1||0;b[0][1]=c.LTM1_2||0;b[1][1]= +a.defNull(c.LTM2_2,1);b[2][0]=c.LTV1||0;b[2][1]=c.LTV2||0;if("image"===this.imtab&&this.params.ltvbug){if(a.notNull(c.LTV1))for(h=0;2>h;h++){var k=Math.abs(b[0][h]);0 k&&(b[2][0]+=.5*k)}if(a.notNull(c.LTV2))for(h=0;2>h;h++)k=Math.abs(b[1][h]),0 k&&(b[2][1]+=.5*k)}this.lcs.physical={forward:$.extend(!0,[],b),reverse:a.invertMatrix3(b)};this.lcs.physical.reverse?g&&(this.lcs.physical.frot=$.extend(!0,[],g),this.lcs.physical.rrot=$.extend(!0,[],f),this.lcs.physical.cx=d-b[2][0]-1,this.lcs.physical.cy= +e-b[2][1]-1):delete this.lcs.physical;b[0][0]=a.defNull(c.DTM1_1,1);b[1][0]=c.DTM2_1||0;b[0][1]=c.DTM1_2||0;b[1][1]=a.defNull(c.DTM2_2,1);b[2][0]=c.DTV1||0;b[2][1]=c.DTV2||0;this.lcs.detector={forward:$.extend(!0,[],b),reverse:a.invertMatrix3(b)};this.lcs.detector.reverse?g&&(this.lcs.detector.frot=$.extend(!0,[],g),this.lcs.detector.rrot=$.extend(!0,[],f),this.lcs.detector.cx=d-b[2][0]-1,this.lcs.detector.cy=e-b[2][1]-1):delete this.lcs.detector;b[0][0]=a.defNull(c.ATM1_1,1);b[1][0]=c.ATM2_1||0; +b[0][1]=c.ATM1_2||0;b[1][1]=a.defNull(c.ATM2_2,1);b[2][0]=c.ATV1||0;b[2][1]=c.ATV2||0;this.lcs.amplifier={forward:$.extend(!0,[],b),reverse:a.invertMatrix3(b)};this.lcs.amplifier.reverse?g&&(this.lcs.amplifier.frot=$.extend(!0,[],g),this.lcs.amplifier.rrot=$.extend(!0,[],f),this.lcs.amplifier.cx=d-b[2][0]-1,this.lcs.amplifier.cy=e-b[2][1]-1):delete this.lcs.amplifier;this.params&&!this.lcs[this.params.lcs]&&(this.params.lcs="image");this.params&&!this.params.wcssys0&&(this.setWCSSys("physical"),this.params.wcssys0= +this.params.lcs);this.lcs.physical&&!this.lcs.ophysical&&(this.lcs.ophysical=$.extend(!0,{},this.lcs.physical));return this};a.Image.prototype.mkRawDataFromIMG=function(c){var b,d;if(c){var e=c.height;var g=c.width;var f=c.data;this.raws.push({from:"img"});this.raw=this.raws[this.raws.length-1];this.raw.id=a.RAWID0;this.raw.data=new Float32Array(e*g);for(d=c=0;d c||m)this.mkRawDataFromIMG(this.offscreen.img);else{c=g.join("");2 l.naxis&&a.error("can't image a FITS file with less than 2 dimensions"); +if(this.raw){var m=this.raw;var n=this.raw.width;var q=this.raw.height;var p=this.raw.bitpix;var t=a.defNull(this.raw.header.LTM1_1,1);var r=this.params.wcssys;var u=this.params.wcsunits;this.freeWCS()}this.raws=this.raws||[];if(f=this.raws.length){b.rawid=b.rawid||a.RAWIDX;for(e=g=0;e ]/);m=c=!1;e=0;for(b=!1;e< +v.length&&!b;e++)switch(v[e]){case "never":c=!1;b=!0;break;case "always":b=c=!0;break;case "heap":m=!0;break;case "auto":2>=this.raw.header.NAXIS&&(!this.hdus||1===this.hdus.length)?c=!0:(c=!1,b=!0);break;case "nocube":2>=this.raw.header.NAXIS?c=!0:(c=!1,b=!0);break;case "noext":this.hdus&&1!==this.hdus.length?(c=!1,b=!0):c=!0;break;case "size":v[e+1]?a.vsize(l.fits.vfile)>1E6*v[e+1]?c=!0:(c=!1,b=!0):(c=!1,b=!0)}c?(2 d.x0&&(a.globalOpts.panWithinDisplay?d.x1-=d.x0:d.ix=d.x0*d.zoom,d.x0=0);0>d.y0&&(a.globalOpts.panWithinDisplay?d.y1-=d.y0:d.iy=d.y0*d.zoom,d.y0=0);d.x1>this.raw.width&&(a.globalOpts.panWithinDisplay?d.x0-=d.x1-this.raw.width:d.ix=(d.x1-this.raw.width)*d.zoom,d.x1=this.raw.width);d.y1>this.raw.height&&(a.globalOpts.panWithinDisplay?d.y0-=d.y1-this.raw.height:d.iy=(d.y1-this.raw.height)*d.zoom,d.y1=this.raw.height); +0 d.ix&&d.x1 d.iy&&d.y1 =d.width||0>=d.height)b=sprintf("invalid image section: %s,%s [%s,%s, %s,%s, %s]",d.width,d.height,d.x0,d.y0,d.x1,d.y1,d.zoom),a.error(b);this.offscreenRGB=null;this.params.zoom=d.zoom;return this};a.Image.prototype.mkColorData=function(){var c,b=a.SCALESIZE,d=this.params.scalemin,e=this.params.scalemax,g=this.raw.width*this.raw.height,f=(b-1)/(e-d);if(!this.colorData||this.colorData.length =e?b-1:Math.floor((h-d)*f+.5)}return this};a.Image.prototype.calcContrastBias=function(c){var b=this.params.bias,d=a.COLORSIZE,e=this.params.contrast;if(1E-4>b-.5&&1E-4>e-1)return c;this.params.invert&&(b=1-b);c=Math.floor(((c/d-b)*e+.5)*d);return 0>c?0:c>=d?d-1:c};a.Image.prototype.mkColorCells=function(){var c,b=a.COLORSIZE;this.colorCells||(this.colorCells=[]);for(c=0;cb;b+=2,c++){var m="0123456789ABCDEF".indexOf(k.charAt(b));var n="0123456789ABCDEF".indexOf(k.charAt(b+1));l[c]=16*m+n}h[NaN]= +l}this.psInverse||(this.psInverse=[],this.psInverse[NaN]=0);k=this.params.scalemax-this.params.scalemin;b=this.params.scalemin;switch(this.params.scale){case "linear":for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h : name: %s type: %s",e.hdu,g,e.type);switch(e.type){case "image":c+=sprintf(" bitpix: %d naxis: %d",e.bitpix,e.naxis);if(e.naxes.length){c+=" axes: [";for(g=0;g=d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h= +0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =d&&(c=d-1),this.psColors[h]=this.colorCells[c];for(h=0;h =b&&l[h]<=p&&(n=Math.floor((l[h]-b)/k*f+.5),n =n&&l +d);n++);c=n/f;this.psInverse[h]=c*k+b}break;default:a.error("unknown scale '"+this.params.scale+"'")}return this};a.Image.prototype.mkRGBImage=function(){var c,b,d,e,g=null,f=null,h=null,k=!1;if(!this.rgb)return this;!a.globalOpts.rgb.active||this!==a.globalOpts.rgb.rim&&this!==a.globalOpts.rgb.gim&&this!==a.globalOpts.rgb.bim||(k=!0,a.globalOpts.rgb.rim&&(g=a.globalOpts.rgb.rim),a.globalOpts.rgb.gim&&(f=a.globalOpts.rgb.gim),a.globalOpts.rgb.bim&&(h=a.globalOpts.rgb.bim));var l=this.display.context; +var m=this.rgb;var n=m.sect;if(this.MakeRGBImage&&"function"===typeof this.MakeRGBImage&&this.MakeRGBImage()||this.MakePrimaryImage&&"function"===typeof this.MakePrimaryImage&&this.MakePrimaryImage())return this;if(this.rgbFile){var q=n.width/n.zoom;var p=n.height/n.zoom;var t=n.x0;var r=this.offscreen.canvas.height-1-(n.y0+p);r=this.offscreen.context.getImageData(t,r,q,p);if(1===n.zoom)m.img=r;else for(m.img=l.createImageData(n.width,n.height),m=m.img,d=c=0;c =n.y0;c-=B,d++)for(u=c*this.raw.width,v=d*E,l=Math.floor(n.x0),b=0;l h&&(h=a.pts[q].x),a.pts[q].x m&&(m=a.pts[q].y),a.pts[q].y #%d =e.rows&&(g+=" ");c+=sprintf(" rows: %d%scols: [",e.rows,g);for(g=0;g