From 6fdf5e2e737fedb4d833ea20ddcb6b148738894e Mon Sep 17 00:00:00 2001 From: ariotte <ariotte@PC-EII16.admr.insa> Date: Thu, 28 Jun 2018 17:07:40 +0200 Subject: [PATCH] added algorithm in operation --- app/Operations/UCharConvertOp.cpp | 53 ++++++++++++++++++++++++++++++- app/Operations/UCharConvertOp.h | 4 +++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/app/Operations/UCharConvertOp.cpp b/app/Operations/UCharConvertOp.cpp index 81f982e..45c4b47 100644 --- a/app/Operations/UCharConvertOp.cpp +++ b/app/Operations/UCharConvertOp.cpp @@ -24,7 +24,10 @@ #include <QObject> #include "Operation.h" #include "ucharconvertdialog.h" +#include "Image.h" +#include <Converter.h> +using namespace imagein; UCharConvertOp::UCharConvertOp() : DoubleOperation(qApp->translate("Operations", "UChar converter").toStdString()) { @@ -34,9 +37,57 @@ bool UCharConvertOp::needCurrentImg() const{ return true; } -void UCharConvertOp::operator()(const imagein::Image_t<double>*, const std::map<const imagein::Image_t<double>*, std::string>&){ +void UCharConvertOp::operator()(const imagein::Image_t<double>* from, const std::map<const imagein::Image_t<double>*, std::string>&){ UCharConvertDialog* dialog = new UCharConvertDialog(QApplication::activeWindow()); QDialog::DialogCode code = static_cast<QDialog::DialogCode>(dialog->exec()); if(code!=QDialog::Accepted) return; + + + + + + Image * resImg; + std::string LogMessage = ""; + Image_t<int> * tempIntImg; + int offset; + switch(conversionTYPE) + { + case CROP : + resImg = Converter<Image>::convertAndRound(*from); + break; + + case NORMALIZE : + tempIntImg = Converter<Image_t<double>>::convertToInt(*from); + tempIntImg->normalize(); + resImg = Converter<Image>::convert(*tempIntImg); + delete tempIntImg; + break; + + case OFFSET : + tempIntImg = Converter<Image_t<double>>::convertToInt(*from); + offset = 130; //getOffset() + resImg = Converter<Image>::convertAndOffset(*tempIntImg, &LogMessage, offset); + delete tempIntImg; + break; + + case OFFSETNSCALE : + tempIntImg = Converter<Image_t<double>>::convertToInt(*from); + resImg = Converter<Image>::convertScaleAndOffset(*tempIntImg, &LogMessage); + delete tempIntImg; + break; + + case SCALE : + tempIntImg = Converter<Image_t<double>>::convertToInt(*from); + resImg = Converter<Image>::convertAndScale(*tempIntImg, &LogMessage); + delete tempIntImg; + break; + + default: + std::cout << "Default conversion" << std::endl; + resImg = Converter<Image>::convertAndRound(*from); + break; + } + + outImage(resImg, "Title"); } diff --git a/app/Operations/UCharConvertOp.h b/app/Operations/UCharConvertOp.h index 06c8d1b..1091d40 100644 --- a/app/Operations/UCharConvertOp.h +++ b/app/Operations/UCharConvertOp.h @@ -14,6 +14,10 @@ public: bool needCurrentImg() const; void operator()(const imagein::Image_t<double>*, const std::map<const imagein::Image_t<double>*, std::string>&); + +private : + + enum{CROP, NORMALIZE, OFFSET, OFFSETNSCALE, SCALE} conversionTYPE; }; #endif // UCHARCONVERTOP_H -- GitLab