X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=vv%2FvvOverlayPanel.cxx;h=eb2eaa1c7b2d27950d27551ea8943884fb366f8d;hb=488f24aa984ae24adc9458bf5fbf3b2351415742;hp=e3ecee35e315a17132e770b646d96e8357a9538d;hpb=934a64f5b51382ad6bbc78d9c8734691e599cf09;p=clitk.git
diff --git a/vv/vvOverlayPanel.cxx b/vv/vvOverlayPanel.cxx
index e3ecee3..eb2eaa1 100644
--- a/vv/vvOverlayPanel.cxx
+++ b/vv/vvOverlayPanel.cxx
@@ -1,220 +1,242 @@
-#ifndef _vvOverlayPanel_CXX
-#define _vvOverlayPanel_CXX
-
/*=========================================================================
+ Program: vv http://www.creatis.insa-lyon.fr/rio/vv
- Program: vv
- Language: C++
- Author : Pierre Seroul (pierre.seroul@gmail.com)
-
-Copyright (C) 200COLUMN_IMAGE_NAME
-Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
-CREATIS-LRMN http://www.creatis.insa-lyon.fr
+ Authors belong to:
+ - University of LYON http://www.universite-lyon.fr/
+ - Léon Bérard cancer center http://www.centreleonberard.fr
+ - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
-This program 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, version 3 of the License.
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the copyright notices for more information.
-This program 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 this program. If not, see .
-
-=========================================================================*/
+ It is distributed under dual licence
+ - BSD See included LICENSE.txt file
+ - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+===========================================================================**/
+#ifndef _vvOverlayPanel_CXX
+#define _vvOverlayPanel_CXX
#include "vvOverlayPanel.h"
#include
#include
#include "QTreePushButton.h"
+#include
#include
//====================================================================
vvOverlayPanel::vvOverlayPanel(QWidget * parent):QWidget(parent)
{
- setupUi(this);
-
- vFFrame->hide();
- compareFrame->hide();
- fusionFrame->hide();
- subSamplingSpinBox->setEnabled(0);
- scaleSpinBox->setEnabled(0);
- lutCheckBox->hide();
- lutCheckBox->setEnabled(0);
- connect(subSamplingSpinBox,SIGNAL(editingFinished()),this,SLOT(setVFProperty()));
- connect(scaleSpinBox,SIGNAL(editingFinished()),this,SLOT(setVFProperty()));
- connect(lutCheckBox,SIGNAL(clicked()),this,SLOT(setVFProperty()));
- connect(colorHorizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(setOverlayProperty()));
- connect(opacityHorizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(setFusionProperty()));
- connect(fusionColorMapComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(setFusionProperty()));
- connect(windowSpinBox,SIGNAL(valueChanged(double)),this,SLOT(setFusionProperty()));
- connect(levelSpinBox,SIGNAL(valueChanged(double)),this,SLOT(setFusionProperty()));
+ setupUi(this);
+
+ vFFrame->hide();
+ compareFrame->hide();
+ fusionFrame->hide();
+ subSamplingSpinBox->setEnabled(0);
+ scaleSpinBox->setEnabled(0);
+ lutCheckBox->hide();
+ lutCheckBox->setEnabled(0);
+ connect(subSamplingSpinBox,SIGNAL(editingFinished()),this,SLOT(setVFProperty()));
+ connect(scaleSpinBox,SIGNAL(editingFinished()),this,SLOT(setVFProperty()));
+ connect(lutCheckBox,SIGNAL(clicked()),this,SLOT(setVFProperty()));
+ connect(vfWidthSpinBox,SIGNAL(editingFinished()),this,SLOT(setVFProperty()));
+ connect(vfColorButton,SIGNAL(clicked()),this,SLOT(VFColorChangeRequest()));
+ connect(colorHorizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(setOverlayProperty()));
+ connect(opacityHorizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(setFusionProperty()));
+ connect(thresOpacityHorizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(setFusionProperty()));
+ connect(fusionColorMapComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(setFusionProperty()));
+ connect(fusionWindowSpinBox,SIGNAL(valueChanged(double)),this,SLOT(setFusionProperty()));
+ connect(fusionLevelSpinBox,SIGNAL(valueChanged(double)),this,SLOT(setFusionProperty()));
+ connect(overlayWindowSpinBox,SIGNAL(valueChanged(double)),this,SLOT(setOverlayProperty()));
+ connect(overlayLevelSpinBox,SIGNAL(valueChanged(double)),this,SLOT(setOverlayProperty()));
+ connect(overlayLinkCheckBox,SIGNAL(stateChanged(int)),this,SLOT(setOverlayProperty()));
+
+ disableFusionSignals = false;
}
void vvOverlayPanel::getCurrentImageName(QString name)
{
- QString filename = "Current image : ";
- filename += vtksys::SystemTools::GetFilenameWithoutExtension(name.toStdString()).c_str();
- currentImageLabel->setText(filename.toStdString().c_str());
+ QString filename = "Current image : ";
+ filename += vtksys::SystemTools::GetFilenameWithoutExtension(name.toStdString()).c_str();
+ currentImageLabel->setText(filename.toStdString().c_str());
}
void vvOverlayPanel::getVFProperty(int subsampling, int scale, int log)
{
- if (subsampling != -1)
- {
- vFFrame->show();
- vFFrame->setEnabled(1);
- subSamplingSpinBox->setEnabled(1);
- subSamplingSpinBox->setValue(subsampling);
- scaleSpinBox->setEnabled(1);
- scaleSpinBox->setValue(scale);
- lutCheckBox->setEnabled(1);
- if (log > 0)
- lutCheckBox->setCheckState(Qt::Checked);
- else
- lutCheckBox->setCheckState(Qt::Unchecked);
- }
+ if (subsampling != -1) {
+ vFFrame->show();
+ vFFrame->setEnabled(1);
+ subSamplingSpinBox->setEnabled(1);
+ subSamplingSpinBox->setValue(subsampling);
+ scaleSpinBox->setEnabled(1);
+ scaleSpinBox->setValue(scale);
+ lutCheckBox->setEnabled(1);
+ if (log > 0)
+ lutCheckBox->setCheckState(Qt::Checked);
else
- {
- vFFrame->hide();
- vFFrame->setEnabled(0);
- subSamplingSpinBox->setEnabled(0);
- subSamplingSpinBox->setValue(0);
- scaleSpinBox->setEnabled(0);
- scaleSpinBox->setValue(0);
- lutCheckBox->setEnabled(0);
- lutCheckBox->setCheckState(Qt::Unchecked);
- }
+ lutCheckBox->setCheckState(Qt::Unchecked);
+ } else {
+ vFFrame->hide();
+ vFFrame->setEnabled(0);
+ subSamplingSpinBox->setEnabled(0);
+ subSamplingSpinBox->setValue(0);
+ scaleSpinBox->setEnabled(0);
+ scaleSpinBox->setValue(0);
+ lutCheckBox->setEnabled(0);
+ lutCheckBox->setCheckState(Qt::Unchecked);
+ }
}
void vvOverlayPanel::getVFName(QString name)
{
- QString filename = "Deformation Field : ";
- filename += vtksys::SystemTools::GetFilenameWithoutExtension(name.toStdString()).c_str();
- vectorFieldNameLabel->setText(filename.toStdString().c_str());
+ QString filename = "Deformation Field : ";
+ filename += vtksys::SystemTools::GetFilenameWithoutExtension(name.toStdString()).c_str();
+ vectorFieldNameLabel->setText(filename.toStdString().c_str());
}
void vvOverlayPanel::setVFProperty()
{
- emit VFPropertyUpdated(subSamplingSpinBox->value(),
- scaleSpinBox->value(),
- lutCheckBox->checkState());
+ QColor color(vfColorButton->palette().color(QPalette::Background));
+ emit VFPropertyUpdated(subSamplingSpinBox->value(),
+ scaleSpinBox->value(),
+ lutCheckBox->checkState(),
+ vfWidthSpinBox->value(),
+ color.redF(), color.greenF(), color.blueF());
}
void vvOverlayPanel::getCurrentVectorInfo(int visibility, double x,double y,double z, double value)
{
- QString motion = "Displacement : ";
- QString motionValue = "Length : ";
- if (visibility)
- {
- motion += QString::number(x,'f',1) + " ";
- motion += QString::number(y,'f',1) + " ";
- motion += QString::number(z,'f',1) + " ";
-
- motionValue += QString::number(value,'f',1);
- }
- coordinatesLabel->setText(motion);
- normLabel->setText(motionValue);
+ QString motion = "Displacement : ";
+ QString motionValue = "Length : ";
+ if (visibility) {
+ motion += QString::number(x,'f',1) + " ";
+ motion += QString::number(y,'f',1) + " ";
+ motion += QString::number(z,'f',1) + " ";
+
+ motionValue += QString::number(value,'f',1);
+ }
+ coordinatesLabel->setText(motion);
+ normLabel->setText(motionValue);
}
void vvOverlayPanel::getOverlayName(QString name)
{
- QString filename = "Compare with : ";
- filename += vtksys::SystemTools::GetFilenameWithoutExtension(name.toStdString()).c_str();
- imageComparedLabel->setText(filename.toStdString().c_str());
+ QString filename = "Compare with : ";
+ filename += vtksys::SystemTools::GetFilenameWithoutExtension(name.toStdString()).c_str();
+ imageComparedLabel->setText(filename.toStdString().c_str());
}
-void vvOverlayPanel::getOverlayProperty(int value)
+void vvOverlayPanel::getOverlayProperty(int color, int linked, double window, double level)
{
- if (value > -1)
- {
- compareFrame->show();
- compareFrame->setEnabled(1);
- colorHorizontalSlider->setEnabled(1);
- colorHorizontalSlider->setValue(value);
- }
- else
- {
- compareFrame->hide();
- compareFrame->setEnabled(0);
- colorHorizontalSlider->setEnabled(0);
- colorHorizontalSlider->setValue(0);
- }
+ if (color > -1) {
+ compareFrame->show();
+ compareFrame->setEnabled(1);
+ colorHorizontalSlider->setEnabled(1);
+ colorHorizontalSlider->setValue(color);
+ overlayLinkCheckBox->setCheckState( (linked)?Qt::Checked:Qt::Unchecked );
+ overlayWindowSpinBox->setValue(window);
+ overlayLevelSpinBox->setValue(level);
+ } else {
+ compareFrame->hide();
+ compareFrame->setEnabled(0);
+ colorHorizontalSlider->setEnabled(0);
+ colorHorizontalSlider->setValue(0);
+ }
}
void vvOverlayPanel::setOverlayProperty()
{
- emit OverlayPropertyUpdated(colorHorizontalSlider->value());
+ overlayWindowSpinBox->setEnabled(!overlayLinkCheckBox->checkState());
+ overlayLevelSpinBox->setEnabled(!overlayLinkCheckBox->checkState());
+ emit OverlayPropertyUpdated(colorHorizontalSlider->value(),
+ overlayLinkCheckBox->checkState(),
+ overlayWindowSpinBox->value(),
+ overlayLevelSpinBox->value());
}
void vvOverlayPanel::getCurrentOverlayInfo(int visibility,double valueOver, double valueRef)
{
- QString refValue = "Pixel value in image 1 : ";
- QString overlayValue = "Pixel value in image 2 : ";
- QString diffValue = "Pixel difference : ";
- if (visibility)
- {
- refValue += QString::number(valueRef);
- overlayValue += QString::number(valueOver,'f',1);
- diffValue += QString::number(valueRef - valueOver,'f',1);
- }
- refValueLabel->setText(refValue);
- valueLabel->setText(overlayValue);
- diffValueLabel->setText(diffValue);
+ QString refValue = "Pixel value in image 1 : ";
+ QString overlayValue = "Pixel value in image 2 : ";
+ QString diffValue = "Pixel difference : ";
+ if (visibility) {
+ refValue += QString::number(valueRef);
+ overlayValue += QString::number(valueOver);
+ diffValue += QString::number(valueRef - valueOver);
+ }
+ refValueLabel->setText(refValue);
+ valueLabel->setText(overlayValue);
+ diffValueLabel->setText(diffValue);
}
void vvOverlayPanel::getFusionName(QString name)
{
- QString filename = "Fusion with : ";
- filename += vtksys::SystemTools::GetFilenameWithoutExtension(name.toStdString()).c_str();
- dataFusionnedLabel->setText(filename.toStdString().c_str());
+ QString filename = "Fusion with : ";
+ filename += vtksys::SystemTools::GetFilenameWithoutExtension(name.toStdString()).c_str();
+ dataFusionnedLabel->setText(filename.toStdString().c_str());
}
-void vvOverlayPanel::getFusionProperty(int opacity, int colormap, double window, double level)
+void vvOverlayPanel::getFusionProperty(int opacity, int thresOpacity, int colormap, double window, double level)
{
- if (opacity > -1)
- {
- fusionFrame->show();
- fusionFrame->setEnabled(1);
- opacityHorizontalSlider->setEnabled(1);
- opacityHorizontalSlider->setValue(opacity);
- fusionColorMapComboBox->setEnabled(1);
- fusionColorMapComboBox->setCurrentIndex(colormap);
- windowSpinBox->setEnabled(1);
- levelSpinBox->setEnabled(1);
- windowSpinBox->setValue(window);
- levelSpinBox->setValue(level);
- }
- else
- {
- fusionFrame->hide();
- fusionFrame->setEnabled(0);
- opacityHorizontalSlider->setEnabled(0);
- opacityHorizontalSlider->setValue(0);
- fusionColorMapComboBox->setEnabled(0);
- fusionColorMapComboBox->setCurrentIndex(-1);
- windowSpinBox->setEnabled(0);
- levelSpinBox->setEnabled(0);
- }
+ if (opacity > -1) {
+ //first disable signals generated by each setValue() call
+ disableFusionSignals = true;
+ fusionFrame->show();
+ fusionFrame->setEnabled(1);
+ fusionColorMapComboBox->setEnabled(1);
+ fusionColorMapComboBox->setCurrentIndex(colormap);
+ opacityHorizontalSlider->setEnabled(1);
+ opacityHorizontalSlider->setValue(opacity);
+ thresOpacityHorizontalSlider->setEnabled(1);
+ thresOpacityHorizontalSlider->setValue(thresOpacity);
+ fusionWindowSpinBox->setEnabled(1);
+ fusionLevelSpinBox->setEnabled(1);
+ fusionWindowSpinBox->setValue(window);
+ fusionLevelSpinBox->setValue(level);
+
+ // re-enable signals and trigger slot function
+ disableFusionSignals = false;
+ setFusionProperty();
+ } else {
+ fusionFrame->hide();
+ fusionFrame->setEnabled(0);
+ opacityHorizontalSlider->setEnabled(0);
+ opacityHorizontalSlider->setValue(0);
+ thresOpacityHorizontalSlider->setEnabled(0);
+ thresOpacityHorizontalSlider->setValue(0);
+ fusionColorMapComboBox->setEnabled(0);
+ fusionColorMapComboBox->setCurrentIndex(-1);
+ fusionWindowSpinBox->setEnabled(0);
+ fusionLevelSpinBox->setEnabled(0);
+ }
}
void vvOverlayPanel::setFusionProperty()
{
- emit FusionPropertyUpdated(opacityHorizontalSlider->value(), fusionColorMapComboBox->currentIndex(),
- windowSpinBox->value(), levelSpinBox->value());
+ if (disableFusionSignals)
+ return;
+
+ emit FusionPropertyUpdated(opacityHorizontalSlider->value(), thresOpacityHorizontalSlider->value(), fusionColorMapComboBox->currentIndex(),
+ fusionWindowSpinBox->value(), fusionLevelSpinBox->value());
}
void vvOverlayPanel::getCurrentFusionInfo(int visibility,double value)
{
- QString fusionValue = "Pixel value in image 2 : ";
- if (visibility)
- {
- fusionValue += QString::number(value,'f',1);
- }
- valueFusionnedLabel->setText(fusionValue);
+ QString fusionValue = "Pixel value in image 2 : ";
+ if (visibility) {
+ fusionValue += QString::number(value,'f',1);
+ }
+ valueFusionnedLabel->setText(fusionValue);
+}
+
+void vvOverlayPanel::VFColorChangeRequest()
+{
+ QColor color(vfColorButton->palette().color(QPalette::Background));
+ color = QColorDialog::getColor(color, this, "Choose the new color of the vector field");
+ //vfColorButton->palette().setColor(QPalette::Background, color); SR: Not working?
+ vfColorButton->setStyleSheet("* { background-color: " + color.name() + "; border: 0px }");
+ this->setVFProperty();
}
#endif /* end #define _vvOverlayPanel_CXX */