all files / src/webWorker/decodeTask/decoders/ decodeLittleEndian.js

44.44% Statements 8/18
21.43% Branches 3/14
100% Functions 1/1
44.44% Lines 8/18
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35                                                     
function decodeLittleEndian (imageFrame, pixelData) {
  let arrayBuffer = pixelData.buffer;
  let offset = pixelData.byteOffset;
  const length = pixelData.length;
 
  Eif (imageFrame.bitsAllocated === 16) {
    // if pixel data is not aligned on even boundary, shift it so we can create the 16 bit array
    // buffers on it
    Iif (offset % 2) {
      arrayBuffer = arrayBuffer.slice(offset);
      offset = 0;
    }
 
    Iif (imageFrame.pixelRepresentation === 0) {
      imageFrame.pixelData = new Uint16Array(arrayBuffer, offset, length / 2);
    } else {
      imageFrame.pixelData = new Int16Array(arrayBuffer, offset, length / 2);
    }
  } else if (imageFrame.bitsAllocated === 8 || imageFrame.bitsAllocated === 1) {
    imageFrame.pixelData = pixelData;
  } else if (imageFrame.bitsAllocated === 32) {
    // if pixel data is not aligned on even boundary, shift it
    if (offset % 2) {
      arrayBuffer = arrayBuffer.slice(offset);
      offset = 0;
    }
 
    imageFrame.pixelData = new Float32Array(arrayBuffer, offset, length / 4);
  }
 
  return imageFrame;
}
 
export default decodeLittleEndian;