]> Creatis software - cpPlugins.git/blobdiff - lib/cpExtensions/QT/SimpleMPRWidget.h
...
[cpPlugins.git] / lib / cpExtensions / QT / SimpleMPRWidget.h
index 5aed9ec08f8548e403902a2d1e0e6479d5e0c88e..149abb84184b45e28172178971a8e7b26fc4cae7 100644 (file)
 #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>
-*/
+#define cpExtensions_MAX_POLYS 65535
 
 // -------------------------------------------------------------------------
-// TODO: class QTreeWidgetItem;
 class QVTKWidget;
 
 namespace Ui
@@ -50,29 +40,16 @@ namespace cpExtensions
       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;
+        vtkSmartPointer< vtkActor >           Actor;
 
         void Configure( vtkPolyData* data )
           {
@@ -83,8 +60,6 @@ namespace cpExtensions
             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(
@@ -94,11 +69,23 @@ namespace cpExtensions
               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( );
+            this->Mapper->SetScalarRange( r[ 0 ], r[ 1 ] );
+
+            unsigned long nPolys = this->Data->GetNumberOfPolys( );
+            if( nPolys < cpExtensions_MAX_POLYS )
+            {
+              this->Actor = vtkSmartPointer< vtkActor >::New( );
+              this->Actor->SetMapper( this->Mapper );
+            }
+            else
+            {
+              vtkSmartPointer< vtkQuadricLODActor > actor =
+                vtkSmartPointer< vtkQuadricLODActor >::New( );
+              actor->SetMapper( this->Mapper );
+              actor->DeferLODConstructionOff( );
+              this->Actor = actor.GetPointer( );
+
+            } // fi
           }
       };
 
@@ -114,37 +101,6 @@ namespace cpExtensions
       // 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 );
-      */
-
     private slots:
       void _SyncBottom( int a, int b );
       void _SyncTop( int a, int b );
@@ -158,41 +114,6 @@ namespace cpExtensions
       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;
-      */
     };
 
   } // ecapseman