+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::ImageSliceActors::
+ResetAxesCursor( )
+{
+ if( this->m_ImageMapper.GetPointer( ) != NULL )
+ {
+ double pos[] =
+ {
+ this->m_VisibleBounds[ 0 ],
+ this->m_VisibleBounds[ 2 ],
+ this->m_VisibleBounds[ 4 ]
+ };
+ this->SetAxesCursor( pos );
+ }
+ else
+ {
+ vtkPoints* points = this->m_Axis1->GetPoints( );
+ points->SetPoint( 0, 0, 0, 0 );
+ points->SetPoint( 1, 0, 0, 0 );
+ this->m_Axis1->Modified( );
+ this->m_Axis1Mapper->Modified( );
+ this->m_Axis1Actor->Modified( );
+
+ points = this->m_Axis2->GetPoints( );
+ points->SetPoint( 0, 0, 0, 0 );
+ points->SetPoint( 1, 0, 0, 0 );
+ this->m_Axis2->Modified( );
+ this->m_Axis2Mapper->Modified( );
+ this->m_Axis2Actor->Modified( );
+
+ } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::ImageSliceActors::
+SetAxesCursor( 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 ];
+
+ p0[ a2 ] = p1[ a2 ] = pos[ a2 ];
+ p2[ a1 ] = p3[ a1 ] = pos[ a1 ];
+ p0[ a0 ] = p1[ a0 ] = p2[ a0 ] = p3[ a0 ] = bounds[ ma0 ];
+ p0[ a1 ] = bounds[ ma1 ];
+ p1[ a1 ] = bounds[ ma1 + 1 ];
+ p2[ a2 ] = bounds[ ma2 ];
+ p3[ a2 ] = bounds[ ma2 + 1 ];
+
+ vtkPoints* points1 = this->m_Axis1->GetPoints( );
+ points1->SetPoint( 0, p2 );
+ points1->SetPoint( 1, p3 );
+
+ vtkPoints* points2 = this->m_Axis2->GetPoints( );
+ points2->SetPoint( 0, p0 );
+ points2->SetPoint( 1, p1 );
+
+ this->m_Axis1->Modified( );
+ this->m_Axis1Mapper->Modified( );
+ this->m_Axis1Actor->Modified( );
+
+ this->m_Axis2->Modified( );
+ this->m_Axis2Mapper->Modified( );
+ this->m_Axis2Actor->Modified( );