]> Creatis software - cpPlugins.git/blobdiff - lib/cpExtensions/QT/SimpleMPRWidget.h
...
[cpPlugins.git] / lib / cpExtensions / QT / SimpleMPRWidget.h
index 5aed9ec08f8548e403902a2d1e0e6479d5e0c88e..bc07ed35eb766466bcec6e043967973226d0dd14 100644 (file)
-#ifndef __CPEXTENSIONS__QT__SIMPLEMPRWIDGET__H__
-#define __CPEXTENSIONS__QT__SIMPLEMPRWIDGET__H__
+#ifndef __cpExtensions__QT__SimpleMPRWidget__h__
+#define __cpExtensions__QT__SimpleMPRWidget__h__
 
 #include <cpExtensions/Config.h>
-
-#ifdef cpExtensions_QT4
-
-#include <map>
+#include <cpExtensions/QT/ActorsWidgetInterface.h>
 #include <QWidget>
-#include <vtkPolyDataNormals.h>
-#include <vtkQuadricLODActor.h>
-#include <vtkRenderer.h>
-#include <vtkStripper.h>
 #include <vtkSmartPointer.h>
-#include <cpExtensions/Visualization/ImageSliceActors.h>
-
-/*
-  #include <string>
-  #include <vtkSmartPointer.h>
-  #include <vtkImageData.h>
-  #include <vtkPolyDataMapper.h>
-  #include <vtkPolyDataNormals.h>
-  #include <vtkQuadricLODActor.h>
-  #include <vtkStripper.h>
-  #include <cpExtensions/Visualization/MPRObjects.h>
-*/
+#include <map>
+#include <set>
 
 // -------------------------------------------------------------------------
-// TODO: class QTreeWidgetItem;
-class QVTKWidget;
+class vtkDataSet;
+class vtkProp;
+class vtkPropCollection;
 
