1 #include <cpExtensions/QT/WindowLevelImageConfiguration.h>
3 #ifdef cpExtensions_QT4
5 #include <cpExtensions/QT/ui_WindowLevelImageConfiguration.h>
6 #include <cpExtensions/QT/SimpleMPRWidget.h>
8 // -------------------------------------------------------------------------
9 cpExtensions::QT::WindowLevelImageConfiguration::
10 WindowLevelImageConfiguration( QWidget* parent, Qt::WindowFlags f )
11 : Superclass( parent, f ),
12 m_UI( new Ui::WindowLevelImageConfiguration ),
16 this->m_UI->setupUi( this );
19 // -------------------------------------------------------------------------
20 cpExtensions::QT::WindowLevelImageConfiguration::
21 ~WindowLevelImageConfiguration( )
26 // -------------------------------------------------------------------------
27 void cpExtensions::QT::WindowLevelImageConfiguration::
28 setData( ActorsWidgetInterface* data, const std::string& name )
30 if( this->m_Data != data )
36 double range[ 2 ], win_lev[ 2 ];
37 this->m_Data->GetScalarRange( this->m_Name, range );
38 this->m_Data->GetWindowLevel( this->m_Name, win_lev );
41 this->m_UI->MinimumBox->setMinimum( -1000000 );
42 this->m_UI->MinimumBox->setMaximum( 1000000 );
43 this->m_UI->MaximumBox->setMinimum( -1000000 );
44 this->m_UI->MaximumBox->setMaximum( 1000000 );
45 this->m_UI->MinimumBox->setValue( range[ 0 ] );
46 this->m_UI->MaximumBox->setValue( range[ 1 ] );
49 double off = range[ 1 ] - range[ 0 ];
50 this->m_UI->WindowBox->setMinimum( 0 );
51 this->m_UI->WindowBox->setMaximum( off );
52 this->m_UI->LevelBox->setMinimum( range[ 0 ] );
53 this->m_UI->LevelBox->setMaximum( range[ 1 ] );
54 this->m_UI->WindowBox->setValue( win_lev[ 0 ] );
55 this->m_UI->LevelBox->setValue( win_lev[ 1 ] );
57 double w = win_lev[ 0 ] / off;
59 double( this->m_UI->WindowSlider->maximum( ) ) -
60 double( this->m_UI->WindowSlider->minimum( ) );
61 w += double( this->m_UI->WindowSlider->minimum( ) );
62 this->m_UI->WindowSlider->setValue( w );
64 double l = ( win_lev[ 1 ] - range[ 0 ] ) / off;
66 double( this->m_UI->LevelSlider->maximum( ) ) -
67 double( this->m_UI->LevelSlider->minimum( ) );
68 l += double( this->m_UI->LevelSlider->minimum( ) );
69 this->m_UI->LevelSlider->setValue( l );
72 double o = this->m_Data->GetOpacity( this->m_Name );
74 double( this->m_UI->OpacitySlider->maximum( ) ) -
75 double( this->m_UI->OpacitySlider->minimum( ) );
76 o += double( this->m_UI->OpacitySlider->minimum( ) );
77 this->m_UI->OpacitySlider->setValue( o );
80 switch( this->m_Data->GetImageInterpolation( this->m_Name ) )
82 case 'L': this->m_UI->InterpolatorBox->setCurrentIndex( 1 ); break;
83 case 'C': this->m_UI->InterpolatorBox->setCurrentIndex( 2 ); break;
84 default : this->m_UI->InterpolatorBox->setCurrentIndex( 0 ); break;
89 this->m_UI->MaximumBox, SIGNAL( valueChanged( int ) ),
90 this, SLOT( _maximumValue( int ) )
93 this->m_UI->MinimumBox, SIGNAL( valueChanged( int ) ),
94 this, SLOT( _minimumValue( int ) )
97 this->m_UI->LevelBox, SIGNAL( valueChanged( int ) ),
98 this, SLOT( _levelValue( int ) )
101 this->m_UI->LevelSlider, SIGNAL( valueChanged( int ) ),
102 this, SLOT( _levelValue( int ) )
105 this->m_UI->WindowBox, SIGNAL( valueChanged( int ) ),
106 this, SLOT( _windowValue( int ) )
109 this->m_UI->WindowSlider, SIGNAL( valueChanged( int ) ),
110 this, SLOT( _windowValue( int ) )
113 this->m_UI->OpacitySlider, SIGNAL( valueChanged( int ) ),
114 this, SLOT( _opacityValue( int ) )
117 this->m_UI->InterpolatorBox, SIGNAL( currentIndexChanged( int ) ),
118 this, SLOT( _interpolatorValue( int ) )
124 // -------------------------------------------------------------------------
125 void cpExtensions::QT::WindowLevelImageConfiguration::
126 _maximumValue( int v )
129 range[ 0 ] = double( this->m_UI->MinimumBox->value( ) );
130 range[ 1 ] = double( v );
131 this->m_Data->SetScalarRange( this->m_Name, range );
134 // -------------------------------------------------------------------------
135 void cpExtensions::QT::WindowLevelImageConfiguration::
136 _minimumValue( int v )
139 range[ 0 ] = double( v );
140 range[ 1 ] = double( this->m_UI->MaximumBox->value( ) );
141 this->m_Data->SetScalarRange( this->m_Name, range );
144 // -------------------------------------------------------------------------
145 void cpExtensions::QT::WindowLevelImageConfiguration::
151 this->m_Data->GetScalarRange( this->m_Name, r );
152 if( this->sender( ) == this->m_UI->LevelSlider )
154 s = double( v ) / double( this->m_UI->LevelSlider->maximum( ) );
155 l = ( ( r[ 1 ] - r[ 0 ] ) * s ) + r[ 0 ];
160 s = ( l - r[ 0 ] ) / ( r[ 1 ] - r[ 0 ] );
163 s *= this->m_UI->LevelSlider->maximum( );
165 bool b = this->m_UI->LevelSlider->blockSignals( true );
166 this->m_UI->LevelSlider->setValue( s );
167 this->m_UI->LevelSlider->blockSignals( b );
168 b = this->m_UI->LevelBox->blockSignals( true );
169 this->m_UI->LevelBox->setValue( l );
170 this->m_UI->LevelBox->blockSignals( b );
172 this->m_Data->SetLevel( this->m_Name, l );
175 // -------------------------------------------------------------------------
176 void cpExtensions::QT::WindowLevelImageConfiguration::
177 _windowValue( int v )
182 this->m_Data->GetScalarRange( this->m_Name, r );
183 if( this->sender( ) == this->m_UI->WindowSlider )
185 s = double( v ) / double( this->m_UI->WindowSlider->maximum( ) );
186 w = ( ( r[ 1 ] - r[ 0 ] ) * s ) + r[ 0 ];
191 s = ( w - r[ 0 ] ) / ( r[ 1 ] - r[ 0 ] );
194 s *= this->m_UI->WindowSlider->maximum( );
196 bool b = this->m_UI->WindowSlider->blockSignals( true );
197 this->m_UI->WindowSlider->setValue( s );
198 this->m_UI->WindowSlider->blockSignals( b );
199 b = this->m_UI->WindowBox->blockSignals( true );
200 this->m_UI->WindowBox->setValue( w );
201 this->m_UI->WindowBox->blockSignals( b );
203 this->m_Data->SetWindow( this->m_Name, w );
206 // -------------------------------------------------------------------------
207 void cpExtensions::QT::WindowLevelImageConfiguration::
208 _opacityValue( int v )
210 if( this->m_Data != NULL )
212 double o = double( v );
213 o -= double( this->m_UI->OpacitySlider->minimum( ) );
215 double( this->m_UI->OpacitySlider->maximum( ) ) -
216 double( this->m_UI->OpacitySlider->minimum( ) );
217 this->m_Data->SetOpacity( this->m_Name, o );
222 // -------------------------------------------------------------------------
223 void cpExtensions::QT::WindowLevelImageConfiguration::
224 _interpolatorValue( int v )
228 case 1 : this->m_Data->SetImageInterpolation( this->m_Name, 'L' ); break;
229 case 2 : this->m_Data->SetImageInterpolation( this->m_Name, 'C' ); break;
230 default : this->m_Data->SetImageInterpolation( this->m_Name, 'N' ); break;
234 #endif // cpExtensions_QT4