changeset 1119:6bc766eab0de

merge
author Alain Mazy <alain@mazy.be>
date Mon, 04 Nov 2019 22:16:33 +0100
parents 35e798b16b65 (current diff) f00deb2b4733 (diff)
children 0073f95a1df1 4663f158c748
files
diffstat 2 files changed, 13 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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<const uint16_t*>(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<uint16_t*>(&target);
+    CopyPixel(*targetUp, source);
+  }
+
   template <typename T>
   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<uint16_t>(pixelData);
         break;
+      case Orthanc::PixelFormat_SignedGrayscale16:
+        CopyPixelData<int16_t>(pixelData);
+        break;
       default:
         throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
     }