diff OrthancServer/Sources/ServerEnumerations.cpp @ 4472:28a4baadde17

rename TransferSyntax enum as TransferSyntaxGroup
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 26 Jan 2021 10:18:50 +0100
parents 5ffa4e14e4bd
children 68f52897c119
line wrap: on
line diff
--- a/OrthancServer/Sources/ServerEnumerations.cpp	Tue Jan 26 09:15:05 2021 +0100
+++ b/OrthancServer/Sources/ServerEnumerations.cpp	Tue Jan 26 10:18:50 2021 +0100
@@ -416,36 +416,116 @@
   }
 
 
-  const char* EnumerationToString(TransferSyntax syntax)
+  const char* EnumerationToString(TransferSyntaxGroup syntax)
   {
     switch (syntax)
     {
-      case TransferSyntax_Deflated:
+      case TransferSyntaxGroup_Deflated:
         return "Deflated";
 
-      case TransferSyntax_Jpeg:
+      case TransferSyntaxGroup_Jpeg:
         return "JPEG";
 
-      case TransferSyntax_Jpeg2000:
+      case TransferSyntaxGroup_Jpeg2000:
         return "JPEG2000";
 
-      case TransferSyntax_JpegLossless:
+      case TransferSyntaxGroup_JpegLossless:
         return "JPEG Lossless";
 
-      case TransferSyntax_Jpip:
+      case TransferSyntaxGroup_Jpip:
         return "JPIP";
 
-      case TransferSyntax_Mpeg2:
+      case TransferSyntaxGroup_Mpeg2:
         return "MPEG2";
 
-      case TransferSyntax_Mpeg4:
+      case TransferSyntaxGroup_Mpeg4:
         return "MPEG4";
 
-      case TransferSyntax_Rle:
+      case TransferSyntaxGroup_Rle:
         return "RLE";
 
       default: 
         throw OrthancException(ErrorCode_ParameterOutOfRange);
     }
   }
+
+
+  void GetTransferSyntaxGroup(std::set<DicomTransferSyntax>& target,
+                              TransferSyntaxGroup source,
+                              bool clearTarget)
+  {
+    if (clearTarget)
+    {
+      target.clear();
+    }
+
+    switch (source)
+    {    
+      // Transfer syntaxes supported since Orthanc 0.7.2
+      case TransferSyntaxGroup_Deflated:
+        target.insert(DicomTransferSyntax_DeflatedLittleEndianExplicit);
+        break;
+        
+      case TransferSyntaxGroup_Jpeg:
+        target.insert(DicomTransferSyntax_JPEGProcess1);
+        target.insert(DicomTransferSyntax_JPEGProcess2_4);
+        target.insert(DicomTransferSyntax_JPEGProcess3_5);
+        target.insert(DicomTransferSyntax_JPEGProcess6_8);
+        target.insert(DicomTransferSyntax_JPEGProcess7_9);
+        target.insert(DicomTransferSyntax_JPEGProcess10_12);
+        target.insert(DicomTransferSyntax_JPEGProcess11_13);
+        target.insert(DicomTransferSyntax_JPEGProcess14);
+        target.insert(DicomTransferSyntax_JPEGProcess15);
+        target.insert(DicomTransferSyntax_JPEGProcess16_18);
+        target.insert(DicomTransferSyntax_JPEGProcess17_19);
+        target.insert(DicomTransferSyntax_JPEGProcess20_22);
+        target.insert(DicomTransferSyntax_JPEGProcess21_23);
+        target.insert(DicomTransferSyntax_JPEGProcess24_26);
+        target.insert(DicomTransferSyntax_JPEGProcess25_27);
+        target.insert(DicomTransferSyntax_JPEGProcess28);
+        target.insert(DicomTransferSyntax_JPEGProcess29);
+        target.insert(DicomTransferSyntax_JPEGProcess14SV1);
+        break;
+
+      case TransferSyntaxGroup_Jpeg2000:
+        target.insert(DicomTransferSyntax_JPEG2000);
+        target.insert(DicomTransferSyntax_JPEG2000LosslessOnly);
+        target.insert(DicomTransferSyntax_JPEG2000Multicomponent);
+        target.insert(DicomTransferSyntax_JPEG2000MulticomponentLosslessOnly);
+        break;
+
+      case TransferSyntaxGroup_JpegLossless:
+        target.insert(DicomTransferSyntax_JPEGLSLossless);
+        target.insert(DicomTransferSyntax_JPEGLSLossy);
+        break;
+
+      case TransferSyntaxGroup_Jpip:
+        target.insert(DicomTransferSyntax_JPIPReferenced);
+        target.insert(DicomTransferSyntax_JPIPReferencedDeflate);
+        break;
+
+      case TransferSyntaxGroup_Mpeg2:
+        target.insert(DicomTransferSyntax_MPEG2MainProfileAtMainLevel);
+        target.insert(DicomTransferSyntax_MPEG2MainProfileAtHighLevel);
+        break;
+
+      case TransferSyntaxGroup_Mpeg4:
+#if DCMTK_VERSION_NUMBER >= 361
+        // New in Orthanc 1.6.0
+        target.insert(DicomTransferSyntax_MPEG4BDcompatibleHighProfileLevel4_1);
+        target.insert(DicomTransferSyntax_MPEG4HighProfileLevel4_1);
+        target.insert(DicomTransferSyntax_MPEG4HighProfileLevel4_2_For2DVideo);
+        target.insert(DicomTransferSyntax_MPEG4HighProfileLevel4_2_For3DVideo);
+        target.insert(DicomTransferSyntax_MPEG4StereoHighProfileLevel4_2);
+#endif
+        break;
+        
+      case TransferSyntaxGroup_Rle:
+        target.insert(DicomTransferSyntax_RLELossless);
+        break;
+
+      default:
+        throw OrthancException(ErrorCode_ParameterOutOfRange);
+    }
+  }
 }