UNPKG

@thewtex/vtk.js-esm

Version:

Visualization Toolkit for the Web

66 lines (53 loc) 2.72 kB
import vtkXMLReader from './XMLReader.js'; import macro from '../../macro.js'; import vtkImageData from '../../Common/DataModel/ImageData.js'; // vtkXMLImageDataReader methods // ---------------------------------------------------------------------------- function vtkXMLImageDataReader(publicAPI, model) { // Set our className model.classHierarchy.push('vtkXMLImageDataReader'); publicAPI.parseXML = function (rootElem, type, compressor, byteOrder, headerType) { var imageDataElem = rootElem.getElementsByTagName(model.dataType)[0]; var origin = imageDataElem.getAttribute('Origin').split(' ').map(function (t) { return Number(t); }); var spacing = imageDataElem.getAttribute('Spacing').split(' ').map(function (t) { return Number(t); }); var pieces = imageDataElem.getElementsByTagName('Piece'); var nbPieces = pieces.length; for (var outputIndex = 0; outputIndex < nbPieces; outputIndex++) { // Create image data var piece = pieces[outputIndex]; var extent = piece.getAttribute('Extent').split(' ').map(function (t) { return Number(t); }); var imageData = vtkImageData.newInstance({ origin: origin, spacing: spacing, extent: extent }); // Fill data vtkXMLReader.processFieldData(imageData.getNumberOfPoints(), piece.getElementsByTagName('PointData')[0], imageData.getPointData(), compressor, byteOrder, headerType, model.binaryBuffer); vtkXMLReader.processFieldData(imageData.getNumberOfCells(), piece.getElementsByTagName('CellData')[0], imageData.getCellData(), compressor, byteOrder, headerType, model.binaryBuffer); // Add new output model.output[outputIndex] = imageData; } }; } // ---------------------------------------------------------------------------- // Object factory // ---------------------------------------------------------------------------- var DEFAULT_VALUES = { dataType: 'ImageData' }; // ---------------------------------------------------------------------------- function extend(publicAPI, model) { var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; Object.assign(model, DEFAULT_VALUES, initialValues); vtkXMLReader.extend(publicAPI, model, initialValues); vtkXMLImageDataReader(publicAPI, model); } // ---------------------------------------------------------------------------- var newInstance = macro.newInstance(extend, 'vtkXMLImageDataReader'); // ---------------------------------------------------------------------------- var vtkXMLImageDataReader$1 = { newInstance: newInstance, extend: extend }; export default vtkXMLImageDataReader$1; export { extend, newInstance };