document.addEventListener("DOMContentLoaded",onDOMContentLoaded);let _app=null,_tools=null,_layout="one";function viewerSetup(){dwv.logger.level=dwv.logger.levels.INFO,dwv.decoderScripts.jpeg2000="./decoders/pdfjs/decode-jpeg2000.js",dwv.decoderScripts["jpeg-lossless"]="./decoders/rii-mango/decode-jpegloss.js",dwv.decoderScripts["jpeg-baseline"]="./decoders/pdfjs/decode-jpegbaseline.js",dwv.decoderScripts.rle="./decoders/dwv/decode-rle.js",dwv.defaultPresets.PT={"suv5-10":{center:5,width:10},"suv6-8":{center:6,width:8}};let e=!0;"one"===_layout?addLayerGroups(1):"side"===_layout?addLayerGroups(2):"mpr"===_layout&&(e=!1,addLayerGroups(3)),_tools={Scroll:{},WindowLevel:{},ZoomAndPan:{},Opacity:{},Draw:{options:["Ruler","Circle"]}};const t=new dwv.AppOptions;t.tools=_tools,t.viewOnFirstLoadItem=e,_app=new dwv.App,_app.init(t),_app.addEventListener("error",(function(e){console.error("load error",e)})),_app.addEventListener("loadstart",(function(e){console.time("load-data-"+e.dataid);const t=[e.dataid];let n;"one"===_layout?n=getOnebyOneDataViewConfig(t):"side"===_layout?n=getOnebyTwoDataViewConfig(t):"mpr"===_layout&&(n=getMPRDataViewConfig(t));const o=n[e.dataid];for(let t=0;t=0&&0===d.getValueAtOffset(n)&&0===d.getValueAtOffset(n+1)&&0===d.getValueAtOffset(n+2)?0:255}))}}})),_app.addEventListener("positionchange",(function(e){const t=document.getElementById("position"),n=e.value[1];let o="(index: "+e.value[0]+")";e.value.length>2&&(o+=" value: "+e.value[2]),t.value=n.map(getPrecisionRound(2));document.getElementById("positionspan").innerHTML=o})),window.addEventListener("keydown",(function(e){if(_app.defaultOnKeydown(e),!isNaN(parseInt(e.key,10))){const t=_app.getActiveLayerGroup().getActiveViewLayer().getViewController();if(!t.isMask())return;const n=parseInt(e.key,10),o=t.getMaskSegmentHelper();if(o.hasSegment(n)){const a=o.getSegment(n);e.ctrlKey&&(e.altKey?(console.log("Delete segment: "+a.label),t.deleteSegment(n,_app.addToUndoStack)):(console.log("Show/hide segment: "+a.label),o.isHidden(n)?o.removeFromHidden(n):o.addToHidden(n),t.applyHiddenSegments()))}}})),window.addEventListener("resize",(function(){_app.onResize()}));const i={};if(document.cookie){const e=document.cookie.split("; "),t=e.find((e=>e.startsWith("accept=")));if(void 0!==t){const e=decodeURIComponent(t.split("=")[1]);void 0!==e&&0!==e.length&&(i.requestHeaders=[],i.requestHeaders.push({name:"Accept",value:e})),document.cookie="accept="}const n=e.find((e=>e.startsWith("access_token=")));if(void 0!==n){const e=n.split("=")[1];void 0!==e&&0!==e.length&&(void 0===i.requestHeaders&&(i.requestHeaders=[]),i.requestHeaders.push({name:"Authorization",value:"Bearer "+e})),document.cookie="access_token="}}_app.loadFromUri(window.location.href,i)}function onDOMContentLoaded(){viewerSetup();document.getElementById("position").addEventListener("change",(function(){const e=_app.getViewLayersByDataId("0")[0].getViewController(),t=this.value.split(",");e.setCurrentPosition(new dwv.Point([parseFloat(t[0]),parseFloat(t[1]),parseFloat(t[2])]))}));const e=document.getElementById("resetlayout");e.disabled=!0,e.addEventListener("click",(function(){_app.resetLayout()}));const t=document.getElementById("changelayout");t.disabled=!0,t.addEventListener("change",(function(e){const t=e.target.value;if("one"!==t&&"side"!==t&&"mpr"!==t)throw new Error("Unknown layout: "+t);let n;_layout=t;const o=_app.getDataIds();"one"===t?(addLayerGroups(1),n=getOnebyOneDataViewConfig(o)):"side"===t?(addLayerGroups(2),n=getOnebyTwoDataViewConfig(o)):"mpr"===t&&(addLayerGroups(3),n=getMPRDataViewConfig(o)),unbindAppToControls(),_app.setDataViewConfigs(n),clearDataTable();for(let e=0;e=e&&n<=t?255:0},o=s();for(let e=0;e{const o=dwv.getTagFromKey(n);let a=o.getNameFromDictionary();return void 0===a&&(a="x"+o.getKey()),e[a]=t[n],e}),{})),t}function setupTests(){const e=document.createElement("button");e.onclick=runRenderTest,e.appendChild(document.createTextNode("render test"));document.getElementById("tests").appendChild(e)}function getSimpleStats(e){let t=e[0],n=t,o=0,a=0,d=0;const i=e.length;for(let l=0;ln&&(n=d),o+=d,a+=d*d;const l=o/i,r=a/i-l*l;return{min:t,max:n,mean:l,stdDev:Math.sqrt(r)}}function runRenderTest(){_app.setActiveLayerGroup(1);const e=_app.getActiveLayerGroup().getActiveViewLayer().getViewController(),t=function(){e.incrementScrollIndex()};let n;const o=[],a=function(){n=performance.now()},d=function(){const e=performance.now();o.push(e-n),n=void 0,o.length<20?setTimeout((()=>{t()}),100):(console.log("Stats:",getSimpleStats(o)),_app.removeEventListener("renderstart",a),_app.removeEventListener("renderend",d))};_app.addEventListener("renderstart",a),_app.addEventListener("renderend",d),t()}function setupAbout(){const e=document.getElementById("about"),t=document.createElement("a");t.href="https://github.com/ivmartel/dwv",t.appendChild(document.createTextNode("dwv"));const n=document.createTextNode(" v"+dwv.getDwvVersion()+" on "+navigator.userAgent);e.appendChild(t),e.appendChild(n)}