diff --git a/app/Services/FilteringService.cpp b/app/Services/FilteringService.cpp index 61fbb3b1d2e3714a5de0c31c40940c8cf58e3597..9bf01eca510fba75779293f6cbdf41970d9d66fa 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; @@ -67,6 +68,8 @@ void FilteringService::applyFiltering() return; } _dblResult = _filterChoice->doubleResult(); + _scaling = _filterChoice->scalingResult(); + _offset = _filterChoice->offsetResult(); Filtering* filtering = _filterChoice->getFiltering(); this->applyAlgorithm(filtering); @@ -95,11 +98,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) { @@ -110,11 +115,27 @@ 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 [min : 0, max : 255]"; + + } delete dblResImg; - Image* resImg = Converter<Image>::makeDisplayable(*intResImg); - delete intResImg; riw = new StandardImageWindow(resImg, _siw->getPath()); + std::cout << outputMessage << std::endl; } riw->setWindowTitle(_siw->windowTitle() + " - " + _filterChoice->getFilterName()); emit newImageWindowCreated(_ws->getNodeId(_siw), riw); 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; }; }