Mercurial > hg > orthanc
diff Plugins/Samples/Common/OrthancPluginCppWrapper.cpp @ 3919:6f11b3233a06 transcoding
OrthancPluginTranscodeDicomInstance() and OrthancPluginSerializeDicomInstance()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 12 May 2020 12:38:27 +0200 |
parents | 0e3849268a55 |
children | f6ccff28fbed |
line wrap: on
line diff
--- a/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp Mon May 11 21:12:40 2020 +0200 +++ b/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp Tue May 12 12:38:27 2020 +0200 @@ -3297,11 +3297,15 @@ void DicomInstance::GetRawFrame(std::string& target, unsigned int frameIndex) const { - OrthancPluginMemoryBuffer buffer; + MemoryBuffer buffer; OrthancPluginErrorCode code = OrthancPluginGetInstanceRawFrame( - GetGlobalContext(), &buffer, instance_, frameIndex); - - if (code != OrthancPluginErrorCode_Success) + GetGlobalContext(), *buffer, instance_, frameIndex); + + if (code == OrthancPluginErrorCode_Success) + { + buffer.ToString(target); + } + else { ORTHANC_PLUGINS_THROW_PLUGIN_ERROR_CODE(code); } @@ -3309,7 +3313,6 @@ #endif - #if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 7, 0) OrthancImage* DicomInstance::GetDecodedFrame(unsigned int frameIndex) const { @@ -3326,4 +3329,43 @@ } } #endif + + +#if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 7, 0) + void DicomInstance::Serialize(std::string& target) const + { + MemoryBuffer buffer; + OrthancPluginErrorCode code = OrthancPluginSerializeDicomInstance( + GetGlobalContext(), *buffer, instance_); + + if (code == OrthancPluginErrorCode_Success) + { + buffer.ToString(target); + } + else + { + ORTHANC_PLUGINS_THROW_PLUGIN_ERROR_CODE(code); + } + } +#endif + + +#if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 7, 0) + DicomInstance* DicomInstance::Transcode(const void* buffer, + size_t size, + const std::string& transferSyntax) + { + OrthancPluginDicomInstance* instance = OrthancPluginTranscodeDicomInstance( + GetGlobalContext(), buffer, size, transferSyntax.c_str()); + + if (instance == NULL) + { + ORTHANC_PLUGINS_THROW_EXCEPTION(Plugin); + } + else + { + return new DicomInstance(instance); + } + } +#endif }