Mercurial > hg > orthanc
diff OrthancFramework/Sources/DicomParsing/ParsedDicomFile.cpp @ 4845:02d77189d8ba received-instance-callback
added ReceivedInstanceCallback + sample C++ plugin
author | Alain Mazy <am@osimis.io> |
---|---|
date | Thu, 09 Dec 2021 17:22:40 +0100 |
parents | 7053502fbf97 |
children | 43e613a7756b |
line wrap: on
line diff
--- a/OrthancFramework/Sources/DicomParsing/ParsedDicomFile.cpp Tue Dec 07 14:01:17 2021 +0100 +++ b/OrthancFramework/Sources/DicomParsing/ParsedDicomFile.cpp Thu Dec 09 17:22:40 2021 +0100 @@ -1195,6 +1195,10 @@ EmbedImage(mime, content); break; + case MimeType_Binary: + EmbedImage(mime, content); + break; + case MimeType_Pdf: EmbedPdf(content); break; @@ -1254,6 +1258,12 @@ break; } + case MimeType_Binary: + { + EmbedRawPixelData(content); + break; + } + default: throw OrthancException(ErrorCode_NotImplemented); } @@ -1407,7 +1417,24 @@ } } - + void ParsedDicomFile::EmbedRawPixelData(const std::string& content) + { + DcmTag key(DICOM_TAG_PIXEL_DATA.GetGroup(), + DICOM_TAG_PIXEL_DATA.GetElement()); + + std::unique_ptr<DcmPixelData> pixels(new DcmPixelData(key)); + + Uint8* target = NULL; + pixels->createUint8Array(content.size(), target); + memcpy(target, content.c_str(), content.size()); + + if (!GetDcmtkObject().getDataset()->insert(pixels.release(), false, false).good()) + { + throw OrthancException(ErrorCode_InternalError); + } + } + + Encoding ParsedDicomFile::DetectEncoding(bool& hasCodeExtensions) const { return FromDcmtkBridge::DetectEncoding(hasCodeExtensions,