Mercurial > hg > orthanc
diff Core/DicomParsing/ParsedDicomFile.cpp @ 2905:ae20fccdd867
refactoring mime types
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 30 Oct 2018 11:55:23 +0100 |
parents | f3c1eda54e47 |
children | 9d277f8ad698 |
line wrap: on
line diff
--- a/Core/DicomParsing/ParsedDicomFile.cpp Tue Oct 30 10:46:17 2018 +0100 +++ b/Core/DicomParsing/ParsedDicomFile.cpp Tue Oct 30 11:55:23 2018 +0100 @@ -82,8 +82,10 @@ #include "ParsedDicomFile.h" #include "FromDcmtkBridge.h" +#include "Internals/DicomFrameIndex.h" #include "ToDcmtkBridge.h" -#include "Internals/DicomFrameIndex.h" + +#include "../Images/PamReader.h" #include "../Logging.h" #include "../OrthancException.h" #include "../Toolbox.h" @@ -160,8 +162,6 @@ #if ORTHANC_ENABLE_CIVETWEB == 1 || ORTHANC_ENABLE_MONGOOSE == 1 - static const char* CONTENT_TYPE_OCTET_STREAM = "application/octet-stream"; - static void ParseTagAndGroup(DcmTagKey& key, const std::string& tag) { @@ -362,14 +362,14 @@ { if (pixelItem->getLength() == 0) { - output.AnswerBuffer(NULL, 0, CONTENT_TYPE_OCTET_STREAM); + output.AnswerBuffer(NULL, 0, MIME_BINARY); return true; } Uint8* buffer = NULL; if (pixelItem->getUint8Array(buffer).good() && buffer) { - output.AnswerBuffer(buffer, pixelItem->getLength(), CONTENT_TYPE_OCTET_STREAM); + output.AnswerBuffer(buffer, pixelItem->getLength(), MIME_BINARY); return true; } } @@ -692,7 +692,7 @@ const std::string* decoded = &utf8Value; if (decodeDataUriScheme && - boost::starts_with(utf8Value, "data:application/octet-stream;base64,")) + boost::starts_with(utf8Value, URI_SCHEME_PREFIX_BINARY)) { std::string mime; if (!Toolbox::DecodeDataUriScheme(mime, binary, utf8Value)) @@ -825,7 +825,7 @@ std::string serialized; if (FromDcmtkBridge::SaveToMemoryBuffer(serialized, *pimpl_->file_->getDataset())) { - output.AnswerBuffer(serialized, CONTENT_TYPE_OCTET_STREAM); + output.AnswerBuffer(serialized, MIME_BINARY); } } #endif @@ -1072,7 +1072,7 @@ Toolbox::ToLowerCase(mime); - if (mime == "image/png") + if (mime == MIME_PNG) { #if ORTHANC_ENABLE_PNG == 1 EmbedImage(mime, content); @@ -1081,7 +1081,7 @@ throw OrthancException(ErrorCode_NotImplemented); #endif } - else if (mime == "image/jpeg") + else if (mime == MIME_JPEG) { #if ORTHANC_ENABLE_JPEG == 1 EmbedImage(mime, content); @@ -1090,7 +1090,11 @@ throw OrthancException(ErrorCode_NotImplemented); #endif } - else if (mime == "application/pdf") + else if (mime == MIME_PAM) + { + EmbedImage(mime, content); + } + else if (mime == MIME_PDF) { EmbedPdf(content); } @@ -1113,20 +1117,32 @@ } -#if (ORTHANC_ENABLE_JPEG == 1 && \ - ORTHANC_ENABLE_PNG == 1) void ParsedDicomFile::EmbedImage(const std::string& mime, const std::string& content) { - if (mime == "image/png") +#if ORTHANC_ENABLE_JPEG == 1 + if (mime == MIME_JPEG) + { + JpegReader reader; + reader.ReadFromMemory(content); + EmbedImage(reader); + return; + } +#endif + +#if ORTHANC_ENABLE_PNG == 1 + if (mime == MIME_PNG) { PngReader reader; reader.ReadFromMemory(content); EmbedImage(reader); + return; } - else if (mime == "image/jpeg") +#endif + + if (mime == MIME_PAM) { - JpegReader reader; + PamReader reader; reader.ReadFromMemory(content); EmbedImage(reader); } @@ -1135,7 +1151,6 @@ throw OrthancException(ErrorCode_NotImplemented); } } -#endif void ParsedDicomFile::EmbedImage(const ImageAccessor& accessor) @@ -1346,7 +1361,7 @@ ReplacePlainString(DICOM_TAG_SOP_CLASS_UID, UID_EncapsulatedPDFStorage); ReplacePlainString(FromDcmtkBridge::Convert(DCM_Modality), "OT"); ReplacePlainString(FromDcmtkBridge::Convert(DCM_ConversionType), "WSD"); - ReplacePlainString(FromDcmtkBridge::Convert(DCM_MIMETypeOfEncapsulatedDocument), "application/pdf"); + ReplacePlainString(FromDcmtkBridge::Convert(DCM_MIMETypeOfEncapsulatedDocument), MIME_PDF); //ReplacePlainString(FromDcmtkBridge::Convert(DCM_SeriesNumber), "1"); std::auto_ptr<DcmPolymorphOBOW> element(new DcmPolymorphOBOW(DCM_EncapsulatedDocument)); @@ -1388,7 +1403,7 @@ if (!GetTagValue(sop, DICOM_TAG_SOP_CLASS_UID) || !GetTagValue(mime, FromDcmtkBridge::Convert(DCM_MIMETypeOfEncapsulatedDocument)) || sop != UID_EncapsulatedPDFStorage || - mime != "application/pdf") + mime != MIME_PDF) { return false; } @@ -1470,16 +1485,16 @@ switch (transferSyntax) { case EXS_JPEGProcess1: - mime = "image/jpeg"; + mime = MIME_JPEG; break; case EXS_JPEG2000LosslessOnly: case EXS_JPEG2000: - mime = "image/jp2"; + mime = MIME_JPEG2000; break; default: - mime = "application/octet-stream"; + mime = MIME_BINARY; break; } }