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