X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpExtensions%2FQT%2FWindowLevelImageConfiguration.cxx;h=b2baa949e7697ba8038c44a6e928f946bb8c4e7b;hb=1fb645d9cf1026ff09297123d104a2b43c963a93;hp=ca1c3c101b3bcb8996e15d7756a12a3f5b4ac6f8;hpb=3393941bf8f26babc7b592db434b40c1b747a687;p=cpPlugins.git diff --git a/lib/cpExtensions/QT/WindowLevelImageConfiguration.cxx b/lib/cpExtensions/QT/WindowLevelImageConfiguration.cxx index ca1c3c1..b2baa94 100644 --- a/lib/cpExtensions/QT/WindowLevelImageConfiguration.cxx +++ b/lib/cpExtensions/QT/WindowLevelImageConfiguration.cxx @@ -1,7 +1,4 @@ #include - -#ifdef cpExtensions_QT4 - #include #include @@ -9,7 +6,9 @@ cpExtensions::QT::WindowLevelImageConfiguration:: WindowLevelImageConfiguration( QWidget* parent, Qt::WindowFlags f ) : Superclass( parent, f ), - m_UI( new Ui::WindowLevelImageConfiguration ) + m_UI( new Ui::WindowLevelImageConfiguration ), + m_Data( NULL ), + m_Name( "" ) { this->m_UI->setupUi( this ); } @@ -23,18 +22,23 @@ cpExtensions::QT::WindowLevelImageConfiguration:: // ------------------------------------------------------------------------- void cpExtensions::QT::WindowLevelImageConfiguration:: -setData( SimpleMPRWidget* data ) +setData( ActorsWidgetInterface* data, const std::string& name ) { if( this->m_Data != data ) { this->m_Data = data; + this->m_Name = name; // Get data double range[ 2 ], win_lev[ 2 ]; - this->m_Data->GetScalarRange( range ); - this->m_Data->GetWindowLevel( win_lev ); + this->m_Data->GetScalarRange( this->m_Name, range ); + this->m_Data->GetWindowLevel( this->m_Name, win_lev ); // Intensity range + this->m_UI->MinimumBox->setMinimum( -1000000 ); + this->m_UI->MinimumBox->setMaximum( 1000000 ); + this->m_UI->MaximumBox->setMinimum( -1000000 ); + this->m_UI->MaximumBox->setMaximum( 1000000 ); this->m_UI->MinimumBox->setValue( range[ 0 ] ); this->m_UI->MaximumBox->setValue( range[ 1 ] ); @@ -62,7 +66,7 @@ setData( SimpleMPRWidget* data ) this->m_UI->LevelSlider->setValue( l ); // Opacity - double o = this->m_Data->GetImageOpacity( ); + double o = this->m_Data->GetOpacity( this->m_Name ); o *= double( this->m_UI->OpacitySlider->maximum( ) ) - double( this->m_UI->OpacitySlider->minimum( ) ); @@ -70,20 +74,14 @@ setData( SimpleMPRWidget* data ) this->m_UI->OpacitySlider->setValue( o ); // Interpolation mode - switch( this->m_Data->GetImageInterpolation( ) ) + switch( this->m_Data->GetImageInterpolation( this->m_Name ) ) { case 'L': this->m_UI->InterpolatorBox->setCurrentIndex( 1 ); break; case 'C': this->m_UI->InterpolatorBox->setCurrentIndex( 2 ); break; default : this->m_UI->InterpolatorBox->setCurrentIndex( 0 ); break; } // hctiws - /* TODO - this->connect( - this->m_UI->Top, SIGNAL( splitterMoved( int, int ) ), - this, SLOT( _SyncBottom( int, int ) ) - ); - */ - + // Slots <-> signals this->connect( this->m_UI->MaximumBox, SIGNAL( valueChanged( int ) ), this, SLOT( _maximumValue( int ) ) @@ -124,24 +122,82 @@ setData( SimpleMPRWidget* data ) void cpExtensions::QT::WindowLevelImageConfiguration:: _maximumValue( int v ) { + double range[ 2 ]; + range[ 0 ] = double( this->m_UI->MinimumBox->value( ) ); + range[ 1 ] = double( v ); + this->m_Data->SetScalarRange( this->m_Name, range ); } // ------------------------------------------------------------------------- void cpExtensions::QT::WindowLevelImageConfiguration:: _minimumValue( int v ) { + double range[ 2 ]; + range[ 0 ] = double( v ); + range[ 1 ] = double( this->m_UI->MaximumBox->value( ) ); + this->m_Data->SetScalarRange( this->m_Name, range ); } // ------------------------------------------------------------------------- void cpExtensions::QT::WindowLevelImageConfiguration:: _levelValue( int v ) { + double r[ 2 ]; + double l, s; + + this->m_Data->GetScalarRange( this->m_Name, r ); + if( this->sender( ) == this->m_UI->LevelSlider ) + { + s = double( v ) / double( this->m_UI->LevelSlider->maximum( ) ); + l = ( ( r[ 1 ] - r[ 0 ] ) * s ) + r[ 0 ]; + } + else + { + l = double( v ); + s = ( l - r[ 0 ] ) / ( r[ 1 ] - r[ 0 ] ); + + } // fi + s *= this->m_UI->LevelSlider->maximum( ); + + bool b = this->m_UI->LevelSlider->blockSignals( true ); + this->m_UI->LevelSlider->setValue( s ); + this->m_UI->LevelSlider->blockSignals( b ); + b = this->m_UI->LevelBox->blockSignals( true ); + this->m_UI->LevelBox->setValue( l ); + this->m_UI->LevelBox->blockSignals( b ); + + this->m_Data->SetLevel( this->m_Name, l ); } // ------------------------------------------------------------------------- void cpExtensions::QT::WindowLevelImageConfiguration:: _windowValue( int v ) { + double r[ 2 ]; + double w, s; + + this->m_Data->GetScalarRange( this->m_Name, r ); + if( this->sender( ) == this->m_UI->WindowSlider ) + { + s = double( v ) / double( this->m_UI->WindowSlider->maximum( ) ); + w = ( ( r[ 1 ] - r[ 0 ] ) * s ) + r[ 0 ]; + } + else + { + w = double( v ); + s = ( w - r[ 0 ] ) / ( r[ 1 ] - r[ 0 ] ); + + } // fi + s *= this->m_UI->WindowSlider->maximum( ); + + bool b = this->m_UI->WindowSlider->blockSignals( true ); + this->m_UI->WindowSlider->setValue( s ); + this->m_UI->WindowSlider->blockSignals( b ); + b = this->m_UI->WindowBox->blockSignals( true ); + this->m_UI->WindowBox->setValue( w ); + this->m_UI->WindowBox->blockSignals( b ); + + this->m_Data->SetWindow( this->m_Name, w ); } // ------------------------------------------------------------------------- @@ -155,7 +211,7 @@ _opacityValue( int v ) o /= double( this->m_UI->OpacitySlider->maximum( ) ) - double( this->m_UI->OpacitySlider->minimum( ) ); - this->m_Data->SetImageOpacity( o ); + this->m_Data->SetOpacity( this->m_Name, o ); } // fi } @@ -164,8 +220,12 @@ _opacityValue( int v ) void cpExtensions::QT::WindowLevelImageConfiguration:: _interpolatorValue( int v ) { + switch( v ) + { + case 1 : this->m_Data->SetImageInterpolation( this->m_Name, 'L' ); break; + case 2 : this->m_Data->SetImageInterpolation( this->m_Name, 'C' ); break; + default : this->m_Data->SetImageInterpolation( this->m_Name, 'N' ); break; + } // hctiws } -#endif // cpExtensions_QT4 - // eof - $RCSfile$