diff Core/DicomParsing/MemoryBufferTranscoder.cpp @ 3944:aae045f802f4 transcoding

preparing simplified interface for IDicomTranscoder
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 19 May 2020 10:17:06 +0200
parents b99acc213937
children 0b3256c3ee14
line wrap: on
line diff
--- a/Core/DicomParsing/MemoryBufferTranscoder.cpp	Mon May 18 21:37:31 2020 +0200
+++ b/Core/DicomParsing/MemoryBufferTranscoder.cpp	Tue May 19 10:17:06 2020 +0200
@@ -86,8 +86,8 @@
     std::set<DicomTransferSyntax> allowedSyntaxes;
     allowedSyntaxes.insert(targetSyntax);
 
-    if (Transcode(target, hasSopInstanceUidChanged,
-                  data, source.size(), allowedSyntaxes, allowNewSopInstanceUid))
+    if (TranscodeBuffer(target, hasSopInstanceUidChanged,
+                        data, source.size(), allowedSyntaxes, allowNewSopInstanceUid))
     {
       CheckTargetSyntax(target, allowedSyntaxes);
       return true;
@@ -109,8 +109,8 @@
     bool hasSopInstanceUidChanged;
     
     std::string target;
-    if (Transcode(target, hasSopInstanceUidChanged,
-                  buffer, size, allowedSyntaxes, allowNewSopInstanceUid))
+    if (TranscodeBuffer(target, hasSopInstanceUidChanged,
+                        buffer, size, allowedSyntaxes, allowNewSopInstanceUid))
     {
       CheckTargetSyntax(target, allowedSyntaxes);
       
@@ -123,4 +123,27 @@
       return NULL;
     }
   }
+
+
+  bool MemoryBufferTranscoder::Transcode(DicomImage& target,
+                                         bool& hasSopInstanceUidChanged /* out */,
+                                         DicomImage& source,
+                                         const std::set<DicomTransferSyntax>& allowedSyntaxes,
+                                         bool allowNewSopInstanceUid)
+  {
+    target.Clear();
+    
+    std::string buffer;
+    if (TranscodeBuffer(buffer, hasSopInstanceUidChanged, source.GetBufferData(),
+                        source.GetBufferSize(), allowedSyntaxes, allowNewSopInstanceUid))
+    {
+      CheckTargetSyntax(buffer, allowedSyntaxes);  // For debug only
+      target.AcquireBuffer(buffer);
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
 }