X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvOverlayPanel.cxx;h=68356bfd2df1d91d1fc7029d20d5e6afe331d44b;hb=39562adceed3b608834959f2ed079b945187bb22;hp=76116236043cc002b8cda0aaf2d8b31c5869d8d6;hpb=358b7d254e07d4eae0cb1350b580783a82c1638f;p=clitk.git diff --git a/vv/vvOverlayPanel.cxx b/vv/vvOverlayPanel.cxx index 7611623..68356bf 100644 --- a/vv/vvOverlayPanel.cxx +++ b/vv/vvOverlayPanel.cxx @@ -3,7 +3,7 @@ Authors belong to: - University of LYON http://www.universite-lyon.fr/ - - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr This software is distributed WITHOUT ANY WARRANTY; without even @@ -14,7 +14,7 @@ - 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" @@ -45,9 +45,17 @@ vvOverlayPanel::vvOverlayPanel(QWidget * parent):QWidget(parent) 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(windowSpinBox,SIGNAL(valueChanged(double)),this,SLOT(setFusionProperty())); - connect(levelSpinBox,SIGNAL(valueChanged(double)),this,SLOT(setFusionProperty())); + connect(fusionWindowSpinBox,SIGNAL(valueChanged(double)),this,SLOT(setFusionProperty())); + connect(fusionLevelSpinBox,SIGNAL(valueChanged(double)),this,SLOT(setFusionProperty())); + connect(fusionOpacitySpin,SIGNAL(valueChanged(double)),this,SLOT(setFusionSpinProperty())); + connect(fusionThresSpin,SIGNAL(valueChanged(double)),this,SLOT(setFusionSpinProperty())); + 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) @@ -122,13 +130,16 @@ void vvOverlayPanel::getOverlayName(QString name) 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) { + if (color > -1) { compareFrame->show(); compareFrame->setEnabled(1); colorHorizontalSlider->setEnabled(1); - colorHorizontalSlider->setValue(value); + colorHorizontalSlider->setValue(color); + overlayLinkCheckBox->setCheckState( (linked)?Qt::Checked:Qt::Unchecked ); + overlayWindowSpinBox->setValue(window); + overlayLevelSpinBox->setValue(level); } else { compareFrame->hide(); compareFrame->setEnabled(0); @@ -139,7 +150,12 @@ void vvOverlayPanel::getOverlayProperty(int value) 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) @@ -149,8 +165,8 @@ void vvOverlayPanel::getCurrentOverlayInfo(int visibility,double valueOver, doub QString diffValue = "Pixel difference : "; if (visibility) { refValue += QString::number(valueRef); - overlayValue += QString::number(valueOver,'f',1); - diffValue += QString::number(valueRef - valueOver,'f',1); + overlayValue += QString::number(valueOver); + diffValue += QString::number(valueRef - valueOver); } refValueLabel->setText(refValue); valueLabel->setText(overlayValue); @@ -163,35 +179,61 @@ void vvOverlayPanel::getFusionName(QString name) 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) { + //first disable signals generated by each setValue() call + disableFusionSignals = true; 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); + opacityHorizontalSlider->setEnabled(1); + opacityHorizontalSlider->setValue(opacity); + thresOpacityHorizontalSlider->setEnabled(1); + thresOpacityHorizontalSlider->setValue(thresOpacity); + fusionOpacitySpin->setValue(opacity); + fusionThresSpin->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); + fusionOpacitySpin->setValue(0); + fusionThresSpin->setValue(0); fusionColorMapComboBox->setEnabled(0); fusionColorMapComboBox->setCurrentIndex(-1); - windowSpinBox->setEnabled(0); - levelSpinBox->setEnabled(0); + fusionWindowSpinBox->setEnabled(0); + fusionLevelSpinBox->setEnabled(0); } } void vvOverlayPanel::setFusionProperty() { - emit FusionPropertyUpdated(opacityHorizontalSlider->value(), fusionColorMapComboBox->currentIndex(), - windowSpinBox->value(), levelSpinBox->value()); + if (disableFusionSignals) + return; + + fusionOpacitySpin->setValue(opacityHorizontalSlider->value()); + fusionThresSpin->setValue(thresOpacityHorizontalSlider->value()); + + emit FusionPropertyUpdated(opacityHorizontalSlider->value(), thresOpacityHorizontalSlider->value(), fusionColorMapComboBox->currentIndex(), + fusionWindowSpinBox->value(), fusionLevelSpinBox->value()); +} + +void vvOverlayPanel::setFusionSpinProperty() +{ + opacityHorizontalSlider->setValue(fusionOpacitySpin->value()); + thresOpacityHorizontalSlider->setValue(fusionThresSpin->value()); } void vvOverlayPanel::getCurrentFusionInfo(int visibility,double value)