diff Plugins/Engine/OrthancPlugins.cpp @ 1608:adc6a5704cdb

OrthancPluginConvertPixelFormat
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 02 Sep 2015 13:58:08 +0200
parents 31f4adefb88f
children c74495267acf
line wrap: on
line diff
--- a/Plugins/Engine/OrthancPlugins.cpp	Tue Sep 01 17:40:45 2015 +0200
+++ b/Plugins/Engine/OrthancPlugins.cpp	Wed Sep 02 13:58:08 2015 +0200
@@ -42,10 +42,12 @@
 #include "../../OrthancServer/ServerToolbox.h"
 #include "../../Core/Compression/ZlibCompressor.h"
 #include "../../Core/Compression/GzipCompressor.h"
+#include "../../Core/ImageFormats/Image.h"
 #include "../../Core/ImageFormats/PngReader.h"
 #include "../../Core/ImageFormats/PngWriter.h"
 #include "../../Core/ImageFormats/JpegReader.h"
 #include "../../Core/ImageFormats/JpegWriter.h"
+#include "../../Core/ImageFormats/ImageProcessing.h"
 
 #include <boost/regex.hpp> 
 
@@ -1168,6 +1170,18 @@
   }
 
 
+  void OrthancPlugins::ConvertPixelFormat(const void* parameters)
+  {
+    const _OrthancPluginConvertPixelFormat& p = *reinterpret_cast<const _OrthancPluginConvertPixelFormat*>(parameters);
+    const ImageAccessor& source = *reinterpret_cast<const ImageAccessor*>(p.source);
+
+    std::auto_ptr<ImageAccessor> target(new Image(Convert(p.targetFormat), source.GetWidth(), source.GetHeight()));
+    ImageProcessing::Convert(*target, source);
+
+    *(p.target) = reinterpret_cast<OrthancPluginImage*>(target.release());
+  }
+
+
   bool OrthancPlugins::InvokeService(_OrthancPluginService service,
                                      const void* parameters)
   {
@@ -1530,6 +1544,10 @@
         CallHttpClient(parameters);
         return true;
 
+      case _OrthancPluginService_ConvertPixelFormat:
+        ConvertPixelFormat(parameters);
+        return true;
+
       default:
       {
         // This service is unknown to the Orthanc plugin engine