From 543ced696aad9b8a7130d2cdf8dbeab7919eedd4 Mon Sep 17 00:00:00 2001
From: ariotte <ariotte@PC-EII16.admr.insa>
Date: Wed, 27 Jun 2018 15:22:10 +0200
Subject: [PATCH] reworked offset and scaling

---
 app/Services/FilteringService.cpp | 24 ++++++++++++++++++++++--
 app/Services/FilteringService.h   |  2 ++
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/app/Services/FilteringService.cpp b/app/Services/FilteringService.cpp
index 5cd768c..c750735 100644
--- a/app/Services/FilteringService.cpp
+++ b/app/Services/FilteringService.cpp
@@ -25,6 +25,7 @@
 #include <Converter.h>
 #include <Widgets/ImageWidgets/DoubleImageWindow.h>
 #include <QApplication>
+#include <Operation.h>
 
 using namespace filtrme;
 using namespace genericinterface;
@@ -73,6 +74,8 @@ void FilteringService::applyFiltering()
             return;
         }
         _dblResult = _filterChoice->doubleResult();
+        _scaling = true; //_filterChoice->scalingResult();
+        _offset = true; //_filterChoice->offsetResult();
 
         Filtering* filtering = _filterChoice->getFiltering();
         this->applyAlgorithm(filtering);
@@ -108,11 +111,13 @@ void FilteringService::applyAlgorithm(Filtering* algo)
            DoubleImageWindow* diw = dynamic_cast<DoubleImageWindow*>(_siw);
            image = diw->getImage();
         }
+        
         Image_t<double>* dblResImg = (*algo)(image);
         ImageWindow* riw;
         if(_siw->isStandard()) {
             delete image;
         }
+        
         if(_dblResult) {
             DoubleImageWindow* diw = dynamic_cast<DoubleImageWindow*>(_siw);
             if(diw != NULL) {
@@ -123,10 +128,25 @@ void FilteringService::applyAlgorithm(Filtering* algo)
             }
         }
         else {
+            std::string outputMessage = "";
+            Image* resImg;
             Image_t<int>* intResImg = Converter<Image_t<int> >::convert(*dblResImg);
+            if(_scaling && _offset ){
+
+                resImg  =  Converter<Image>::ConvertScaleAndOffset(*intResImg, &outputMessage);
+            }
+            else if(_scaling){
+                resImg  =  Converter<Image>::ConvertAndScale(*intResImg, &outputMessage);
+            }
+            else if(_offset){
+                resImg = Converter<Image>::ConvertAndOffset(*intResImg, &outputMessage);
+            }
+            else{
+                resImg = Converter<Image>::convertAndRound(*dblResImg);
+                outputMessage = "Pas de conversion appliquee [min : 0, max : 255]";
+
+            }
             delete dblResImg;
-            Image* resImg = Converter<Image>::makeDisplayable(*intResImg);
-            delete intResImg;
             riw = new StandardImageWindow(resImg, _siw->getPath());
         }
         riw->setWindowTitle(_siw->windowTitle());
diff --git a/app/Services/FilteringService.h b/app/Services/FilteringService.h
index 8b18b57..6ce6035 100644
--- a/app/Services/FilteringService.h
+++ b/app/Services/FilteringService.h
@@ -66,6 +66,8 @@ namespace filtrme
 
     genericinterface::ImageWindow* _siw;
     bool _dblResult;
+    bool _scaling;
+    bool _offset;
   };
 }
 
-- 
GitLab