/* * Copyright 2011-2012 INSA Rennes * * This file is part of ImageINSA. * * ImageINSA is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * ImageINSA is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ImageINSA. If not, see <http://www.gnu.org/licenses/>. */ #include "UCharConvertOp.h" #include "../Tools.h" #include <QApplication> #include <QObject> #include "Operation.h" #include "UCharConvertDialog.h" #include "Image.h" #include <Converter.h> #include <QDialog> #include <QDialogButtonBox> #include <QHBoxLayout> #include <QFormLayout> #include <QLabel> #include <QSpinBox> #include <QComboBox> #include <QStringList> using namespace imagein; UCharConvertOp::UCharConvertOp() : DoubleOperation(qApp->translate("Operations", "UChar converter").toStdString()) { } bool UCharConvertOp::needCurrentImg() const{ return true; } 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(dialog->getCombo()) { case 0 : resImg = Converter<Image>::convertAndRound(*from); break; case 1 : tempIntImg = Converter<Image_t<double>>::convertToInt(*from); tempIntImg->normalize(); resImg = Converter<Image>::convert(*tempIntImg); delete tempIntImg; break; case 2 : std::cout << "offset : " << dialog->getOffset() << " \n"; tempIntImg = Converter<Image_t<double>>::convertToInt(*from); offset = dialog->getOffset(); resImg = Converter<Image>::convertAndOffset(*tempIntImg, &LogMessage, offset); delete tempIntImg; break; case 4 : tempIntImg = Converter<Image_t<double>>::convertToInt(*from); resImg = Converter<Image>::convertScaleAndOffset(*tempIntImg, &LogMessage); delete tempIntImg; break; case 3 : 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"); }