diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 0690c8a7cf43032f358726f5518e810479ea90a1..82822c20ba7fc4e0acab67f977e8bc9f1ad97b1d 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -124,14 +124,12 @@ set(imageinsa_SOURCES Operations/SignalToNoiseOp.cpp Operations/SignalToNoiseOp.h Operations/SinusSynthesisOp.cpp - Operations/SinusSynthesisOp.cpp Operations/SinusSynthesisOp.h Operations/SplitColorOp.cpp Operations/SplitColorOp.h Operations/SplitHsvOp.cpp Operations/SplitHsvOp.h Operations/ThresholdDialog.cpp - Operations/ThresholdDialog.cpp Operations/ThresholdDialog.h Operations/ThresholdOp.cpp Operations/ThresholdOp.cpp @@ -140,6 +138,10 @@ set(imageinsa_SOURCES Operations/Transforms.h Operations/TranslateOp.cpp Operations/TranslateOp.h + Operations/UCharConvertOp.cpp + Operations/UCharConvertOp.h + Operations/ucharconvertdialog.cpp + Operations/ucharconvertdialog.h Operations/ZeroCrossingOp.cpp Operations/ZeroCrossingOp.h Services/ImageINSAService.cpp @@ -185,6 +187,7 @@ set(UIS Operations/DCTDialog.ui Operations/ColorDialog.ui Operations/MedianDialog.ui + Operations/ucharconvertdialog.ui ) qt5_wrap_ui(WRAPPED_UIS ${UIS}) diff --git a/app/Operations/UCharConvertOp.cpp b/app/Operations/UCharConvertOp.cpp new file mode 100644 index 0000000000000000000000000000000000000000..81f982e5b3dfb844d9b7e060df3731b712ce7f89 --- /dev/null +++ b/app/Operations/UCharConvertOp.cpp @@ -0,0 +1,42 @@ +/* + * 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" + + +UCharConvertOp::UCharConvertOp() : DoubleOperation(qApp->translate("Operations", "UChar converter").toStdString()) +{ +} + +bool UCharConvertOp::needCurrentImg() const{ + return true; +} + +void UCharConvertOp::operator()(const imagein::Image_t<double>*, 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; +} diff --git a/app/Operations/UCharConvertOp.h b/app/Operations/UCharConvertOp.h new file mode 100644 index 0000000000000000000000000000000000000000..06c8d1b2438f59854fa2049fc164a56e3ab712f7 --- /dev/null +++ b/app/Operations/UCharConvertOp.h @@ -0,0 +1,19 @@ +#ifndef UCHARCONVERTOP_H +#define UCHARCONVERTOP_H + +#include <QObject> +#include "Operation.h" +#include "ucharconvertdialog.h" + + +class UCharConvertOp : public DoubleOperation +{ +public: + UCharConvertOp(); + + bool needCurrentImg() const; + + void operator()(const imagein::Image_t<double>*, const std::map<const imagein::Image_t<double>*, std::string>&); +}; + +#endif // UCHARCONVERTOP_H diff --git a/app/Operations/ucharconvertdialog.cpp b/app/Operations/ucharconvertdialog.cpp new file mode 100644 index 0000000000000000000000000000000000000000..efbdd6e1f51d827e45429ea46c9ac1d5e7115fde --- /dev/null +++ b/app/Operations/ucharconvertdialog.cpp @@ -0,0 +1,14 @@ +#include "ucharconvertdialog.h" +#include "ui_ucharconvertdialog.h" + +UCharConvertDialog::UCharConvertDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::UCharConvertDialog) +{ + ui->setupUi(this); +} + +UCharConvertDialog::~UCharConvertDialog() +{ + delete ui; +} diff --git a/app/Operations/ucharconvertdialog.h b/app/Operations/ucharconvertdialog.h new file mode 100644 index 0000000000000000000000000000000000000000..2757e4b62d26fe8fa1ad22a64cd56eb00597a1b2 --- /dev/null +++ b/app/Operations/ucharconvertdialog.h @@ -0,0 +1,22 @@ +#ifndef UCHARCONVERTDIALOG_H +#define UCHARCONVERTDIALOG_H + +#include <QDialog> + +namespace Ui { +class UCharConvertDialog; +} + +class UCharConvertDialog : public QDialog +{ + Q_OBJECT + +public: + explicit UCharConvertDialog(QWidget *parent = 0); + ~UCharConvertDialog(); + +private: + Ui::UCharConvertDialog *ui; +}; + +#endif // UCHARCONVERTDIALOG_H diff --git a/app/Operations/ucharconvertdialog.ui b/app/Operations/ucharconvertdialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..12cb7da19c3b12a42f7fef964d0cca2a92237bd6 --- /dev/null +++ b/app/Operations/ucharconvertdialog.ui @@ -0,0 +1,112 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>UCharConvertDialog</class> + <widget class="QDialog" name="UCharConvertDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string>Dialog</string> + </property> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="geometry"> + <rect> + <x>40</x> + <y>260</y> + <width>341</width> + <height>32</height> + </rect> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + <widget class="QWidget" name="verticalLayoutWidget"> + <property name="geometry"> + <rect> + <x>30</x> + <y>40</y> + <width>311</width> + <height>81</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="comboBox"/> + </item> + </layout> + </widget> + <widget class="QWidget" name="verticalLayoutWidget_2"> + <property name="geometry"> + <rect> + <x>30</x> + <y>150</y> + <width>160</width> + <height>80</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="spinBox"/> + </item> + </layout> + </widget> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>UCharConvertDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>UCharConvertDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/app/Services/OperationService.cpp b/app/Services/OperationService.cpp index b1e60ae38bc35cb357d78b2f27c9bec5e8ee9720..fdfdc2aa864e124dd3d7ef91e8a835cd4cbb74af 100644 --- a/app/Services/OperationService.cpp +++ b/app/Services/OperationService.cpp @@ -55,21 +55,8 @@ void OperationService::connect(GenericInterface* gi) void OperationService::operation() { -// cout << _operation->getName() << endl; - WindowService* ws = _gi->windowService(); ImageWindow* curImgWnd = ws->getCurrentImageWindow(); - -// StandardImageWindow* curStdImgWnd = NULL; -// if (curImgWnd != NULL) -// { -// curStdImgWnd = dynamic_cast<StandardImageWindow*>(curImgWnd); -// } - -// const Image* image = NULL; -// if(curStdImgWnd != NULL) { -// image = curStdImgWnd->getImage(); -// } if(_operation->needCurrentImg() && !_operation->isValidImgWnd(curImgWnd)) return; map<const ImageWindow*, string> wndList; @@ -80,36 +67,6 @@ void OperationService::operation() { _operation->operator()(dynamic_cast<ImageINSAService*>(ws)); -// for(vector<QWidget*>::iterator it = result.begin(); it < result.end(); ++it) { -// QWidget* widget = *it; -// QLabel* twdgt = dynamic_cast<QLabel*>(widget); -// if((typeid(*widget) == typeid(ImgWidget)) || (typeid(*widget) == typeid(DoubleImgWidget))) { -// QString title = _operation->needCurrentImg() ? (curImgWnd->windowTitle() + " - ") : ""; -// ImageWindow* siw; -// if(typeid(*widget)==typeid(ImgWidget)) { -// ImgWidget* w = dynamic_cast<ImgWidget*>(widget); -// title += w->name.c_str(); -// siw = new StandardImageWindow(_operation->needCurrentImg() ? curImgWnd->getPath() : w->name.c_str(), w->img); -// } -// else { -// DoubleImgWidget* w = dynamic_cast<DoubleImgWidget*>(widget); -// title += w->name.c_str(); -// siw = new DoubleImageWindow(_operation->needCurrentImg() ? curImgWnd->getPath() : w->name.c_str(), w->img, w->normalize, w->logScale); -// } -// NodeId id = _operation->needCurrentImg() ? ws->getNodeId(curImgWnd) : NodeId(siw->getDisplayImage()); -// ws->addImage(id, siw); -// siw->setWindowTitle(title); -// } -// else if(twdgt != NULL) { -// emit outputText(twdgt->text()); -// } -// else { -// ws->addWidget(ws->getNodeId(curImgWnd), widget); -// } - -// } - - } void OperationService::setEnabled(bool enabled) { diff --git a/app/main.cpp b/app/main.cpp index 3ccdee16a3f43d75d0aa33fe2140d515e6457dd2..260b57bc2dd78ba36b337caabf3eb28cb0bd0bbd 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -71,6 +71,7 @@ #include "Operations/ClassResultOp.h" #include "Operations/SeparatorOp.h" #include "Operations/MedianOp.h" +#include "Operations/UCharConvertOp.h" #include "Services/MorphoMatService.h" @@ -142,6 +143,8 @@ int main(int argc, char** argv) image->addOperation(new QuantificationOp()); image->addOperation(new ThresholdOp()); image->addOperation(new HistogramOp()); + image->addOperation(new SeparatorOp()); + image->addOperation(new UCharConvertOp()); BuiltinOpSet* tools = new BuiltinOpSet(qApp->translate("", "&Tools").toStdString());