# HG changeset patch # User Alain Mazy # Date 1572902193 -3600 # Node ID 6bc766eab0dea3aea866638b17c0420e59df0304 # Parent 35e798b16b65bce43928617ca648a5bc9ac2adb7# Parent f00deb2b4733564b761953be049da8afcb02a0e0 merge diff -r 35e798b16b65 -r 6bc766eab0de .hgtags --- a/.hgtags Mon Nov 04 22:16:04 2019 +0100 +++ b/.hgtags Mon Nov 04 22:16:33 2019 +0100 @@ -37,3 +37,4 @@ 5a18e6a395bc3fcc2915bb169f145027da0702a5 toa2019102301 df76d308303107cdd327790d3a92b58fa4500f76 toa2019102302 640feb146fa8186ac4e5ecb87d18b267750ccec3 toa2019102801 +33b0a762e98ade4e1f00e26bf865b417269443fb toa2019110401 diff -r 35e798b16b65 -r 6bc766eab0de Framework/Loaders/OrthancMultiframeVolumeLoader.cpp --- a/Framework/Loaders/OrthancMultiframeVolumeLoader.cpp Mon Nov 04 22:16:04 2019 +0100 +++ b/Framework/Loaders/OrthancMultiframeVolumeLoader.cpp Mon Nov 04 22:16:33 2019 +0100 @@ -185,7 +185,6 @@ "No support for multiframe instances with transfer syntax: " + transferSyntaxUid_); } } - void OrthancMultiframeVolumeLoader::SetTransferSyntax(const std::string& transferSyntax) { @@ -254,6 +253,15 @@ target = le16toh(*reinterpret_cast(source)); } + ORTHANC_FORCE_INLINE + static void CopyPixel(int16_t& target, const void* source) + { + // byte swapping is the same for unsigned and signed integers + // (the sign bit is always stored with the MSByte) + uint16_t* targetUp = reinterpret_cast(&target); + CopyPixel(*targetUp, source); + } + template void OrthancMultiframeVolumeLoader::CopyPixelData(const std::string& pixelData) { @@ -293,7 +301,6 @@ for (unsigned int x = 0; x < width; x++) { CopyPixel(*target, source); - target ++; source += bpp; } @@ -311,6 +318,9 @@ case Orthanc::PixelFormat_Grayscale16: CopyPixelData(pixelData); break; + case Orthanc::PixelFormat_SignedGrayscale16: + CopyPixelData(pixelData); + break; default: throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); }