+ if( this->m_ImageActor.GetPointer( ) == NULL )
+ {
+ bounds[ 0 ] = bounds[ 2 ] = bounds[ 4 ] = double( -1 );
+ bounds[ 1 ] = bounds[ 3 ] = bounds[ 5 ] = double( -1 );
+ }
+ else
+ this->m_ImageActor->GetDisplayBounds( bounds );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::ImageSliceActors::
+ResetCursor( )
+{
+ if( this->m_ImageMapper.GetPointer( ) != NULL )
+ {
+ double bounds[ 6 ];
+ this->m_ImageMapper->GetInput( )->GetBounds( bounds );
+ double pos[] =
+ {
+ this->m_VisibleBounds[ 0 ],
+ this->m_VisibleBounds[ 2 ],
+ this->m_VisibleBounds[ 4 ]
+ };
+ this->SetCursor( pos );
+ }
+ else
+ {
+ vtkPoints* points = this->m_Cursor->GetPoints( );
+ points->SetPoint( 0, 0, 0, 0 );
+ points->SetPoint( 1, 0, 0, 0 );
+ points->SetPoint( 2, 0, 0, 0 );
+ points->SetPoint( 3, 0, 0, 0 );
+ points->SetPoint( 4, 0, 0, 0 );
+ points->SetPoint( 5, 0, 0, 0 );
+ points->SetPoint( 6, 0, 0, 0 );
+ points->SetPoint( 7, 0, 0, 0 );
+ this->m_Cursor->Modified( );
+ this->m_CursorMapper->Modified( );
+ this->m_CursorActor->Modified( );
+
+ } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::ImageSliceActors::
+SetCursor( double pos[ 3 ] )
+{
+ if( this->m_ImageMapper.GetPointer( ) == NULL )
+ return;
+
+ // Get ordered axes
+ int a0 = this->GetAxis( );
+ int a1 = ( a0 + 1 ) % 3;
+ int a2 = ( a0 + 2 ) % 3;
+ int ma0 = a0 << 1;
+ int ma1 = a1 << 1;
+ int ma2 = a2 << 1;
+
+ // Update cross
+ double* bounds = this->m_VisibleBounds;
+ double
+ p0[ 3 ], p1[ 3 ], p2[ 3 ], p3[ 3 ],
+ p4[ 3 ], p5[ 3 ], p6[ 3 ], p7[ 3 ];
+
+ p0[ a2 ] = p1[ a2 ] = p4[ a2 ] = p5[ a2 ] = pos[ a2 ];
+ p2[ a1 ] = p3[ a1 ] = p6[ a1 ] = p7[ a1 ] = pos[ a1 ];
+ p0[ a0 ] = p1[ a0 ] = p2[ a0 ] = p3[ a0 ] = bounds[ ma0 ];
+ p4[ a0 ] = p5[ a0 ] = p6[ a0 ] = p7[ a0 ] = bounds[ ma0 + 1 ];
+ p0[ a1 ] = p4[ a1 ] = bounds[ ma1 ];
+ p1[ a1 ] = p5[ a1 ] = bounds[ ma1 + 1 ];
+ p2[ a2 ] = p6[ a2 ] = bounds[ ma2 ];
+ p3[ a2 ] = p7[ a2 ] = bounds[ ma2 + 1 ];
+
+ vtkPoints* points = this->m_Cursor->GetPoints( );
+ points->SetPoint( 0, p0 );
+ points->SetPoint( 1, p1 );
+ points->SetPoint( 2, p2 );
+ points->SetPoint( 3, p3 );
+ points->SetPoint( 4, p4 );
+ points->SetPoint( 5, p5 );
+ points->SetPoint( 6, p6 );
+ points->SetPoint( 7, p7 );
+ this->m_Cursor->Modified( );
+ this->m_CursorMapper->Modified( );
+ this->m_CursorActor->Modified( );
+}
+
+// -------------------------------------------------------------------------
+double cpExtensions::Visualization::ImageSliceActors::
+GetMinWindow( ) const
+{
+ if( this->m_ImageBlender.GetPointer( ) != NULL )
+ return( this->m_ImageBlender->GetMinWindow( ) );
+ else
+ return( double( 0 ) );
+}
+
+// -------------------------------------------------------------------------
+double cpExtensions::Visualization::ImageSliceActors::
+GetMaxWindow( ) const
+{
+ if( this->m_ImageBlender.GetPointer( ) != NULL )
+ return( this->m_ImageBlender->GetMaxWindow( ) );
+ else
+ return( double( 0 ) );
+}
+
+// -------------------------------------------------------------------------
+double cpExtensions::Visualization::ImageSliceActors::
+GetMinLevel( ) const
+{
+ if( this->m_ImageBlender.GetPointer( ) != NULL )
+ return( this->m_ImageBlender->GetMinLevel( ) );
+ else
+ return( double( 0 ) );
+}
+
+// -------------------------------------------------------------------------
+double cpExtensions::Visualization::ImageSliceActors::
+GetMaxLevel( ) const
+{
+ if( this->m_ImageBlender.GetPointer( ) != NULL )
+ return( this->m_ImageBlender->GetMaxLevel( ) );
+ else
+ return( double( 0 ) );
+}
+
+// -------------------------------------------------------------------------
+double cpExtensions::Visualization::ImageSliceActors::
+GetWindow( ) const
+{
+ if( this->m_ImageBlender.GetPointer( ) != NULL )
+ return( this->m_ImageBlender->GetWindow( ) );
+ else
+ return( double( 0 ) );
+}
+
+// -------------------------------------------------------------------------
+double cpExtensions::Visualization::ImageSliceActors::
+GetLevel( ) const
+{
+ if( this->m_ImageBlender.GetPointer( ) != NULL )
+ return( this->m_ImageBlender->GetLevel( ) );
+ else
+ return( double( 0 ) );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::ImageSliceActors::
+SetWindow( double w )
+{
+ if( this->m_ImageBlender.GetPointer( ) != NULL )
+ {
+ this->m_ImageBlender->SetWindow( w );
+ this->Modified( );
+
+ } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::ImageSliceActors::
+SetLevel( double l )
+{
+ if( this->m_ImageBlender.GetPointer( ) != NULL )
+ {
+ this->m_ImageBlender->SetLevel( l );
+ this->Modified( );
+
+ } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::ImageSliceActors::
+SetWindowLevel( double w, double l )
+{
+ if( this->m_ImageBlender.GetPointer( ) != NULL )
+ {
+ this->m_ImageBlender->SetWindowLevel( w, l );
+ this->UpdateText( w, l );
+ this->Modified( );
+
+ } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::ImageSliceActors::
+ResetWindowLevel( )
+{
+ std::cerr << "ACA Resetear" << std::endl;
+ std::exit( 1 );