Mercurial > hg > orthanc
diff Core/DicomParsing/DcmtkTranscoder.cpp @ 3945:0b3256c3ee14 transcoding
simplified IDicomTranscoder
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 19 May 2020 11:24:00 +0200 |
parents | aae045f802f4 |
children | 1f33ed7f82e6 |
line wrap: on
line diff
--- a/Core/DicomParsing/DcmtkTranscoder.cpp Tue May 19 10:17:06 2020 +0200 +++ b/Core/DicomParsing/DcmtkTranscoder.cpp Tue May 19 11:24:00 2020 +0200 @@ -328,78 +328,6 @@ } - - bool DcmtkTranscoder::TranscodeParsedToBuffer( - std::string& target /* out */, - bool& hasSopInstanceUidChanged /* out */, - DcmFileFormat& dicom /* in, possibly modified */, - DicomTransferSyntax targetSyntax, - bool allowNewSopInstanceUid) - { - if (dicom.getDataset() == NULL) - { - throw OrthancException(ErrorCode_InternalError); - } - - std::set<DicomTransferSyntax> tmp; - tmp.insert(targetSyntax); - - if (InplaceTranscode(hasSopInstanceUidChanged, dicom, tmp, allowNewSopInstanceUid)) - { - DicomTransferSyntax targetSyntax2; - if (FromDcmtkBridge::LookupOrthancTransferSyntax(targetSyntax2, dicom) && - targetSyntax == targetSyntax2 && - dicom.getDataset() != NULL) - { - FromDcmtkBridge::SaveToMemoryBuffer(target, *dicom.getDataset()); - return true; - } - else - { - throw OrthancException(ErrorCode_InternalError); - } - } - else - { - return false; - } - } - - - IDicomTranscoder::TranscodedDicom* DcmtkTranscoder::TranscodeToParsed( - DcmFileFormat& dicom /* in, possibly modified */, - const void* buffer /* in, same DICOM file as "dicom" */, - size_t size, - const std::set<DicomTransferSyntax>& allowedSyntaxes, - bool allowNewSopInstanceUid) - { - DicomTransferSyntax sourceSyntax; - if (!FromDcmtkBridge::LookupOrthancTransferSyntax(sourceSyntax, dicom)) - { - LOG(ERROR) << "Unsupport transfer syntax for transcoding"; - return NULL; - } - - bool hasSopInstanceUidChanged; - - if (allowedSyntaxes.find(sourceSyntax) != allowedSyntaxes.end()) - { - // No transcoding is needed - return TranscodedDicom::CreateFromExternal(dicom, false /* no change in UID */); - } - else if (InplaceTranscode(hasSopInstanceUidChanged, dicom, - allowedSyntaxes, allowNewSopInstanceUid)) - { - return TranscodedDicom::CreateFromExternal(dicom, hasSopInstanceUidChanged); - } - else - { - // Cannot transcode - return NULL; - } - } - - bool DcmtkTranscoder::Transcode(DicomImage& target, bool& hasSopInstanceUidChanged /* out */, DicomImage& source /* in, "GetParsed()" possibly modified */,