diff --git a/app/Services/FilteringService.cpp b/app/Services/FilteringService.cpp index 5cd768c3b7a67bebf492e16175444abb009a3508..c750735ad24cd5231170f30f5e343c1745d705a8 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 8b18b574fe76d74f7781dfbc1b93ea8905c08933..6ce6035cb600c07df70d5fe1b9ac63efb5198c64 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; }; }