]> Creatis software - cpPlugins.git/blobdiff - lib/cpExtensions/Visualization/MPR3DActors.cxx
yet another refactoring
[cpPlugins.git] / lib / cpExtensions / Visualization / MPR3DActors.cxx
diff --git a/lib/cpExtensions/Visualization/MPR3DActors.cxx b/lib/cpExtensions/Visualization/MPR3DActors.cxx
new file mode 100644 (file)
index 0000000..b3f4700
--- /dev/null
@@ -0,0 +1,186 @@
+#include <cpExtensions/Visualization/MPR3DActors.h>
+#include <cpExtensions/Visualization/ImageSliceActors.h>
+#include <cpExtensions/Visualization/LUTImageActor.h>
+#include <cpExtensions/Visualization/WindowLevelImageActor.h>
+#include <vtkActor.h>
+#include <vtkImageProperty.h>
+#include <vtkPolyData.h>
+
+// -------------------------------------------------------------------------
+cpExtensions::Visualization::MPR3DActors::
+Self* cpExtensions::Visualization::MPR3DActors::
+New( )
+{
+  return( new Self( ) );
+}
+
+// -------------------------------------------------------------------------
+vtkImageData* cpExtensions::Visualization::MPR3DActors::
+GetImage( )
+{
+  return( this->m_Slices[ 0 ]->GetImage( ) );
+}
+
+// -------------------------------------------------------------------------
+const vtkImageData* cpExtensions::Visualization::MPR3DActors::
+GetImage( ) const
+{
+  return( this->m_Slices[ 0 ]->GetImage( ) );
+}
+
+// -------------------------------------------------------------------------
+cpExtensions::Visualization::
+WindowLevelImageActor* cpExtensions::Visualization::MPR3DActors::
+GetWindowLevelImageActor( int o )
+{
+  return( this->m_Slices[ o % 3 ]->GetWindowLevelImageActor( ) );
+}
+
+// -------------------------------------------------------------------------
+const cpExtensions::Visualization::
+WindowLevelImageActor* cpExtensions::Visualization::MPR3DActors::
+GetWindowLevelImageActor( int o ) const
+{
+  return( this->m_Slices[ o % 3 ]->GetWindowLevelImageActor( ) );
+}
+
+// -------------------------------------------------------------------------
+cpExtensions::Visualization::
+LUTImageActor* cpExtensions::Visualization::MPR3DActors::
+GetLUTImageActor( int o )
+{
+  return( this->m_Slices[ o % 3 ]->GetLUTImageActor( ) );
+}
+
+// -------------------------------------------------------------------------
+const cpExtensions::Visualization::
+LUTImageActor* cpExtensions::Visualization::MPR3DActors::
+GetLUTImageActor( int o ) const
+{
+  return( this->m_Slices[ o % 3 ]->GetLUTImageActor( ) );
+}
+
+// -------------------------------------------------------------------------
+cpExtensions::Visualization::
+ImageOutlineActor* cpExtensions::Visualization::MPR3DActors::
+GetImageOutlineActor( int o )
+{
+  return( this->m_Slices[ o % 3 ]->GetImageOutlineActor( ) );
+}
+
+// -------------------------------------------------------------------------
+const cpExtensions::Visualization::
+ImageOutlineActor* cpExtensions::Visualization::MPR3DActors::
+GetImageOutlineActor( int o ) const
+{
+  return( this->m_Slices[ o % 3 ]->GetImageOutlineActor( ) );
+}
+
+// -------------------------------------------------------------------------
+int cpExtensions::Visualization::MPR3DActors::
+GetSliceNumber( int o ) const
+{
+  return( this->m_Slices[ o % 3 ]->GetSliceNumber( ) );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::MPR3DActors::
+SetImage( vtkImageData* image )
+{
+  this->RemoveAllItems( );
+  for( int i = 0; i < 3; ++i )
+  {
+    this->m_Slices[ i ]->SetImage( image, i );
+    this->m_Slices[ i ]->InitTraversal( );
+    while( vtkProp* p = this->m_Slices[ i ]->GetNextProp( ) )
+      this->AddItem( p );
+    
+  } // rof
+}
+
+// -------------------------------------------------------------------------
+unsigned int cpExtensions::Visualization::MPR3DActors::
+AddLUTImage( vtkImageData* image )
+{
+  unsigned int res = 0;
+  for( int i = 0; i < 3; ++i )
+  {
+    res = this->m_Slices[ i ]->AddLUTImage( image );
+    this->AddItem( this->m_Slices[ i ]->GetLUTImageActor( ) );
+
+  } // rof
+  return( res );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::MPR3DActors::
+SetSliceNumber( int o, int s )
+{
+  this->m_Slices[ o % 3 ]->SetSliceNumber( s );
+}
+
+// -------------------------------------------------------------------------
+vtkActor* cpExtensions::Visualization::MPR3DActors::
+AddMesh( vtkPolyData* mesh )
+{
+  TMeshActor actor;
+  actor.SetMesh( mesh );
+  this->m_Meshes[ mesh ] = actor;
+  this->AddItem( actor.GetActor( ) );
+  return( actor.GetActor( ) );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::MPR3DActors::
+SetScalarRange( double r[ 2 ] )
+{
+  this->m_Slices[ 0 ]->GetWindowLevelImageActor( )->SetRange( r );
+  this->m_Slices[ 1 ]->GetWindowLevelImageActor( )->SetRange( r );
+  this->m_Slices[ 2 ]->GetWindowLevelImageActor( )->SetRange( r );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::MPR3DActors::
+SetWindowLevel( double wl[ 2 ] )
+{
+  this->m_Slices[ 0 ]->GetWindowLevelImageActor( )->SetWindowLevel( wl );
+  this->m_Slices[ 1 ]->GetWindowLevelImageActor( )->SetWindowLevel( wl );
+  this->m_Slices[ 2 ]->GetWindowLevelImageActor( )->SetWindowLevel( wl );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::MPR3DActors::
+SetImageOpacity( double o )
+{
+  this->m_Slices[ 0 ]->GetWindowLevelImageActor( )->
+    GetProperty( )->SetOpacity( o );
+  this->m_Slices[ 1 ]->GetWindowLevelImageActor( )->
+    GetProperty( )->SetOpacity( o );
+  this->m_Slices[ 2 ]->GetWindowLevelImageActor( )->
+    GetProperty( )->SetOpacity( o );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::MPR3DActors::
+SetImageInterpolation( unsigned char i )
+{
+  // TODO
+}
+
+// -------------------------------------------------------------------------
+cpExtensions::Visualization::MPR3DActors::
+MPR3DActors( )
+  : Superclass( )
+{
+  this->m_Slices[ 0 ] = vtkSmartPointer< ImageSliceActors >::New( );
+  this->m_Slices[ 1 ] = vtkSmartPointer< ImageSliceActors >::New( );
+  this->m_Slices[ 2 ] = vtkSmartPointer< ImageSliceActors >::New( );
+}
+
+// -------------------------------------------------------------------------
+cpExtensions::Visualization::MPR3DActors::
+~MPR3DActors( )
+{
+}
+
+// eof - $RCSfile$