UNPKG

@cleerlycode/cornerstone-wado-image-loader

Version:
135 lines (96 loc) 5.32 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>imageLoader/wadors/loadImage.js - Documentation</title> <script src="scripts/prettify/prettify.js"></script> <script src="scripts/prettify/lang-css.js"></script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc.css"> </head> <body> <input type="checkbox" id="nav-trigger" class="nav-trigger" /> <label for="nav-trigger" class="navicon-button x"> <div class="navicon"></div> </label> <label for="nav-trigger" class="overlay"></label> <nav> <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#addTask">addTask</a></li><li><a href="global.html#arrayBufferToString">arrayBufferToString</a></li><li><a href="global.html#cacheSizeInBytes">cacheSizeInBytes</a></li><li><a href="global.html#cancelTask">cancelTask</a></li><li><a href="global.html#framesAreFragmented">framesAreFragmented</a></li><li><a href="global.html#getNumberString">getNumberString</a></li><li><a href="global.html#getNumberValues">getNumberValues</a></li><li><a href="global.html#getStatistics">getStatistics</a></li><li><a href="global.html#getTransferSyntaxForContentType">getTransferSyntaxForContentType</a></li><li><a href="global.html#getUncompressedImageFrame">getUncompressedImageFrame</a></li><li><a href="global.html#getValue">getValue</a></li><li><a href="global.html#handleMessageFromWorker">handleMessageFromWorker</a></li><li><a href="global.html#handler">handler</a></li><li><a href="global.html#initialize">initialize</a></li><li><a href="global.html#loadCodecs">loadCodecs</a></li><li><a href="global.html#loadWebWorkerTask">loadWebWorkerTask</a></li><li><a href="global.html#registerLoaders">registerLoaders</a></li><li><a href="global.html#registerTaskHandler">registerTaskHandler</a></li><li><a href="global.html#setPixelDataType">setPixelDataType</a></li><li><a href="global.html#setTaskPriority">setTaskPriority</a></li><li><a href="global.html#spawnWebWorker">spawnWebWorker</a></li><li><a href="global.html#startTaskOnWebWorker">startTaskOnWebWorker</a></li><li><a href="global.html#unpackBinaryFrame">unpackBinaryFrame</a></li></ul> </nav> <div id="main"> <h1 class="page-title">imageLoader/wadors/loadImage.js</h1> <section> <article> <pre class="prettyprint source linenums"><code>import metaDataManager from './metaDataManager.js'; import getPixelData from './getPixelData.js'; import createImage from '../createImage.js'; /** * Helper method to extract the transfer-syntax from the response of the server. * @param {string} contentType The value of the content-type header as returned by the WADO-RS server. * @return The transfer-syntax as announced by the server, or Implicit Little Endian by default. */ export function getTransferSyntaxForContentType (contentType) { let transferSyntax = '1.2.840.10008.1.2'; // Default is Implicit Little Endian. if (contentType) { // Browse through the content type parameters const parameters = contentType.split(';'); for (const parameterIndex in parameters) { let parameter = parameters[parameterIndex]; // Look for a transfer-syntax=XXXX pair const parameterValues = parameter.split('='); if (parameterValues.length !== 2) { continue; } if (parameterValues[0].trim() === 'transfer-syntax') { transferSyntax = parameterValues[1].trim() || transferSyntax; } } } return transferSyntax; } function loadImage (imageId, options) { const start = new Date().getTime(); const uri = imageId.substring(7); const promise = new Promise((resolve, reject) => { // check to make sure we have metadata for this imageId const metaData = metaDataManager.get(imageId); if (metaData === undefined) { const error = new Error(`no metadata for imageId ${imageId}`); return reject(error); } // TODO: load bulk data items that we might need const mediaType = 'multipart/related; type="application/octet-stream"'; // 'image/dicom+jp2'; // get the pixel data from the server getPixelData(uri, imageId, mediaType).then((result) => { const transferSyntax = getTransferSyntaxForContentType(result.contentType); const pixelData = result.imageFrame.pixelData; const imagePromise = createImage(imageId, pixelData, transferSyntax, options); imagePromise.then((image) => { // add the loadTimeInMS property const end = new Date().getTime(); image.loadTimeInMS = end - start; resolve(image); }, reject); }, reject); }); return { promise, cancelFn: undefined }; } export default loadImage; </code></pre> </article> </section> </div> <br class="clear"> <footer> Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> using the <a href="https://github.com/clenemt/docdash">docdash</a> theme. </footer> <script>prettyPrint();</script> <script src="scripts/linenumber.js"></script> </body> </html>