]> Creatis software - cpPlugins.git/blobdiff - lib/cpExtensions/Visualization/ImageSliceActors.cxx
Widget integration (step 6/6): Interactive architecture finished. Needs to be tested...
[cpPlugins.git] / lib / cpExtensions / Visualization / ImageSliceActors.cxx
index 250c2ed5547e08f2a2bb969f7832b97306a54139..5ecb83fa934876563ebf33a2b476c05b63dc9ffd 100644 (file)
@@ -216,64 +216,58 @@ GetStyle( ) const
 void cpExtensions::Visualization::ImageSliceActors::
 PushActorsInto( vtkRenderWindow* window, bool force_style )
 {
+  if( window == NULL )
+    return;
   vtkRenderWindowInteractor* rwi = window->GetInteractor( );
   vtkRenderer* renderer = window->GetRenderers( )->GetFirstRenderer( );
-
+  if( rwi == NULL || renderer == NULL )
+    return;
+  
   // Update style
-  if( rwi != NULL && force_style )
-  {
+  if( force_style )
     if( rwi->GetInteractorStyle( ) != this->Style.GetPointer( ) )
-    {
       rwi->SetInteractorStyle( this->Style );
 
-    } // fi
-
-  } // fi
+  // Update actors
+  unsigned int N = this->GetNumberOfImageActors( );
+  for( unsigned int n = 0; n < N; ++n )
+    renderer->AddActor( this->GetImageActor( n ) );
+  renderer->AddActor( this->CursorActor );
+  renderer->AddActor( this->PlaneActor );
+  renderer->AddActor( this->TextActor );
+  renderer->Modified( );
+
+  // Configure camera
+  vtkCamera* camera = renderer->GetActiveCamera( );
+  if( camera == NULL )
+    return;
 
-  if( renderer != NULL )
+  // Parallel projections are better when displaying 2D images
+  if( force_style )
   {
-    // Update actors
-    unsigned int N = this->GetNumberOfImageActors( );
-    for( unsigned int n = 0; n < N; ++n )
-      renderer->AddActor( this->GetImageActor( n ) );
-    renderer->AddActor( this->CursorActor );
-    renderer->AddActor( this->PlaneActor );
-    renderer->AddActor( this->TextActor );
-    renderer->Modified( );
-
-    // Configure camera
-    vtkCamera* camera = renderer->GetActiveCamera( );
-    if( camera == NULL )
-      return;
-
-    // Parallel projections are better when displaying 2D images
-    if( force_style )
+    int axis = this->GetAxis( );
+    camera->ParallelProjectionOn( );
+    camera->SetFocalPoint( double( 0 ), double( 0 ), double( 0 ) );
+    if( axis == 0 )
     {
-      int axis = this->GetAxis( );
-      camera->ParallelProjectionOn( );
-      camera->SetFocalPoint( double( 0 ), double( 0 ), double( 0 ) );
-      if( axis == 0 )
-      {
-        camera->SetPosition( double( 1 ), double( 0 ), double( 0 ) );
-        camera->SetViewUp  ( double( 0 ), double( 1 ), double( 0 ) );
-      }
-      else if( axis == 1 )
-      {
-        camera->SetPosition( double( 0 ), double( 1 ), double(  0 ) );
-        camera->SetViewUp  ( double( 0 ), double( 0 ), double( -1 ) );
-      }
-      else // if( axis == 2 )
-      {
-        camera->SetPosition( double( 0 ), double( 0 ), double( 1 ) );
-        camera->SetViewUp  ( double( 0 ), double( 1 ), double( 0 ) );
-
-      } // fi
+      camera->SetPosition( double( 1 ), double( 0 ), double( 0 ) );
+      camera->SetViewUp  ( double( 0 ), double( 1 ), double( 0 ) );
+    }
+    else if( axis == 1 )
+    {
+      camera->SetPosition( double( 0 ), double( 1 ), double(  0 ) );
+      camera->SetViewUp  ( double( 0 ), double( 0 ), double( -1 ) );
+    }
+    else // if( axis == 2 )
+    {
+      camera->SetPosition( double( 0 ), double( 0 ), double( 1 ) );
+      camera->SetViewUp  ( double( 0 ), double( 1 ), double( 0 ) );
 
     } // fi
-    renderer->ResetCamera( );
-    rwi->Render( );
 
   } // fi
+  renderer->ResetCamera( );
+  rwi->Render( );
 }
 
 // -------------------------------------------------------------------------
@@ -977,6 +971,7 @@ UpdateText( )
 void cpExtensions::Visualization::ImageSliceActors::
 UpdateText( double pos[ 3 ] )
 {
+  /* TODO
   if( this->SliceMappers.size( ) > 0 )
   {
     char axis;
@@ -1033,6 +1028,7 @@ UpdateText( double pos[ 3 ] )
   this->TextActor->SetInput( this->TextBuffer );
   this->TextActor->Modified( );
   this->Modified( );
+  */
 }
 
 // -------------------------------------------------------------------------
@@ -1248,7 +1244,16 @@ _MouseDoubleClickCommand(
     if( !alt && !ctr && !sft )
       actors->SetCursor( pos );
     else if( !alt && ctr && !sft && actors->SlicesCommand != NULL )
+    {
       actors->SlicesCommand( pos, actors->GetAxis( ), actors->SlicesData );
+      for( unsigned int i = 0; i < actors->CursorCommands.size( ); ++i )
+        actors->CursorCommands[ i ].first(
+          pos,
+          actors->GetAxis( ),
+          actors->CursorCommands[ i ].second
+          );
+
+    } // fi
   }
   else if( btn == ImageInteractorStyle::ButtonID_Middle )
   {