custom-cornerstone-tools
Version:
Medical imaging tools for the Cornerstone library - customized for DrNuvem
135 lines (108 loc) • 4.57 kB
HTML
<html>
<head>
<!-- support for mobile touch devices -->
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1">
<!-- twitter bootstrap CSS stylesheet - not required by cornerstoneTools -->
<link href="../bootstrap.min.css" rel="stylesheet">
<link href="../cornerstone.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="page-header">
<h1>
Stack Loading Progress Example
</h1>
<p>
This page contains an example of monitoring percentage of images in the stack which have been loaded.
</p>
<a href="../index.html">Go back to the Examples page</a>
</div>
<div class="row">
<div class="col-xs-12 col-sm-2">
<h5>Percentage loaded</h5>
<span id="loadProgress"></span>
</div>
<div class="col-xs-6">
<div style="width:512px;height:512px;position:relative;display:inline-block;color:white;"
oncontextmenu="return false"
class='cornerstone-enabled-image'
unselectable='on'
onselectstart='return false;'
onmousedown='return false;'>
<div id="dicomImage"
style="width:512px;height:512px;top:0px;left:0px; position:absolute;">
</div>
</div>
</div>
</div>
</body>
<!-- jquery - included to make things easier to demo, not needed or used by the cornerstone library but
is used by our example image loader-->
<script src="../jquery.min.js"></script>
<!-- include the cornerstone library -->
<script src="../cornerstone.min.js"></script>
<script src="../cornerstoneMath.min.js"></script>
<!-- include the cornerstone tools library -->
<script src="../../dist/cornerstoneTools.js"></script>
<!-- include special code for these examples which provides images -->
<script src="../exampleImageLoader.js"></script>
<script>
var element = $('#dicomImage').get(0);
var imageIds = [
'example://1',
'example://2',
'example://3'
];
var stack = {
currentImageIdIndex : 0,
imageIds: imageIds
};
// Deep copy the imageIds
var loadProgress = {"imageIds": stack.imageIds.slice(0),
"total": stack.imageIds.length,
"remaining": stack.imageIds.length,
"percentLoaded": 0,
};
function onImageLoaded (event) {
var eventData = event.detail;
var imageId = eventData.image.imageId;
var imageIds = loadProgress["imageIds"];
// Remove all instances, in case the stack repeats imageIds
for(var i = imageIds.length - 1; i >= 0; i--) {
if(imageIds[i] === imageId) {
imageIds.splice(i, 1);
}
}
// Populate the load progress object
loadProgress["remaining"] = imageIds.length;
loadProgress["percentLoaded"] = parseInt(100 - loadProgress["remaining"] / loadProgress["total"] * 100, 10);
if ((loadProgress["remaining"] / loadProgress["total"]) === 0) {
console.timeEnd("Loading");
}
// Write to a span in the DOM
var currentValueSpan = document.getElementById("loadProgress");
currentValueSpan.textContent = loadProgress["percentLoaded"];
}
// Image loading events are bound to the cornerstone object, not the element
cornerstone.events.addEventListener("cornerstoneimageloaded", onImageLoaded);
// image enable the dicomImage element and the mouse inputs
console.time("Loading");
cornerstone.enable(element);
cornerstoneTools.mouseInput.enable(element);
cornerstoneTools.mouseWheelInput.enable(element);
cornerstone.loadImage(imageIds[stack.currentImageIdIndex]).then(function(image) {
// display this image
cornerstone.displayImage(element, image);
// set the stack as tool state
cornerstoneTools.addStackStateManager(element, ['stack']);
cornerstoneTools.addToolState(element, 'stack', stack);
// Enable all tools we want to use with this element
cornerstoneTools.stackScroll.activate(element, 1);
cornerstoneTools.stackScrollWheel.activate(element);
// Uncomment below to enable stack prefetching
// With the example images the loading will be extremely quick, though
cornerstoneTools.stackPrefetch.enable(element, 3);
});
</script>
</html>