-namespace Ui
-{
-  class SimpleMPRWidget;
-}
+namespace Ui { class SimpleMPRWidget; }
 
 // -------------------------------------------------------------------------
 namespace cpExtensions
 {
   namespace QT
   {
+    class MPR3DWidget;
+    class ImageWidget;
+
     /**
      */
     class cpExtensions_EXPORT SimpleMPRWidget
-      : public QWidget
+      : public QWidget,
+        public ActorsWidgetInterface
     {
       Q_OBJECT;
 
     public:
-      typedef SimpleMPRWidget Self;
-
-      typedef cpExtensions::Visualization::ImageSliceActors TActors;
-      /* TODO
-         typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
-         typedef TMPRObjects::TStyle                     TStyle;
-         typedef TMPRObjects::TMouseCommand              TMouseCommand;
-         typedef TMPRObjects::TMouseWheelCommand         TMouseWheelCommand;
-         typedef TMPRObjects::TKeyCommand                TKeyCommand;
-         typedef TMPRObjects::TVoidCommand               TVoidCommand;
-         typedef TMPRObjects::TMouseMoveCommand          TMouseMoveCommand;
-         typedef TMPRObjects::TMouseClickCommand         TMouseClickCommand;
-         typedef TMPRObjects::TMouseDoubleClickCommand   TMouseDoubleClickCommand;
-         typedef TMPRObjects::TExposeCommand             TExposeCommand;
-         typedef TMPRObjects::TConfigureCommand          TConfigureCommand;
-         typedef TMPRObjects::TEnterCommand              TEnterCommand;
-         typedef TMPRObjects::TLeaveCommand              TLeaveCommand;
-      */
-
-      struct PolyDataActor
-      {
-        vtkSmartPointer< vtkPolyData >        Data;
-        vtkSmartPointer< vtkPolyDataNormals > Normals;
-        vtkSmartPointer< vtkStripper >        Stripper;
-        vtkSmartPointer< vtkPolyDataMapper >  Mapper;
-        vtkSmartPointer< vtkQuadricLODActor > Actor;
-
-        void Configure( vtkPolyData* data )
-          {
-            this->Data = data;
-            double r[ 2 ];
-            this->Data->GetScalarRange( r );
-
-            this->Normals  = vtkSmartPointer< vtkPolyDataNormals >::New( );
-            this->Stripper = vtkSmartPointer< vtkStripper >::New( );
-            this->Mapper   = vtkSmartPointer< vtkPolyDataMapper >::New( );
-            this->Actor    = vtkSmartPointer< vtkQuadricLODActor >::New( );
-
-            this->Normals->SetInputData( this->Data );
-            this->Normals->SetFeatureAngle( 60.0 );
-            this->Stripper->SetInputConnection(
-              this->Normals->GetOutputPort( )
-              );
-            this->Mapper->SetInputConnection(
-              this->Stripper->GetOutputPort( )
-              );
-            this->Mapper->UseLookupTableScalarRangeOff( );
-            this->Mapper->SetScalarRange(
-              r[ 0 ], ( ( r[ 1 ] - r[ 0 ] ) * 0.75 ) + r[ 0 ]
-              );
-            this->Actor->SetMapper( this->Mapper );
-            this->Actor->DeferLODConstructionOff( );
-          }
-      };
+      typedef SimpleMPRWidget       Self;
+      typedef QWidget               Superclass;
+      typedef ActorsWidgetInterface Superclass2;
+
+      typedef vtkSmartPointer< vtkPropCollection > TProp;
+      typedef std::set< TProp >                    TProps;
+
+      // typedef cpExtensions::Visualization::MeshActor TMeshActor;
 
     public:
-      explicit SimpleMPRWidget( QWidget* parent = 0 );
+      explicit SimpleMPRWidget( QWidget* parent = NULL, Qt::WindowFlags f = 0 );
       virtual ~SimpleMPRWidget( );
 
-      // Data management
-      void Clear( );
-      void SetMainImage( vtkImageData* image );
-      void AddMesh( vtkPolyData* mesh );
-
-      // Visual objects
-      vtkRenderWindowInteractor* GetInteractor( unsigned int i );
-
-
-      /* TODO
-         unsigned int GetNumberOfData( ) const;
-         bool AddData(
-         vtkImageData* data, const std::string& name,
-         const std::string& parent
-         );
-         bool AddData(
-         vtkPolyData* data, const std::string& name
-         );
-         const std::string& GetMainImage( ) const;
-         bool SetMainImage( const std::string& name );
-         void DeleteData( const std::string& name );
-         void DeleteAllData( );
-
-         // Some qt accessors
-         void SetDataColor(
-         const std::string& name,
-         const double& r, const double& g, const double& b
-         );
-         void ShowData( const std::string& name );
-         void HideData( const std::string& name );
-         void SetWindowLevel( const double& w, const double& l );
-         double GetWindow( ) const;
-         double GetLevel( ) const;
-
-         // Visual objects accessors
-         std::string GetSelectedData( ) const;
-         vtkProp* GetProp( const std::string& name );
-      */
+      void Configure( char q1, char q2, char q3, char q4 );
+
+      bool HasImage( ) const;
+      void SetImage( vtkImageData* image, const std::string& name );
+
+      bool Add( vtkDataSet* data, const std::string& name );
+
+      TProps GetViewProps( const std::string& name ) const;
+      TProps GetImageProps( ) const;
+
+      vtkRenderWindowInteractor* GetXInteractor( );
+      const vtkRenderWindowInteractor* GetXInteractor( ) const;
+      vtkRenderWindowInteractor* GetYInteractor( );
+      const vtkRenderWindowInteractor* GetYInteractor( ) const;
+      vtkRenderWindowInteractor* GetZInteractor( );
+      const vtkRenderWindowInteractor* GetZInteractor( ) const;
+      vtkRenderWindowInteractor* GetWInteractor( );
+      const vtkRenderWindowInteractor* GetWInteractor( ) const;
+
+      vtkRenderWindow* GetXRenderWindow( );
+      const vtkRenderWindow* GetXRenderWindow( ) const;
+      vtkRenderWindow* GetYRenderWindow( );
+      const vtkRenderWindow* GetYRenderWindow( ) const;
+      vtkRenderWindow* GetZRenderWindow( );
+      const vtkRenderWindow* GetZRenderWindow( ) const;
+      vtkRenderWindow* GetWRenderWindow( );
+      const vtkRenderWindow* GetWRenderWindow( ) const;
+
+      void ResetCameras( );
+      void Render( );
+
+      virtual std::set< vtkRenderWindowInteractor* > GetInteractors( ) const cpExtensions_OVERRIDE;
+      virtual std::set< std::string > GetActorsNames( ) const cpExtensions_OVERRIDE;
+      virtual bool IsWindowLevelImageActor( const std::string& name ) const cpExtensions_OVERRIDE;
+      virtual bool IsLUTImageActor( const std::string& name ) const cpExtensions_OVERRIDE;
+      virtual bool Is3DActor( const std::string& name ) const cpExtensions_OVERRIDE;
+
+      virtual void GetScalarRange( const std::string& name, double r[ 2 ] ) const cpExtensions_OVERRIDE;
+      virtual void GetWindowLevel( const std::string& name, double wl[ 2 ] ) const cpExtensions_OVERRIDE;
+      virtual double GetWindow( const std::string& name ) const cpExtensions_OVERRIDE;
+      virtual double GetLevel( const std::string& name ) const cpExtensions_OVERRIDE;
+      virtual char GetImageInterpolation( const std::string& name ) const cpExtensions_OVERRIDE;
+
+      virtual void GetColor( const std::string& name, double& r, double& g, double& b ) const cpExtensions_OVERRIDE;
+      virtual double GetOpacity( const std::string& name ) const cpExtensions_OVERRIDE;
+      virtual double GetPointSize( const std::string& name ) const cpExtensions_OVERRIDE;
+      virtual double GetLineWidth( const std::string& name ) const cpExtensions_OVERRIDE;
+      virtual int GetRepresentation( const std::string& name ) const cpExtensions_OVERRIDE;
+
+      virtual void SetScalarRange( const std::string& name, double r[ 2 ] ) cpExtensions_OVERRIDE;
+      virtual void SetScalarRange( const std::string& name, double min, double max ) cpExtensions_OVERRIDE;
+      virtual void SetWindowLevel( const std::string& name, double wl[ 2 ] ) cpExtensions_OVERRIDE;
+      virtual void SetWindowLevel( const std::string& name, double w, double l ) cpExtensions_OVERRIDE;
+      virtual void SetWindow( const std::string& name, double w ) cpExtensions_OVERRIDE;
+      virtual void SetLevel( const std::string& name, double l ) cpExtensions_OVERRIDE;
+      virtual void SetImageInterpolation( const std::string& name, char i ) cpExtensions_OVERRIDE;
+
+      virtual void SetColor( const std::string& name, double r, double g, double b ) cpExtensions_OVERRIDE;
+      virtual void SetOpacity( const std::string& name, double o ) cpExtensions_OVERRIDE;
+      virtual void SetPointSize( const std::string& name, double s ) cpExtensions_OVERRIDE;
+      virtual void SetLineWidth( const std::string& name, double w ) cpExtensions_OVERRIDE;
+      virtual void SetRepresentationToPoints( const std::string& name ) cpExtensions_OVERRIDE;
+      virtual void SetRepresentationToSurface( const std::string& name ) cpExtensions_OVERRIDE;
+      virtual void SetRepresentationToWireframe( const std::string& name ) cpExtensions_OVERRIDE;
 
     private slots:
       void _SyncBottom( int a, int b );
@@ -151,56 +116,20 @@ namespace cpExtensions
 
     protected:
       Ui::SimpleMPRWidget* m_UI;
-      QVTKWidget*          m_VTK[ 4 ];
-
-      vtkSmartPointer< vtkRenderer > m_Renderers[ 4 ];
-      vtkSmartPointer< TActors >     m_2DSlices[ 3 ];
-      vtkSmartPointer< TActors >     m_3DSlices[ 3 ];
-
-      std::map< vtkPolyData*, PolyDataActor > m_PolyDatas;
-
-      /* TODO
-         static double cm_Colors[ 8 ][ 3 ];
-         vtkSmartPointer< TMPRObjects > m_MPRObjects;
-         struct PolyDataActor
-         {
-         vtkPolyData*        Mesh;
-         vtkPolyDataNormals* Normals;
-         vtkStripper*        Stripper;
-         vtkPolyDataMapper*  Mapper;
-         vtkQuadricLODActor* Actor;
-
-         PolyDataActor( );
-         virtual ~PolyDataActor( );
-         void Configure( vtkPolyData* pd );
-         };
-
-         struct Data
-         {
-         enum { IMAGE, MESH } Tag;
-         vtkImageData*        Image;
-         PolyDataActor        Mesh;
-         Data( );
-         virtual ~Data( );
-         Data& operator=( const Data& data );
-         void SetImageData( vtkImageData* data );
-         void SetPolyData( vtkPolyData* data );
-         vtkImageData* GetImage( );
-         vtkPolyData* GetMesh( );
-         vtkProp* GetMeshActor( );
-         };
-         std::string m_MainImage;
-         std::map< std::string, Data >        m_Data;
-         std::map< std::string, std::string > m_Tree;
-      */
+
+      ImageWidget* m_XImage;
+      ImageWidget* m_YImage;
+      ImageWidget* m_ZImage;
+      MPR3DWidget* m_3DView;
+
+      std::string m_MainImageName;
+      vtkSmartPointer< vtkImageData > m_MainImage;
     };
 
   } // ecapseman
 
 } // ecapseman
 
-#endif // cpExtensions_QT4
-
-#endif // __CPEXTENSIONS__QT__SIMPLEMPRWIDGET__H__
+#endif // __cpExtensions__QT__SimpleMPRWidget__h__
 
 // eof - $RCSfile$