# HG changeset patch # User Sebastien Jodogne # Date 1440157642 -7200 # Node ID 2084b7c20478878b0a08581310d9a70615a12c0c # Parent 307b9ea6c39bcd636541336a69ef4238b7919d4f refactoring diff -r 307b9ea6c39b -r 2084b7c20478 OrthancServer/OrthancRestApi/OrthancRestAnonymizeModify.cpp --- a/OrthancServer/OrthancRestApi/OrthancRestAnonymizeModify.cpp Fri Aug 21 11:43:24 2015 +0200 +++ b/OrthancServer/OrthancRestApi/OrthancRestAnonymizeModify.cpp Fri Aug 21 13:47:22 2015 +0200 @@ -453,7 +453,7 @@ DicomTag tag = FromDcmtkBridge::ParseTag(name); if (tag == DICOM_TAG_PIXEL_DATA) { - dicom.EmbedImage(value); + dicom.EmbedContent(value); } else { @@ -647,26 +647,7 @@ return false; } - std::string mime, base64; - Toolbox::DecodeDataUriScheme(mime, base64, request["Content"].asString()); - Toolbox::ToLowerCase(mime); - - std::string content; - Toolbox::DecodeBase64(content, base64); - - if (mime == "image/png") - { - dicom.EmbedImage(mime, content); - } - else if (mime == "application/pdf") - { - dicom.EmbedPdf(content); - } - else - { - LOG(ERROR) << "Unsupported MIME type for the content of a new DICOM file"; - return false; - } + dicom.EmbedContent(request["Content"].asString()); } diff -r 307b9ea6c39b -r 2084b7c20478 OrthancServer/ParsedDicomFile.cpp --- a/OrthancServer/ParsedDicomFile.cpp Fri Aug 21 11:43:24 2015 +0200 +++ b/OrthancServer/ParsedDicomFile.cpp Fri Aug 21 13:47:22 2015 +0200 @@ -1134,15 +1134,28 @@ } - void ParsedDicomFile::EmbedImage(const std::string& dataUriScheme) + void ParsedDicomFile::EmbedContent(const std::string& dataUriScheme) { std::string mime, base64; Toolbox::DecodeDataUriScheme(mime, base64, dataUriScheme); + Toolbox::ToLowerCase(mime); std::string content; Toolbox::DecodeBase64(content, base64); - EmbedImage(mime, content); + if (mime == "image/png") + { + EmbedImage(mime, content); + } + else if (mime == "application/pdf") + { + EmbedPdf(content); + } + else + { + LOG(ERROR) << "Unsupported MIME type for the content of a new DICOM file"; + throw OrthancException(ErrorCode_NotImplemented); + } } diff -r 307b9ea6c39b -r 2084b7c20478 OrthancServer/ParsedDicomFile.h --- a/OrthancServer/ParsedDicomFile.h Fri Aug 21 11:43:24 2015 +0200 +++ b/OrthancServer/ParsedDicomFile.h Fri Aug 21 13:47:22 2015 +0200 @@ -100,9 +100,9 @@ void SaveToFile(const std::string& path); - void EmbedImage(const ImageAccessor& accessor); + void EmbedContent(const std::string& dataUriScheme); - void EmbedImage(const std::string& dataUriScheme); + void EmbedImage(const ImageAccessor& accessor); void EmbedImage(const std::string& mime, const std::string& content); diff -r 307b9ea6c39b -r 2084b7c20478 UnitTestsSources/FromDcmtkTests.cpp --- a/UnitTestsSources/FromDcmtkTests.cpp Fri Aug 21 11:43:24 2015 +0200 +++ b/UnitTestsSources/FromDcmtkTests.cpp Fri Aug 21 13:47:22 2015 +0200 @@ -161,17 +161,17 @@ ASSERT_EQ(PixelFormat_RGBA32, reader.GetFormat()); ParsedDicomFile o; - o.EmbedImage(s); + o.EmbedContent(s); o.SaveToFile("UnitTestsResults/png1.dcm"); // Red dot, without alpha channel s = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gUGDTcIn2+8BgAAACJJREFUCNdj/P//PwMjIwME/P/P+J8BBTAxEOL/R9Lx/z8AynoKAXOeiV8AAAAASUVORK5CYII="; - o.EmbedImage(s); + o.EmbedContent(s); o.SaveToFile("UnitTestsResults/png2.dcm"); // Check box in Graylevel8 s = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gUGDDcB53FulQAAAElJREFUGNNtj0sSAEEEQ1+U+185s1CtmRkblQ9CZldsKHJDk6DLGLJa6chjh0ooQmpjXMM86zPwydGEj6Ed/UGykkEM8X+p3u8/8LcOJIWLGeMAAAAASUVORK5CYII="; - o.EmbedImage(s); + o.EmbedContent(s); //o.Replace(DICOM_TAG_SOP_CLASS_UID, UID_DigitalXRayImageStorageForProcessing); o.SaveToFile("UnitTestsResults/png3.dcm");