diff OrthancServer/Plugins/Engine/OrthancPlugins.cpp @ 5303:9504de20d43d am-experimental

new SDK function OrthancPluginEncodeDicomWebJson3 that allows injecting an empty PixelData element at the end
author Alain Mazy <am@osimis.io>
date Thu, 25 May 2023 17:19:52 +0200
parents e7529e6241d2
children
line wrap: on
line diff
--- a/OrthancServer/Plugins/Engine/OrthancPlugins.cpp	Wed May 24 08:56:41 2023 +0200
+++ b/OrthancServer/Plugins/Engine/OrthancPlugins.cpp	Thu May 25 17:19:52 2023 +0200
@@ -1052,12 +1052,13 @@
 
       void Apply(char** target,
                  bool isJson,
-                 const ParsedDicomFile& dicom)
+                 const ParsedDicomFile& dicom,
+                 bool injectEmptyPixelData)
       {
         DicomWebJsonVisitor visitor;
         visitor.SetFormatter(*this);
 
-        dicom.Apply(visitor);
+        dicom.Apply(visitor, injectEmptyPixelData);
 
         std::string s;
 
@@ -1077,10 +1078,11 @@
       void Apply(char** target,
                  bool isJson,
                  const void* dicom,
-                 size_t dicomSize) 
+                 size_t dicomSize,
+                 bool injectEmptyPixelData) 
       {
         ParsedDicomFile parsed(dicom, dicomSize);
-        Apply(target, isJson, parsed);
+        Apply(target, isJson, parsed, injectEmptyPixelData);
       }
     };
   }
@@ -3636,7 +3638,8 @@
         DicomWebBinaryFormatter formatter(p.dicomWebCallback, p.dicomWebPayload);
         formatter.Apply(p.targetStringToFree,
                         (service == _OrthancPluginService_GetInstanceDicomWebJson),
-                        instance.GetParsedDicomFile());
+                        instance.GetParsedDicomFile(),
+                        false);
         return;
       }
 
@@ -5195,7 +5198,7 @@
         DicomWebBinaryFormatter formatter(p.callback);
         formatter.Apply(p.target,
                         (service == _OrthancPluginService_EncodeDicomWebJson),
-                        p.dicom, p.dicomSize);
+                        p.dicom, p.dicomSize, false);
         return true;
       }
 
@@ -5208,7 +5211,19 @@
         DicomWebBinaryFormatter formatter(p.callback, p.payload);
         formatter.Apply(p.target,
                         (service == _OrthancPluginService_EncodeDicomWebJson2),
-                        p.dicom, p.dicomSize);
+                        p.dicom, p.dicomSize, false);
+        return true;
+      }
+
+      case _OrthancPluginService_EncodeDicomWebJson3:
+      {
+        const _OrthancPluginEncodeDicomWeb3& p =
+          *reinterpret_cast<const _OrthancPluginEncodeDicomWeb3*>(parameters);
+
+        DicomWebBinaryFormatter formatter(p.callback, p.payload);
+        formatter.Apply(p.target,
+                        (service == _OrthancPluginService_EncodeDicomWebJson3),
+                        p.dicom, p.dicomSize, p.injectEmptyPixelData);
         return true;
       }