Mercurial > hg > orthanc
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); }; }