]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/OrthoNormalBase.h
...
[cpPlugins.git] / lib / cpPlugins / OrthoNormalBase.h
index 46983dcf107538179553f713bcf2df5a990c1141..d1ef29e48cb3542bfada3f9cb1c9038d2d762107 100644 (file)
@@ -2,6 +2,16 @@
 #define __CPPLUGINS__ORTHONORMALBASE__H__
 
 #include <cpPlugins/DataObject.h>
+#include <vtkActor.h>
+#include <vtkAxes.h>
+#include <vtkPolyDataMapper.h>
+#include <vtkActor.h>
+#include <vtkCellArray.h>
+#include <vtkPoints.h>
+#include <vtkPolyData.h>
+#include <vtkPolyDataMapper.h>
+
+#include <vtkSmartPointer.h>
 
 namespace cpPlugins
 {
@@ -16,6 +26,35 @@ namespace cpPlugins
     typedef itk::SmartPointer< Self >       Pointer;
     typedef itk::SmartPointer< const Self > ConstPointer;
 
+    struct BaseActor
+    {
+      vtkSmartPointer< vtkPolyData >       Axes;
+      vtkSmartPointer< vtkPolyDataMapper > Mapper;
+      vtkSmartPointer< vtkActor >          Actor;
+
+      void SetBase( vtkMatrix4x4* matrix )
+        {
+          this->Axes = vtkSmartPointer< vtkPolyData >::New( );
+          this->Mapper = vtkSmartPointer< vtkPolyDataMapper >::New( );
+          this->Actor = vtkSmartPointer< vtkActor >::New( );
+
+          vtkSmartPointer< vtkPoints > points = vtkSmartPointer< vtkPoints >::New( );
+          points->InsertNextPoint( 0, 0, 0 );
+          points->InsertNextPoint( 1, 0, 0 );
+          points->InsertNextPoint( 0, 1, 0 );
+          points->InsertNextPoint( 0, 0, 1 );
+          vtkSmartPointer< vtkCellArray > lines = vtkSmartPointer< vtkCellArray >::New( );
+          lines->InsertNextCell( 2 ); lines->InsertCellPoint( 0 ); lines->InsertCellPoint( 1 );
+          lines->InsertNextCell( 2 ); lines->InsertCellPoint( 0 ); lines->InsertCellPoint( 2 );
+          lines->InsertNextCell( 2 ); lines->InsertCellPoint( 0 ); lines->InsertCellPoint( 3 );
+          this->Axes->SetPoints( points );
+          this->Axes->SetLines( lines );
+
+          this->Mapper->SetInputData( this->Axes );
+          this->Actor->SetMapper( this->Mapper );
+        }
+    };
+
   public:
     itkNewMacro( Self );
     itkTypeMacro( OrthoNormalBase, DataObject );
@@ -28,6 +67,9 @@ namespace cpPlugins
     template< class _TMatrix >
       inline void SetITK( const _TMatrix& m );
 
+    template< class _TMatrix, class _TVector >
+      inline void SetITK( const _TMatrix& m, const _TVector& v );
+
   protected:
     OrthoNormalBase( );
     virtual ~OrthoNormalBase( );
@@ -38,6 +80,9 @@ namespace cpPlugins
     // Purposely not implemented
     OrthoNormalBase( const Self& );
     Self& operator=( const Self& );
+
+  protected:
+    mutable BaseActor m_BaseActor;
   };
 
 } // ecapseman