custom-cornerstone-tools
Version:
Medical imaging tools for the Cornerstone library - customized for DrNuvem
312 lines (277 loc) • 13 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, minimal-ui">
<meta name="apple-mobile-web-app-capable" content="yes"/>
<!-- twitter bootstrap CSS stylesheet - not required by cornerstoneTools -->
<link href="//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">
<link href="../cornerstone.min.css" rel="stylesheet">
<style>
/* prevents selection when left click dragging */
.disable-selection {
-moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;
}
/* prevents cursor from changing to the i bar on the overlays*/
.noIbar {
cursor:default;
}
</style>
</head>
<script>
if (typeof CustomEvent === 'undefined') {
CustomEvent = function(type, eventInitDict) {
var event = document.createEvent('CustomEvent');
event.initCustomEvent(type, eventInitDict['bubbles'], eventInitDict['cancelable'], eventInitDict['detail']);
return event;
};
}
</script>
<body>
<div class="container">
<div class="page-header">
<h2>
Touch Tools Example
</h2>
<p>
This page contains an example of all the touch-capable tools. <strong>Load this on a mobile device.</strong>
</p>
<a href="../index.html">Go back to the Examples page</a>
</div>
<div class="row">
<div class="col-lg-12 col-md-12 col-xs-12 col-md-offset-0">
<div class="dropdown">
<button id="toolSelector" class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Select tool <span class="caret"></span></button>
<ul class="dropdown-menu">
<li class="dropdown-header">Tools</li>
<li><a id="enableWindowLevelTool" class="list-group-item">WW/WC</a></li>
<li><a id="pan" class="list-group-item">Pan</a></li>
<li><a id="rotate" class="list-group-item">Rotate</a></li>
<li><a id="zoom" class="list-group-item">Zoom (pinch)</a></li>
<li><a id="zoomDrag" class="list-group-item">Zoom (drag)</a></li>
<li><a id="stackScroll" class="list-group-item">Stack Scroll</a></li>
<li><a id="length" class="list-group-item">Length</a></li>
<li><a id="probe" class="list-group-item">Probe</a></li>
<li><a id="circleroi" class="list-group-item">Ellipse</a></li>
<li><a id="rectangleroi" class="list-group-item">Rectangle</a></li>
<li><a id="angle" class="list-group-item">Angle</a></li>
</ul>
<a id="clearToolData" class="btn btn-secondary">Clear Tools</a>
<a id="resetViewport" class="btn btn-secondary">Reset View</a>
<a id="fullscreen" class="btn btn-secondary">Fullscreen</a>
</div>
</div>
</div>
<br/>
<div class="row">
<div class="col-lg-12 col-md-12 col-xs-6 col-xs-offset-1 col-md-offset-0">
<div style="width:256px;height:256px;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:256px;height:256px;top:0px;left:0px; position:absolute;">
</div>
<div id="mrtopleft" style="position: absolute;top:3px; left:3px">
Patient Name
</div>
<div id="mrtopright" style="position: absolute;top:3px; right:3px">
Hospital
</div>
<div id="mrbottomright" style="position: absolute;bottom:3px; right:3px">
Zoom:
</div>
<div id="mrbottomleft" style="position: absolute;bottom:3px; left:3px">
WW/WC:
</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>
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<!-- include the hammer.fakemultitouch so we can test with a mouse -->
<script src="../touch-emulator.js"></script>
<script>TouchEmulator();</script>
<!-- include the hammer.js library for touch gestures-->
<script src="../hammer.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);
// Listen for changes to the viewport so we can update the text overlays in the corner
function onImageRendered(e) {
var viewport = cornerstone.getViewport(e.target);
$('#mrbottomleft').text("WW/WC: " + Math.round(viewport.voi.windowWidth) + "/" + Math.round(viewport.voi.windowCenter));
$('#mrbottomright').text("Zoom: " + viewport.scale.toFixed(2));
};
element.addEventListener('cornerstoneimagerendered', onImageRendered);
var imageIds = [
'example://1',
'example://2'
];
var stack = {
currentImageIdIndex : 0,
imageIds: imageIds
};
var container = element.parentNode;
$('#fullscreen').click(function (e) {
if (!document.fullscreenElement && !document.mozFullScreenElement &&
!document.webkitFullscreenElement && !document.msFullscreenElement) {
if (container.requestFullscreen) {
container.requestFullscreen();
} else if (container.msRequestFullscreen) {
container.msRequestFullscreen();
} else if (container.mozRequestFullScreen) {
container.mozRequestFullScreen();
} else if (container.webkitRequestFullscreen) {
container.webkitRequestFullscreen();
}
}
});
$(document).on("webkitfullscreenchange mozfullscreenchange fullscreenchange", function() {
if (!document.fullscreenElement && !document.mozFullScreenElement &&
!document.webkitFullscreenElement && !document.msFullscreenElement) {
$(container).width(256);
$(container).height(256);
$(element).width(256);
$(element).height(256);
} else {
$(container).width($(window).width());
$(container).height($(window).height());
$(element).width($(container).width());
$(element).height($(container).height());
}
cornerstone.resize(element, true);
})
$(window).on("resize orientationchange", function () {
if (document.fullscreenElement || document.mozFullScreenElement ||
document.webkitFullscreenElement || document.msFullscreenElement) {
$(container).width($(window).width());
$(container).height($(window).height());
$(element).width($(container).width());
$(element).height($(container).height());
cornerstone.resize(element, true);
}
})
// image enable the dicomImage element
cornerstone.enable(element);
var configuration = {
testPointers: function(eventData) {
return (eventData.numPointers >= 3);
}
};
cornerstoneTools.panMultiTouch.setConfiguration(configuration);
cornerstone.loadImage(imageIds[0]).then(function(image) {
cornerstone.displayImage(element, image);
// Set the stack as tool state
cornerstoneTools.addStackStateManager(element, ['stack']);
cornerstoneTools.addToolState(element, 'stack', stack);
cornerstoneTools.touchInput.enable(element);
// Enable all tools we want to use with this element
cornerstoneTools.zoomTouchPinch.activate(element);
//cornerstoneTools.rotateTouch.activate(element);
cornerstoneTools.wwwcTouchDrag.activate(element);
cornerstoneTools.panMultiTouch.activate(element);
// helper function used by the tool button handlers to disable the active tool
// before making a new tool active
function disableAllTools()
{
cornerstoneTools.panTouchDrag.deactivate(element);
cornerstoneTools.rotateTouchDrag.deactivate(element);
cornerstoneTools.rotateTouch.disable(element);
cornerstoneTools.ellipticalRoiTouch.deactivate(element);
cornerstoneTools.angleTouch.deactivate(element);
cornerstoneTools.rectangleRoiTouch.deactivate(element);
cornerstoneTools.lengthTouch.deactivate(element);
cornerstoneTools.probeTouch.deactivate(element);
cornerstoneTools.zoomTouchDrag.deactivate(element);
cornerstoneTools.wwwcTouchDrag.deactivate(element);
cornerstoneTools.stackScrollTouchDrag.deactivate(element);
}
// Tool button event handlers that set the new active tool
var toolSelector = $("#toolSelector");
$('#enableWindowLevelTool').click(function (e) {
disableAllTools();
cornerstoneTools.wwwcTouchDrag.activate(element);
toolSelector.text(e.currentTarget.innerHTML)
});
$('#pan').click(function (e) {
disableAllTools();
cornerstoneTools.panTouchDrag.activate(element);
toolSelector.text(e.currentTarget.innerHTML)
});
$('#rotate').click(function (e) {
disableAllTools();
cornerstoneTools.rotateTouchDrag.activate(element);
toolSelector.text(e.currentTarget.innerHTML)
});
$('#zoom').click(function (e) {
disableAllTools();
cornerstoneTools.zoomTouchPinch.activate(element);
toolSelector.text(e.currentTarget.innerHTML)
});
$('#zoomDrag').click(function (e) {
disableAllTools();
cornerstoneTools.zoomTouchDrag.activate(element);
toolSelector.text(e.currentTarget.innerHTML)
});
$('#stackScroll').click(function (e) {
disableAllTools();
cornerstoneTools.stackScrollTouchDrag.activate(element);
toolSelector.text(e.currentTarget.innerHTML)
});
$('#length').click(function (e) {
disableAllTools();
cornerstoneTools.lengthTouch.activate(element);
toolSelector.text(e.currentTarget.innerHTML)
});
$('#probe').click(function (e) {
disableAllTools();
cornerstoneTools.probeTouch.activate(element);
toolSelector.text(e.currentTarget.innerHTML)
});
$('#circleroi').click(function (e) {
disableAllTools();
cornerstoneTools.ellipticalRoiTouch.activate(element);
toolSelector.text(e.currentTarget.innerHTML)
});
$('#rectangleroi').click(function (e) {
disableAllTools();
cornerstoneTools.rectangleRoiTouch.activate(element);
toolSelector.text(e.currentTarget.innerHTML)
});
$('#angle').click(function (e) {
disableAllTools();
cornerstoneTools.angleTouch.activate(element);
toolSelector.text(e.currentTarget.innerHTML)
});
$('#clearToolData').click(function() {
disableAllTools();
cornerstoneTools.wwwcTouchDrag.activate(element);
cornerstoneTools.zoomTouchPinch.activate(element);
toolSelector.html('Select tool <span class="caret"></span>')
var toolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager;
// Note that this only works on ImageId-specific tool state managers (for now)
toolStateManager.clear(element)
cornerstone.updateImage(element);
});
$('#resetViewport').click(function() {
var canvas = $('#dicomImage canvas').get(0);
var enabledElement = cornerstone.getEnabledElement(element);
var viewport = cornerstone.getDefaultViewport(canvas, enabledElement.image)
cornerstone.setViewport(element, viewport);
});
});
</script>
</html>