X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvIntensityValueSlider.cxx;h=bbd31e56aac34785ce971b378b9afb7ece79e58d;hb=93f793e07c285d87a02d72864cf11c13adf4a304;hp=8f2ee2c033fdc5700fb06522782bbc227c2e5902;hpb=0b7c9b1e1215634b02cbd38d4e4ba101d6111ba8;p=clitk.git diff --git a/vv/vvIntensityValueSlider.cxx b/vv/vvIntensityValueSlider.cxx index 8f2ee2c..bbd31e5 100644 --- a/vv/vvIntensityValueSlider.cxx +++ b/vv/vvIntensityValueSlider.cxx @@ -1,9 +1,9 @@ /*========================================================================= Program: vv http://www.creatis.insa-lyon.fr/rio/vv - Authors belong to: + 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,19 +14,20 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html -======================================================================-====*/ +===========================================================================**/ #include "vvIntensityValueSlider.h" //------------------------------------------------------------------------------ vvIntensityValueSlider::vvIntensityValueSlider(QWidget * parent, Qt::WindowFlags f) - :QWidget(parent,f), Ui::vvIntensityValueSlider() + :QWidget(parent,f), Ui::vvIntensityValueSlider() { // GUI Initialization - setupUi(this); + setupUi(this); mIsInteger = true; mButtonPlus->setHidden(true); mButtonMinus->setHidden(true); - + mValue=0; + // Connect signals & slots connect(mSpinBox, SIGNAL(valueChanged(double)), this, SLOT(valueChangedFromSpinBox(double))); connect(mSlider, SIGNAL(valueChanged(int)), this, SLOT(valueChangedFromSlider(int))); @@ -37,13 +38,15 @@ vvIntensityValueSlider::vvIntensityValueSlider(QWidget * parent, Qt::WindowFlags //------------------------------------------------------------------------------ -vvIntensityValueSlider::~vvIntensityValueSlider() { +vvIntensityValueSlider::~vvIntensityValueSlider() +{ } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -void vvIntensityValueSlider::SingleStepMinusClicked() { +void vvIntensityValueSlider::SingleStepMinusClicked() +{ mSpinBox->setSingleStep(mSpinBox->singleStep()*10); mSpinBox->setDecimals(mSpinBox->decimals()-1); } @@ -51,14 +54,16 @@ void vvIntensityValueSlider::SingleStepMinusClicked() { //------------------------------------------------------------------------------ -void vvIntensityValueSlider::SetSingleStep(double step) { +void vvIntensityValueSlider::SetSingleStep(double step) +{ mSpinBox->setSingleStep(step); } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -void vvIntensityValueSlider::SingleStepPlusClicked() { +void vvIntensityValueSlider::SingleStepPlusClicked() +{ mSpinBox->setSingleStep(mSpinBox->singleStep()/10); mSpinBox->setDecimals(mSpinBox->decimals()+1); } @@ -66,15 +71,15 @@ void vvIntensityValueSlider::SingleStepPlusClicked() { //------------------------------------------------------------------------------ -void vvIntensityValueSlider::valueChangedFromSpinBox(double v) { +void vvIntensityValueSlider::valueChangedFromSpinBox(double v) +{ if (v == mValue) return; mSpinBox->setValue(v); v = mSpinBox->value(); // this is needed to 'round' value according to spinBox precision double vv; if (!mIsInteger) { vv = ((v-mMin)/mWidth)/mSliderFactor; - } - else vv = v; + } else vv = v; mSlider->setValue(vv); mValue = v; emit valueChanged(v); @@ -83,12 +88,12 @@ void vvIntensityValueSlider::valueChangedFromSpinBox(double v) { //------------------------------------------------------------------------------ -void vvIntensityValueSlider::valueChangedFromSlider(int vv) { +void vvIntensityValueSlider::valueChangedFromSlider(int vv) +{ double v; if (!mIsInteger) { v = ((double)vv*mSliderFactor)*mWidth+mMin; - } - else v= vv; + } else v= vv; // arrondir ! ? @@ -100,22 +105,25 @@ void vvIntensityValueSlider::valueChangedFromSlider(int vv) { //------------------------------------------------------------------------------ -void vvIntensityValueSlider::SetText(QString t) { +void vvIntensityValueSlider::SetText(QString t) +{ mLabel->setText(t); } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -void vvIntensityValueSlider::SetImage(vvImage * im) { - mImage = im; - Update(); +void vvIntensityValueSlider::SetImage(vvImage * im) +{ + mImage = im; + Update(); } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -void vvIntensityValueSlider::SetValue(double v) { +void vvIntensityValueSlider::SetValue(double v) +{ mValue = v; mSpinBox->setValue(v); } @@ -123,20 +131,22 @@ void vvIntensityValueSlider::SetValue(double v) { //------------------------------------------------------------------------------ -void vvIntensityValueSlider::SetMaximum(double max) { +void vvIntensityValueSlider::SetMaximum(double max) +{ mMax = max; mSpinBox->setMaximum(max); - + // If integer values : update slider max if (mIsInteger == 1) { mSlider->setMaximum(max); - } - else { + } else { double step = mWidth/1000.0; mSpinBox->setSingleStep(step); mWidth = mMax-mMin; } - if (mValue > max) { SetValue(max); } + if (mValue > max) { + SetValue(max); + } QString tip = QString("Min = %1 Max = %2").arg(mSpinBox->minimum()).arg(max); setToolTip(tip); } @@ -144,20 +154,22 @@ void vvIntensityValueSlider::SetMaximum(double max) { //------------------------------------------------------------------------------ -void vvIntensityValueSlider::SetMinimum(double min) { +void vvIntensityValueSlider::SetMinimum(double min) +{ mMin = min; mSpinBox->setMinimum(min); if (mIsInteger == 1) { mSlider->setMinimum(min); - } - else { + } else { double step = mWidth/1000.0; mSpinBox->setSingleStep(step); mWidth = mMax-mMin; } - if (mValue < min) { SetValue(min); } + if (mValue < min) { + SetValue(min); + } QString tip = QString("Min = %1 Max = %2").arg(min).arg(mSpinBox->maximum()); setToolTip(tip); } @@ -165,13 +177,14 @@ void vvIntensityValueSlider::SetMinimum(double min) { //------------------------------------------------------------------------------ -void vvIntensityValueSlider::Update() { +void vvIntensityValueSlider::Update() +{ double range[2]; mImage->GetFirstVTKImageData()->GetScalarRange(range); mMin = range[0]; mMax = range[1]; double step = (mMax-mMin)/1000.0; - + if (mImage->IsScalarTypeInteger()) { mIsInteger = true; mSpinBox->setSingleStep(1.0); @@ -181,8 +194,7 @@ void vvIntensityValueSlider::Update() { mSlider->setSingleStep(1); mSliderFactor = 1.0; mWidth = 1.0; - } - else { + } else { mIsInteger = false; mButtonPlus->setHidden(false); mButtonMinus->setHidden(false); @@ -195,11 +207,11 @@ void vvIntensityValueSlider::Update() { mSliderFactor = 1.0/1000.0; mWidth = mMax-mMin; } - + mSpinBox->setMaximum(mMax); mSpinBox->setMinimum(mMin); mSpinBox->setValue((mMax-mMin)/2.0+mMin); - + QString tip = QString("Min = %1 Max = %2").arg(mMin).arg(mMax); setToolTip(tip); }