X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvOverlayPanel.cxx;h=165104f068b3b6bc085965317f4045af61a8f8a0;hb=HEAD;hp=bc3a7d0180ffa93dcc024c5e14766fe5f3a7daa2;hpb=7cd2a2b6db7aeb5f9bb4a733ea8b936426d14d3b;p=clitk.git diff --git a/vv/vvOverlayPanel.cxx b/vv/vvOverlayPanel.cxx index bc3a7d0..165104f 100644 --- a/vv/vvOverlayPanel.cxx +++ b/vv/vvOverlayPanel.cxx @@ -29,15 +29,21 @@ //==================================================================== vvOverlayPanel::vvOverlayPanel(QWidget * parent):QWidget(parent) { + disableFusionSignals = true; + disableFusionSequenceSignals = true; + setupUi(this); vFFrame->hide(); compareFrame->hide(); fusionFrame->hide(); + fCTUSFrame->hide(); subSamplingSpinBox->setEnabled(0); scaleSpinBox->setEnabled(0); lutCheckBox->hide(); lutCheckBox->setEnabled(0); + fusionShowLegendCheckBox->setChecked(false); + connect(subSamplingSpinBox,SIGNAL(editingFinished()),this,SLOT(setVFProperty())); connect(scaleSpinBox,SIGNAL(editingFinished()),this,SLOT(setVFProperty())); connect(lutCheckBox,SIGNAL(clicked()),this,SLOT(setVFProperty())); @@ -47,10 +53,19 @@ vvOverlayPanel::vvOverlayPanel(QWidget * parent):QWidget(parent) 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())); - - disableFusionSignals = false; + 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(fusionShowLegendCheckBox,SIGNAL(stateChanged(int)),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())); + + connect(fCTUSSlider,SIGNAL(valueChanged(int)),this,SLOT(setFusionSequenceProperty())); + connect(fCTUSActivateSpaceSyncCheckBox,SIGNAL(stateChanged(int)),this,SLOT(setFusionSequenceProperty())); + connect(fCTUSActivateTimeSyncCheckBox,SIGNAL(stateChanged(int)),this,SLOT(setFusionSequenceProperty())); + connect(fCTUSLoadCorrespondancesPushButton,SIGNAL(clicked()),this,SIGNAL(FusionSequenceCorrespondancesButtonPressed())); } void vvOverlayPanel::getCurrentImageName(QString name) @@ -125,13 +140,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); @@ -142,7 +160,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) @@ -179,10 +202,12 @@ void vvOverlayPanel::getFusionProperty(int opacity, int thresOpacity, int colorm opacityHorizontalSlider->setValue(opacity); thresOpacityHorizontalSlider->setEnabled(1); thresOpacityHorizontalSlider->setValue(thresOpacity); - windowSpinBox->setEnabled(1); - levelSpinBox->setEnabled(1); - windowSpinBox->setValue(window); - levelSpinBox->setValue(level); + 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; @@ -194,10 +219,12 @@ void vvOverlayPanel::getFusionProperty(int opacity, int thresOpacity, int colorm 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); } } @@ -205,28 +232,102 @@ void vvOverlayPanel::setFusionProperty() { if (disableFusionSignals) return; - + + fusionOpacitySpin->setValue(opacityHorizontalSlider->value()); + fusionThresSpin->setValue(thresOpacityHorizontalSlider->value()); + emit FusionPropertyUpdated(opacityHorizontalSlider->value(), thresOpacityHorizontalSlider->value(), fusionColorMapComboBox->currentIndex(), - windowSpinBox->value(), levelSpinBox->value()); + fusionWindowSpinBox->value(), fusionLevelSpinBox->value(), fusionShowLegendCheckBox->isChecked()); +} + +void vvOverlayPanel::setFusionSpinProperty() +{ + opacityHorizontalSlider->setValue(fusionOpacitySpin->value()); + thresOpacityHorizontalSlider->setValue(fusionThresSpin->value()); } void vvOverlayPanel::getCurrentFusionInfo(int visibility,double value) { QString fusionValue = "Pixel value in image 2 : "; if (visibility) { - fusionValue += QString::number(value,'f',1); + fusionValue += QString::number(value,'g',3); } valueFusionnedLabel->setText(fusionValue); } + +void vvOverlayPanel::getFusionSequenceProperty(int sequenceFrameIndex, bool spatialSync, unsigned int sequenceLenth, bool temporalSync) +{ + if (sequenceFrameIndex > -1) { + disableFusionSequenceSignals = true; + fCTUSFrame->show(); + fCTUSFrame->setEnabled(1); + fCTUSSlider->setEnabled(1); + fCTUSSlider->setValue(sequenceFrameIndex); + fCTUSSlider->setMaximum(sequenceLenth-1); //the maximum IS included, since we start at 0, go until n-1! + if (spatialSync) fCTUSActivateSpaceSyncCheckBox->setCheckState(Qt::Checked); + else fCTUSActivateSpaceSyncCheckBox->setCheckState(Qt::Unchecked); + if (fCTUSActivateTimeSyncCheckBox->isEnabled()) { + if ( temporalSync ) fCTUSActivateTimeSyncCheckBox->setCheckState(Qt::Checked); + else fCTUSActivateTimeSyncCheckBox->setCheckState(Qt::Unchecked); + } + disableFusionSequenceSignals = false; + setFusionSequenceProperty(); + } else { + disableFusionSequenceSignals = true; + fCTUSFrame->hide(); + fCTUSFrame->setEnabled(0); + fCTUSSlider->setEnabled(0); + fCTUSSlider->setValue(0); + fCTUSSlider->setMaximum(0); + fCTUSActivateSpaceSyncCheckBox->setCheckState(Qt::Unchecked); + fCTUSActivateTimeSyncCheckBox->setCheckState(Qt::Unchecked); + disableFusionSequenceSignals = false; + setFusionSequenceProperty(); + } +} + + +void vvOverlayPanel::setFusionSequenceProperty() +{ + if (disableFusionSequenceSignals) + return; + emit FusionSequencePropertyUpdated(fCTUSSlider->value(), fCTUSActivateSpaceSyncCheckBox->isChecked(), fCTUSSlider->maximum()+1, fCTUSActivateTimeSyncCheckBox->isChecked()); +} + +void vvOverlayPanel::enableFusionSequenceTemporalSync() { + bool backup = disableFusionSequenceSignals; + disableFusionSequenceSignals=true; //not sure this is necessary, but just in case... + fCTUSActivateTimeSyncCheckBox->setEnabled(1); + fCTUSActivateTimeSyncCheckBox->setChecked(true); + disableFusionSequenceSignals = backup; // + + if (disableFusionSequenceSignals) return; + emit FusionSequencePropertyUpdated(fCTUSSlider->value(), fCTUSActivateSpaceSyncCheckBox->isChecked(), fCTUSSlider->maximum()+1, fCTUSActivateTimeSyncCheckBox->isChecked()); +} + +void vvOverlayPanel::updateFusionSequenceSliderValueFromWindow(int val, bool updateVisualization) { + if (fCTUSSlider->value()==val) return; + + disableFusionSequenceSignals = true; //not sure this is necessary, but just in case... + fCTUSSlider->setValue(val); + disableFusionSequenceSignals = false; + + if (disableFusionSequenceSignals) return; + if (updateVisualization) emit FusionSequencePropertyUpdated(fCTUSSlider->value(), fCTUSActivateSpaceSyncCheckBox->isChecked(), fCTUSSlider->maximum()+1, fCTUSActivateTimeSyncCheckBox->isChecked()); +} + 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 }"); + if (color.isValid()) + vfColorButton->setStyleSheet("* { background-color: " + color.name() + "; border: 0px }"); this->setVFProperty(); } + + #endif /* end #define _vvOverlayPanel_CXX */