diff Plugins/Samples/Common/OrthancPluginCppWrapper.cpp @ 3919:6f11b3233a06 transcoding

OrthancPluginTranscodeDicomInstance() and OrthancPluginSerializeDicomInstance()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 12 May 2020 12:38:27 +0200
parents 0e3849268a55
children f6ccff28fbed
line wrap: on
line diff
--- a/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp	Mon May 11 21:12:40 2020 +0200
+++ b/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp	Tue May 12 12:38:27 2020 +0200
@@ -3297,11 +3297,15 @@
   void DicomInstance::GetRawFrame(std::string& target,
                                   unsigned int frameIndex) const
   {
-    OrthancPluginMemoryBuffer buffer;
+    MemoryBuffer buffer;
     OrthancPluginErrorCode code = OrthancPluginGetInstanceRawFrame(
-      GetGlobalContext(), &buffer, instance_, frameIndex);
-
-    if (code != OrthancPluginErrorCode_Success)
+      GetGlobalContext(), *buffer, instance_, frameIndex);
+
+    if (code == OrthancPluginErrorCode_Success)
+    {
+      buffer.ToString(target);
+    }
+    else
     {
       ORTHANC_PLUGINS_THROW_PLUGIN_ERROR_CODE(code);
     }
@@ -3309,7 +3313,6 @@
 #endif
 
 
-
 #if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 7, 0)  
   OrthancImage* DicomInstance::GetDecodedFrame(unsigned int frameIndex) const
   {
@@ -3326,4 +3329,43 @@
     }
   }
 #endif  
+
+
+#if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 7, 0)
+  void DicomInstance::Serialize(std::string& target) const
+  {
+    MemoryBuffer buffer;
+    OrthancPluginErrorCode code = OrthancPluginSerializeDicomInstance(
+      GetGlobalContext(), *buffer, instance_);
+
+    if (code == OrthancPluginErrorCode_Success)
+    {
+      buffer.ToString(target);
+    }
+    else
+    {
+      ORTHANC_PLUGINS_THROW_PLUGIN_ERROR_CODE(code);
+    }
+  }
+#endif
+  
+
+#if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 7, 0)
+  DicomInstance* DicomInstance::Transcode(const void* buffer,
+                                          size_t size,
+                                          const std::string& transferSyntax)
+  {
+    OrthancPluginDicomInstance* instance = OrthancPluginTranscodeDicomInstance(
+      GetGlobalContext(), buffer, size, transferSyntax.c_str());
+
+    if (instance == NULL)
+    {
+      ORTHANC_PLUGINS_THROW_EXCEPTION(Plugin);
+    }
+    else
+    {
+      return new DicomInstance(instance);
+    }
+  }
+#endif
 }