Mercurial > hg > orthanc
diff Plugins/Engine/OrthancPlugins.cpp @ 1600:7151d63e6d81
documentation, primitives for jpeg
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 01 Sep 2015 12:11:53 +0200 |
parents | dd1f9e81f891 |
children | 905b4db3092b |
line wrap: on
line diff
--- a/Plugins/Engine/OrthancPlugins.cpp Tue Sep 01 11:23:41 2015 +0200 +++ b/Plugins/Engine/OrthancPlugins.cpp Tue Sep 01 12:11:53 2015 +0200 @@ -678,47 +678,57 @@ void OrthancPlugins::CompressAndAnswerPngImage(const void* parameters) { + // Bridge for backward compatibility with Orthanc <= 0.9.3 const _OrthancPluginCompressAndAnswerPngImage& p = *reinterpret_cast<const _OrthancPluginCompressAndAnswerPngImage*>(parameters); + _OrthancPluginCompressAndAnswerImage p2; + p2.output = p.output; + p2.imageFormat = OrthancPluginImageFormat_Png; + p2.pixelFormat = p.format; + p2.width = p.width; + p2.height = p.height; + p2.pitch = p.height; + p2.buffer = p.buffer; + p2.quality = 0; + + CompressAndAnswerImage(&p2); + } + + + void OrthancPlugins::CompressAndAnswerImage(const void* parameters) + { + const _OrthancPluginCompressAndAnswerImage& p = + *reinterpret_cast<const _OrthancPluginCompressAndAnswerImage*>(parameters); + HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output); - PixelFormat format; - switch (p.format) - { - case OrthancPluginPixelFormat_Grayscale8: - format = PixelFormat_Grayscale8; - break; + ImageAccessor accessor; + accessor.AssignReadOnly(Convert(p.pixelFormat), p.width, p.height, p.pitch, p.buffer); - case OrthancPluginPixelFormat_Grayscale16: - format = PixelFormat_Grayscale16; - break; + std::string compressed; - case OrthancPluginPixelFormat_SignedGrayscale16: - format = PixelFormat_SignedGrayscale16; + switch (p.imageFormat) + { + case OrthancPluginImageFormat_Png: + { + PngWriter writer; + writer.WriteToMemory(compressed, accessor); + translatedOutput->SetContentType("image/png"); break; + } - case OrthancPluginPixelFormat_RGB24: - format = PixelFormat_RGB24; - break; - - case OrthancPluginPixelFormat_RGBA32: - format = PixelFormat_RGBA32; - break; + case OrthancPluginImageFormat_Jpeg: + { + // TODO + // quality + } default: throw OrthancException(ErrorCode_ParameterOutOfRange); } - ImageAccessor accessor; - accessor.AssignReadOnly(format, p.width, p.height, p.pitch, p.buffer); - - PngWriter writer; - std::string png; - writer.WriteToMemory(png, accessor); - - translatedOutput->SetContentType("image/png"); - translatedOutput->Answer(png); + translatedOutput->Answer(compressed); } @@ -1163,6 +1173,10 @@ CompressAndAnswerPngImage(parameters); return true; + case _OrthancPluginService_CompressAndAnswerImage: + CompressAndAnswerImage(parameters); + return true; + case _OrthancPluginService_GetDicomForInstance: GetDicomForInstance(parameters); return true;