diff OrthancFramework/Sources/DicomFormat/DicomStreamReader.h @ 4493:b57ca702a430

DicomStreamReader::LookupPixelDataOffset()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 04 Feb 2021 11:42:25 +0100
parents d9473bd5ed43
children 39192eb9b43d
line wrap: on
line diff
--- a/OrthancFramework/Sources/DicomFormat/DicomStreamReader.h	Sat Jan 30 18:19:11 2021 +0100
+++ b/OrthancFramework/Sources/DicomFormat/DicomStreamReader.h	Thu Feb 04 11:42:25 2021 +0100
@@ -58,10 +58,13 @@
       virtual bool VisitDatasetTag(const DicomTag& tag,
                                    const ValueRepresentation& vr,
                                    const std::string& value,
-                                   bool isLittleEndian) = 0;
+                                   bool isLittleEndian,
+                                   uint64_t fileOffset) = 0;
     };
     
   private:
+    class PixelDataVisitor;
+    
     enum State
     {
       State_Preamble,
@@ -79,6 +82,7 @@
     DicomTransferSyntax  transferSyntax_;
     DicomTag             danglingTag_;  // Current root-level tag
     ValueRepresentation  danglingVR_;
+    uint64_t             danglingOffset_;
     unsigned int         sequenceDepth_;
     
     bool IsLittleEndian() const;
@@ -94,7 +98,8 @@
 
     void HandleDatasetExplicitLength(uint32_t length);
     
-    void HandleDatasetExplicitLength(const std::string& block);
+    void HandleDatasetExplicitLength(IVisitor& visitor,
+                                     const std::string& block);
 
     void HandleSequenceExplicitLength(const std::string& block);
 
@@ -121,5 +126,8 @@
     bool IsDone() const;
 
     uint64_t GetProcessedBytes() const;
+
+    static bool LookupPixelDataOffset(uint64_t& offset,
+                                      const std::string& dicom);
   };
 }