This commit is contained in:
2025-02-26 14:49:25 +07:00
commit 1c1d9c4474
6403 changed files with 1953774 additions and 0 deletions

View File

@@ -0,0 +1,115 @@
/**
* Application GUI.
*
* Snapshots were created using synedra View Personal (http://www.synedra.com),
* version 14 for Microsoft Windows:
* - Right click on the thumbnail in the left 'Document tree area',
* - Choose 'Convert to JPEG'.
*/
// Default window level presets.
dwv.tool.defaultpresets = {};
// Image decoders (for web workers)
dwv.image.decoderScripts = {
"jpeg2000": "../../decoders/pdfjs/decode-jpeg2000.js",
"jpeg-lossless": "../../decoders/rii-mango/decode-jpegloss.js",
"jpeg-baseline": "../../decoders/pdfjs/decode-jpegbaseline.js"
};
// Window
dwv.gui.getWindowSize = dwv.gui.base.getWindowSize;
// get element
dwv.gui.getElement = dwv.gui.base.getElement;
// Progress
dwv.gui.displayProgress = function (/*percent*/) {};
// check browser support
dwv.browser.check();
// test data line
dwv.addDataLine = function (id, fileroot, doc)
{
var mainDiv = document.getElementById("data-lines");
// dwv container
var dwvDiv = document.createElement("div");
dwvDiv.id = id;
var layConDiv = document.createElement("div");
layConDiv.className = "layerContainer";
var imgCanvas = document.createElement("canvas");
imgCanvas.className = "imageLayer";
layConDiv.appendChild(imgCanvas);
dwvDiv.appendChild(layConDiv);
mainDiv.appendChild(dwvDiv);
// dwv application
var config = {
"containerDivId": id,
"skipLoadUrl": true
};
var url = "../data/" + fileroot + ".dcm";
var app = new dwv.App();
app.init(config);
// display loading time
var listener = function (event) {
if (event.type === "load-start") {
console.time("load-data::"+fileroot);
}
else {
console.timeEnd("load-data::"+fileroot);
}
};
app.addEventListener("load-start", listener);
app.addEventListener("load-end", listener);
// load data
app.loadURLs([url]);
// image
var image = document.createElement("img");
image.src = "./images/" + fileroot + ".jpg";
image.setAttribute("class", "snapshot");
mainDiv.appendChild(image);
// doc
var docDiv = document.createElement("div");
docDiv.setAttribute("class", "doc");
var docUl = document.createElement("ul");
var keys = Object.keys(doc);
for ( var i = 0; i < keys.length; ++i ) {
var li = document.createElement("li");
var spanKey = document.createElement("span");
spanKey.setAttribute("class", "key");
spanKey.appendChild( document.createTextNode(keys[i]) );
var spanValue = document.createElement("span");
spanValue.setAttribute("class", "value");
spanValue.appendChild( document.createTextNode(doc[keys[i]]) );
if ( keys[i] === "origin" ) {
var spanOrig = document.createElement("span");
spanOrig.setAttribute("class", "path");
spanOrig.setAttribute("title", doc.path);
spanOrig.appendChild( document.createTextNode(doc[keys[i]]) );
li.appendChild( spanKey );
li.appendChild( document.createTextNode( ": " ) );
li.appendChild( spanOrig );
docUl.appendChild(li);
}
else if ( keys[i] === "path" ) {
// nothing to do
}
else {
li.appendChild( spanKey );
li.appendChild( document.createTextNode( ": " ) );
li.appendChild( spanValue );
docUl.appendChild(li);
}
}
docDiv.appendChild(docUl);
mainDiv.appendChild(docDiv);
// separator
var sepDiv = document.createElement("div");
sepDiv.setAttribute("class", "separator");
mainDiv.appendChild(sepDiv);
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -0,0 +1,142 @@
<!DOCTYPE html>
<html>
<head>
<title>DWV DICOM jpg Check</title>
<meta charset="UTF-8">
<meta name="description" content="DICOM Web Viewer (DWV) simple version">
<meta name="keywords" content="DICOM,HTML5,JavaScript,medical,imaging,DWV">
<!-- Style -->
<style type="text/css">
body { font-family: Arial, Helvetica, sans-serif; }
.snapshot {
float: left; margin: 5px;
max-width: 200px; max-height: 200px;
}
.layerContainer {
float: left; margin: 5px;
width: 200px; height: 200px;
}
.doc { float: left; margin: 5px; }
.path {
border-bottom: 1px dashed #999;
text-decoration: none;
}
.key {
color: #999;
}
.separator { clear: both; }
.footer {
margin-top: 15px; padding: 5px;
background-color: #ccc;
}
</style>
<!-- Third party (dwv) -->
<script type="text/javascript" src="../../ext/modernizr/modernizr.js"></script>
<!-- Third party (load) -->
<script type="text/javascript" src="../../decoders/rii-mango/lossless-min.js"></script>
<script type="text/javascript" src="../../decoders/pdfjs/jpg.js"></script>
<!-- Local -->
<script type="text/javascript" src="../../src/app/application.js"></script>
<script type="text/javascript" src="../../src/app/viewController.js"></script>
<script type="text/javascript" src="../../src/dicom/dicomParser.js"></script>
<script type="text/javascript" src="../../src/dicom/dictionary.js"></script>
<script type="text/javascript" src="../../src/gui/filter.js"></script>
<script type="text/javascript" src="../../src/gui/generic.js"></script>
<script type="text/javascript" src="../../src/gui/help.js"></script>
<script type="text/javascript" src="../../src/gui/html.js"></script>
<script type="text/javascript" src="../../src/gui/info.js"></script>
<script type="text/javascript" src="../../src/gui/layer.js"></script>
<script type="text/javascript" src="../../src/gui/loader.js"></script>
<script type="text/javascript" src="../../src/gui/style.js"></script>
<script type="text/javascript" src="../../src/gui/tools.js"></script>
<script type="text/javascript" src="../../src/gui/undo.js"></script>
<script type="text/javascript" src="../../src/image/decoder.js"></script>
<script type="text/javascript" src="../../src/image/dicomBufferToView.js"></script>
<script type="text/javascript" src="../../src/image/filter.js"></script>
<script type="text/javascript" src="../../src/image/geometry.js"></script>
<script type="text/javascript" src="../../src/image/image.js"></script>
<script type="text/javascript" src="../../src/image/luts.js"></script>
<script type="text/javascript" src="../../src/image/view.js"></script>
<script type="text/javascript" src="../../src/utils/thread.js"></script>
<script type="text/javascript" src="../../src/image/dicomBufferToView.js"></script>
<script type="text/javascript" src="../../src/io/urlsLoader.js"></script>
<script type="text/javascript" src="../../src/io/dicomDataLoader.js"></script>
<script type="text/javascript" src="../../src/math/bucketQueue.js"></script>
<script type="text/javascript" src="../../src/math/matrix.js"></script>
<script type="text/javascript" src="../../src/math/point.js"></script>
<script type="text/javascript" src="../../src/math/scissors.js"></script>
<script type="text/javascript" src="../../src/math/shapes.js"></script>
<script type="text/javascript" src="../../src/math/stats.js"></script>
<script type="text/javascript" src="../../src/math/vector.js"></script>
<script type="text/javascript" src="../../src/tools/toolbox.js"></script>
<script type="text/javascript" src="../../src/tools/undo.js"></script>
<script type="text/javascript" src="../../src/tools/windowLevel.js"></script>
<script type="text/javascript" src="../../src/utils/browser.js"></script>
<script type="text/javascript" src="../../src/utils/progress.js"></script>
<script type="text/javascript" src="../../src/utils/string.js"></script>
<!-- Local -->
<script type="text/javascript" src="appgui.js"></script>
<!-- Launch the app -->
<script type="text/javascript">
// launch when page is loaded
document.addEventListener("DOMContentLoaded", function (/*event*/)
{
dwv.addDataLine("dwv0", "leadtools-8BitsJpegLossyGrayScale", {
'origin': 'LeadTools',
'path': '8BitsJpegLossyGrayScale.zip',
't-syntax': '1.2.840.10008.1.2.4.50 (jpeg baseline)',
'modality': 'OT', 'photo': 'MONOCHROME2',
'bits': '8-8-7', 'pixel-vr': 'OW',
});
dwv.addDataLine("dwv1", "nema-mr1_jply", {
'origin': 'Nema WG04',
'path': 'compsamples_jpeg/IMAGES/JPLY/MR1_JPLY',
't-syntax': '1.2.840.10008.1.2.4.51 (jpeg baseline)',
'modality': 'MR', 'photo': 'MONOCHROME2',
'bits': '16-12-11', 'pixel-vr': 'OB',
});
dwv.addDataLine("dwv2", "nema-nm1_jply", {
'origin': 'Nema WG04',
'path': 'compsamples_jpeg/IMAGES/JPLY/NM1_JPLY',
't-syntax': '1.2.840.10008.1.2.4.51 (jpeg baseline)',
'modality': 'NM', 'photo': 'MONOCHROME2',
'bits': '16-12-11', 'pixel-vr': 'OB',
});
dwv.addDataLine("dwv3", "nema-ct1_jpll", {
'origin': 'Nema WG04',
'path': 'compsamples_jpeg/IMAGES/JPLL/CT1_JPLL',
't-syntax': '1.2.840.10008.1.2.4.70 (jpeg lossless)',
'modality': 'CT', 'photo': 'MONOCHROME2',
'bits': '16-16-15', 'pixel-vr': 'OB',
});
dwv.addDataLine("dwv4", "nema-nm1_jpll", {
'origin': 'Nema WG04',
'path': 'compsamples_jpeg/IMAGES/JPLL/NM1_JPLL',
't-syntax': '1.2.840.10008.1.2.4.70 (jpeg lossless)',
'modality': 'NM', 'photo': 'MONOCHROME2',
'bits': '16-16-15', 'pixel-vr': 'OB',
});
});
</script>
</head>
<body>
<div id="data-lines"></div>
<div class="footer">
<p><b>Missing data</b>: JPEG Lossless, Nonhierarchical (Processes 14) (1.2.840.10008.1.2.4.57) and JPEG-LS (not supported)</p>
<p>Data sources:</p>
<ul>
<li>Nema WG04 (jpeg) <a href="ftp://medical.nema.org/MEDICAL/Dicom/DataSets/WG04/">dataSets</a></li>
<li>Leadtools datasets hosted at <a href="http://www.creatis.insa-lyon.fr/~jpr/PUBLIC/gdcm/gdcmSampleData/ColorDataSetLeadTool/">creatis</a></li>
</ul>
<p>The left image is created with DWV, the right one is a snapshot
generated using <a href="https://www.synedra.com">Synedra</a> View Personnal.</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,142 @@
<!DOCTYPE html>
<html>
<head>
<title>DWV DICOM jpg2000 Check</title>
<meta charset="UTF-8">
<meta name="description" content="DICOM Web Viewer (DWV) simple version">
<meta name="keywords" content="DICOM,HTML5,JavaScript,medical,imaging,DWV">
<!-- Style -->
<style type="text/css">
body { font-family: Arial, Helvetica, sans-serif; }
.snapshot {
float: left; margin: 5px;
max-width: 200px; max-height: 200px;
}
.layerContainer {
float: left; margin: 5px;
width: 200px; height: 200px;
}
.doc { float: left; margin: 5px; }
.path {
border-bottom: 1px dashed #999;
text-decoration: none;
}
.key {
color: #999;
}
.separator { clear: both; }
.footer {
margin-top: 15px; padding: 5px;
background-color: #ccc;
}
</style>
<!-- Third party (dwv) -->
<script type="text/javascript" src="../../ext/modernizr/modernizr.js"></script>
<!-- Third party (load) -->
<script type="text/javascript" src="../../decoders/pdfjs/jpx.js"></script>
<script type="text/javascript" src="../../decoders/pdfjs/util.js"></script>
<script type="text/javascript" src="../../decoders/pdfjs/arithmetic_decoder.js"></script>
<!-- Local -->
<script type="text/javascript" src="../../src/app/application.js"></script>
<script type="text/javascript" src="../../src/app/viewController.js"></script>
<script type="text/javascript" src="../../src/dicom/dicomParser.js"></script>
<script type="text/javascript" src="../../src/dicom/dictionary.js"></script>
<script type="text/javascript" src="../../src/gui/filter.js"></script>
<script type="text/javascript" src="../../src/gui/generic.js"></script>
<script type="text/javascript" src="../../src/gui/help.js"></script>
<script type="text/javascript" src="../../src/gui/html.js"></script>
<script type="text/javascript" src="../../src/gui/info.js"></script>
<script type="text/javascript" src="../../src/gui/layer.js"></script>
<script type="text/javascript" src="../../src/gui/loader.js"></script>
<script type="text/javascript" src="../../src/gui/style.js"></script>
<script type="text/javascript" src="../../src/gui/tools.js"></script>
<script type="text/javascript" src="../../src/gui/undo.js"></script>
<script type="text/javascript" src="../../src/image/decoder.js"></script>
<script type="text/javascript" src="../../src/image/dicomBufferToView.js"></script>
<script type="text/javascript" src="../../src/image/filter.js"></script>
<script type="text/javascript" src="../../src/image/geometry.js"></script>
<script type="text/javascript" src="../../src/image/image.js"></script>
<script type="text/javascript" src="../../src/image/luts.js"></script>
<script type="text/javascript" src="../../src/image/view.js"></script>
<script type="text/javascript" src="../../src/utils/thread.js"></script>
<script type="text/javascript" src="../../src/image/dicomBufferToView.js"></script>
<script type="text/javascript" src="../../src/io/urlsLoader.js"></script>
<script type="text/javascript" src="../../src/io/dicomDataLoader.js"></script>
<script type="text/javascript" src="../../src/math/bucketQueue.js"></script>
<script type="text/javascript" src="../../src/math/matrix.js"></script>
<script type="text/javascript" src="../../src/math/point.js"></script>
<script type="text/javascript" src="../../src/math/scissors.js"></script>
<script type="text/javascript" src="../../src/math/shapes.js"></script>
<script type="text/javascript" src="../../src/math/stats.js"></script>
<script type="text/javascript" src="../../src/math/vector.js"></script>
<script type="text/javascript" src="../../src/tools/toolbox.js"></script>
<script type="text/javascript" src="../../src/tools/undo.js"></script>
<script type="text/javascript" src="../../src/tools/windowLevel.js"></script>
<script type="text/javascript" src="../../src/utils/browser.js"></script>
<script type="text/javascript" src="../../src/utils/progress.js"></script>
<script type="text/javascript" src="../../src/utils/string.js"></script>
<!-- Local -->
<script type="text/javascript" src="appgui.js"></script>
<!-- Launch the app -->
<script type="text/javascript">
// launch when page is loaded
document.addEventListener("DOMContentLoaded", function (/*event*/)
{
dwv.addDataLine("dwv0", "osirix-cerebrix", {
'origin': 'Osirix',
'path': 'CEREBRIX/Neuro Crane/Axial_T1 - 5352/IM-0001-0100.dcm',
't-syntax': '1.2.840.10008.1.2.4.91 (jpeg2000)',
'modality': 'SC', 'photo': 'MONOCHROME2',
'bits': '16-16-15', 'pixel-vr': 'OW',
});
dwv.addDataLine("dwv1", "nema-ct1_j2ki", {
'origin': 'Nema WG04',
'path': 'compsamples_j2k/IMAGES/J2KI/CT1_J2KI',
't-syntax': '1.2.840.10008.1.2.4.91 (jpeg2000)',
'modality': 'CT', 'photo': 'MONOCHROME2',
'bits': '16-16-15', 'pixel-vr': 'OB',
});
dwv.addDataLine("dwv2", "nema-us1_j2ki", {
'origin': 'Nema WG04',
'path': 'compsamples_j2k/IMAGES/J2KI/US1_J2KI',
't-syntax': '1.2.840.10008.1.2.4.91 (jpeg2000)',
'modality': 'US', 'photo': 'YBR_ICT (planar=0)',
'bits': '8-8-7', 'pixel-vr': 'OB',
});
dwv.addDataLine("dwv3", "nema-nm1_j2kr", {
'origin': 'Nema WG04',
'path': 'compsamples_j2k/IMAGES/J2KR/NM1_J2KR',
't-syntax': '1.2.840.10008.1.2.4.90 (jpeg2000)',
'modality': 'NM', 'photo': 'MONOCHROME2',
'bits': '16-16-15', 'pixel-vr': 'OB',
});
dwv.addDataLine("dwv4", "nema-vl2_j2kr", {
'origin': 'Nema WG04',
'path': 'compsamples_j2k/IMAGES/J2KR/VL2_J2KR',
't-syntax': '1.2.840.10008.1.2.4.90 (jpeg2000)',
'modality': 'OT', 'photo': 'YBR_RCT (planar=0)',
'bits': '8-8-7', 'pixel-vr': 'OB',
});
});
</script>
</head>
<body>
<div id="data-lines"></div>
<div class="footer">
<p>Data sources:</p>
<ul>
<li>Osirix <a href="http://www.osirix-viewer.com/datasets/">datasets</a></li>
<li>Nema WG04 (jpeg2000) <a href="ftp://medical.nema.org/MEDICAL/Dicom/DataSets/WG04/">dataSets</a></li>
</ul>
<p>The left image is created with DWV, the right one is a snapshot
generated using <a href="https://www.synedra.com">Synedra</a> View Personnal.</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,153 @@
<!DOCTYPE html>
<html>
<head>
<title>DWV DICOM Check</title>
<meta charset="UTF-8">
<meta name="description" content="DICOM Web Viewer (DWV) simple version">
<meta name="keywords" content="DICOM,HTML5,JavaScript,medical,imaging,DWV">
<!-- Style -->
<style type="text/css">
body { font-family: Arial, Helvetica, sans-serif; }
.snapshot {
float: left; margin: 5px;
max-width: 200px; max-height: 200px;
}
.layerContainer {
float: left; margin: 5px;
width: 200px; height: 200px;
}
.doc { float: left; margin: 5px; }
.path {
border-bottom: 1px dashed #999;
text-decoration: none;
}
.key {
color: #999;
}
.separator { clear: both; }
.footer {
margin-top: 15px; padding: 5px;
background-color: #ccc;
}
</style>
<!-- Third party (dwv) -->
<script type="text/javascript" src="../../ext/modernizr/modernizr.js"></script>
<!-- Local -->
<script type="text/javascript" src="../../src/app/application.js"></script>
<script type="text/javascript" src="../../src/app/viewController.js"></script>
<script type="text/javascript" src="../../src/dicom/dicomParser.js"></script>
<script type="text/javascript" src="../../src/dicom/dictionary.js"></script>
<script type="text/javascript" src="../../src/gui/filter.js"></script>
<script type="text/javascript" src="../../src/gui/generic.js"></script>
<script type="text/javascript" src="../../src/gui/help.js"></script>
<script type="text/javascript" src="../../src/gui/info.js"></script>
<script type="text/javascript" src="../../src/gui/html.js"></script>
<script type="text/javascript" src="../../src/gui/layer.js"></script>
<script type="text/javascript" src="../../src/gui/loader.js"></script>
<script type="text/javascript" src="../../src/gui/style.js"></script>
<script type="text/javascript" src="../../src/gui/tools.js"></script>
<script type="text/javascript" src="../../src/gui/undo.js"></script>
<script type="text/javascript" src="../../src/image/decoder.js"></script>
<script type="text/javascript" src="../../src/image/dicomBufferToView.js"></script>
<script type="text/javascript" src="../../src/image/filter.js"></script>
<script type="text/javascript" src="../../src/image/geometry.js"></script>
<script type="text/javascript" src="../../src/image/image.js"></script>
<script type="text/javascript" src="../../src/image/luts.js"></script>
<script type="text/javascript" src="../../src/image/view.js"></script>
<script type="text/javascript" src="../../src/utils/thread.js"></script>
<script type="text/javascript" src="../../src/image/dicomBufferToView.js"></script>
<script type="text/javascript" src="../../src/io/urlsLoader.js"></script>
<script type="text/javascript" src="../../src/io/dicomDataLoader.js"></script>
<script type="text/javascript" src="../../src/math/bucketQueue.js"></script>
<script type="text/javascript" src="../../src/math/matrix.js"></script>
<script type="text/javascript" src="../../src/math/point.js"></script>
<script type="text/javascript" src="../../src/math/scissors.js"></script>
<script type="text/javascript" src="../../src/math/shapes.js"></script>
<script type="text/javascript" src="../../src/math/stats.js"></script>
<script type="text/javascript" src="../../src/math/vector.js"></script>
<script type="text/javascript" src="../../src/tools/toolbox.js"></script>
<script type="text/javascript" src="../../src/tools/undo.js"></script>
<script type="text/javascript" src="../../src/tools/windowLevel.js"></script>
<script type="text/javascript" src="../../src/utils/browser.js"></script>
<script type="text/javascript" src="../../src/utils/progress.js"></script>
<script type="text/javascript" src="../../src/utils/string.js"></script>
<!-- Local -->
<script type="text/javascript" src="appgui.js"></script>
<!-- Launch the app -->
<script type="text/javascript">
// launch when page is loaded
document.addEventListener("DOMContentLoaded", function (/*event*/)
{
dwv.addDataLine("dwv0", "osirix-toutatix-100", {
'origin': 'Osirix',
'path': 'TOUTATIX/Cardiac 1CTA_CORONARY_ARTERIES_TESTBOLUS (Adult)/Heart w-o 1.5 B25f 55% /IM-0001-0100.dcm',
't-syntax': '1.2.840.10008.1.2.1',
'modality': 'CT', 'photo': 'Monochrome2',
'bits': '16-12-11', 'pixel-vr': 'OW',
});
dwv.addDataLine("dwv1", "osirix-goudurix", {
'origin': 'Osirix',
'path': 'GOUDURIX/Specials 1_CORONARY_CTA_COMBI_SMH/70 % 1.0 B30f/IM-0001-0100.dcm',
't-syntax': '1.2.840.10008.1.2',
'modality': 'CT', 'photo': 'Monochrome2',
'bits': '16-12-11', 'pixel-vr': 'OX',
});
dwv.addDataLine("dwv2", "dicompyler-ct.0", {
'origin': 'dicompyler',
'path': 'dicompyler/ct/ct.0.dcm',
't-syntax': '1.2.840.10008.1.2',
'modality': 'CT', 'photo': 'Monochrome2',
'bits': '16-16-15', 'pixel-vr': 'OX',
});
dwv.addDataLine("dwv3", "gdcm-CR-MONO1-10-chest", {
'origin': 'GDCM (+ DCIM prefix)',
'path': 'CR-MONO1-10-chest.dcm',
't-syntax': '1.2.840.10008.1.2.1',
'modality': 'CR', 'photo': 'Monochrome1',
'bits': '16-10-9', 'pixel-vr': 'OW',
});
dwv.addDataLine("dwv4", "gdcm-CT-MONO2-8-abdo", {
'origin': 'GDCM',
'path': 'CT-MONO2-8-abdo.dcm',
't-syntax': '1.2.840.10008.1.2',
'modality': 'CT', 'photo': 'Monochrome2',
'bits': '8-8-7', 'pixel-vr': 'OX',
});
dwv.addDataLine("dwv5", "gdcm-US-RGB-8-epicard", {
'origin': 'GDCM',
'path': 'US-RGB-8-epicard.dcm',
't-syntax': '1.2.840.10008.1.2.2',
'modality': 'US', 'photo': 'RGB (planar=1)',
'bits': '8-8-7', 'pixel-vr': 'OB',
});
dwv.addDataLine("dwv6", "gdcm-US-RGB-8-esopecho", {
'origin': 'GDCM',
'path': 'US-RGB-8-esopecho.dcm',
't-syntax': '1.2.840.10008.1.2.1',
'modality': 'US', 'photo': 'RGB (planar=0)',
'bits': '8-8-7', 'pixel-vr': 'OB',
});
});
</script>
</head>
<body>
<div id="data-lines"></div>
<div class="footer">
<p><b>Missing data</b>: 8 bits with pixel VR OW</p>
<p>Data sources:</p>
<ul>
<li>Osirix <a href="http://www.osirix-viewer.com/datasets/">datasets</a></li>
<li>Gdcm: :pserver:xxx@cvs.creatis.insa-lyon.fr:2402/cvs/public</li>
</ul>
<p>The left image is created with DWV, the right one is a snapshot
generated using <a href="https://www.synedra.com">Synedra</a> View Personnal.</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,179 @@
// namespaces
var dwv = dwv || {};
/** @namespace */
dwv.tests = dwv.tests || {};
/* global require */
var process = process || {};
/**
* Saucelabs script.
* Has to be launched from the root dir with grunt: `grunt sauce`
* If it is the first time, install all dependencies by running:
* `npm install` (from the root dir, will install locally).
*
* Results are published publicly at: https://saucelabs.com/u/ivmartel
*
* Removed to solve dependencies... TODO Find another way?
* Gruntfile:
grunt.initConfig({
execute: {
sauce_full: {
options: {
args: ['full']
},
src: ['tests/visual/sauce.js']
}
}
});
grunt.loadNpmTasks('grunt-execute');
grunt.registerTask('sauce', ['execute:sauce_full']);
*/
// selenium webdriver
var webdriver = require('../../node_modules/selenium-webdriver');
// used to update the saucelab job name
var SauceLabs = require("saucelabs");
var saucelabs = new SauceLabs({
username: "ivmartel",
password: "my-password"
});
/**
* Launch a sauce GUI test.
* @see https://wiki.saucelabs.com/display/DOCS/Platform+Configurator
* for saucelabs possibilities.
* @see http://seleniumhq.github.io/selenium/docs/api/javascript/index.html
* for the webdriver API.
*
* @param {Object} caps Desired capabilities for the webdriver. Minimum of
* {'browserName', 'version', 'platform'}.
*/
dwv.tests.sauceTest = function (caps) {
var driver = new webdriver.Builder().
withCapabilities({
'browserName': caps.browserName,
'version': caps.version,
'platform': caps.platform,
'username': saucelabs.options.username,
'accessKey': saucelabs.options.password
}).
usingServer("http://" + saucelabs.options.username + ":" + saucelabs.options.password +
"@ondemand.saucelabs.com:80/wd/hub").
build();
driver.getSession().then(function (sessionid){
driver.sessionID = sessionid.id_;
});
var root = "https://ivmartel.github.io/dwv/demo/stable/viewers/mobile/index.html";
var dataUrl = "https%3A%2F%2Fraw.githubusercontent.com%2Fivmartel%2Fdwv%2Fmaster%2Ftests%2Fdata%2F";
dataUrl += "%3Ffile%3Dbbmri-53323851.dcm";
dataUrl += "%26file%3Dbbmri-53323707.dcm";
dataUrl += "%26file%3Dbbmri-53323563.dcm";
driver.get(root + '?input=' + dataUrl + '&dwvReplaceMode=void').then( function () {
// wait for the tool list to be displayed
return driver.wait(webdriver.until.elementLocated(webdriver.By.className('toolSelect')), 10000);
}).then( function () {
// get the image layer
return driver.findElement(webdriver.By.className('imageLayer'));
}).then( function (element) {
// simulate a mouse move on the image layer
return driver.actions().
mouseDown(element).
mouseMove(element, {x: 0, y: 50}).
mouseUp().
perform();
}).then( function () {
// sleep to allow to refresh
return driver.sleep(5 * 1000);
}).then( function () {
// get the image layer
return driver.findElement(webdriver.By.className('imageLayer'));
}).then( function (element) {
// simulate a mouse move on the image layer
return driver.actions().
mouseDown(element).
mouseMove(element, {x: 0, y: -50}).
mouseUp().
perform();
}).then( function () {
// sleep to allow to refresh
return driver.sleep(5 * 1000);
}).then( function () {
// update the sauce test name and quit
var cb = function () {
console.log("Finished!");
driver.quit();
};
var bname = caps.browserName.toLowerCase();
bname = bname.replace(/\s+/g, '');
saucelabs.updateJob(driver.sessionID, {
name: 'dwv-' + bname,
build: '0.14.0',
passed: true
}, cb);
});
};
dwv.tests.sauceFirefox = function () {
var caps = {
browserName: 'Firefox',
version: '44.0',
platform: 'Linux'
};
dwv.tests.sauceTest(caps);
};
dwv.tests.sauceChrome = function () {
var caps = {
browserName: 'Chrome',
version: '48.0',
platform: 'Windows 10'
};
dwv.tests.sauceTest(caps);
};
dwv.tests.sauceSafari = function () {
var caps = {
browserName: 'Safari',
version: '9.0',
platform: 'OS X 10.11'
};
dwv.tests.sauceTest(caps);
};
dwv.tests.sauceIE = function () {
var caps = {
browserName: 'MicrosoftEdge',
version: '20.10240',
platform: 'Windows 10'
};
dwv.tests.sauceTest(caps);
var caps2 = {
browserName: 'Internet Explorer',
version: '11.0',
platform: 'Windows 10'
};
dwv.tests.sauceTest(caps2);
};
dwv.tests.sauceAndroid = function () {
var caps = {
browserName: 'Android',
version: '5.1',
platform: 'Linux'
};
dwv.tests.sauceTest(caps);
};
// main launcher
if (process.argv.length === 3 && process.argv[2] === "full") {
dwv.tests.sauceFirefox();
//dwv.tests.sauceChrome();
// no mouse actions in safari...
//dwv.tests.sauceSafari();
//dwv.tests.sauceIE();
}