Salome HOME
Fix for the "0051899: curves are not shown in opened study" issue.
[modules/visu.git] / src / CONVERTOR / VISU_Structures_impl.cxx
index dea7c4aa423deaf4fc1ac3c186a395318e2740ec..087ea091a5750898178bd3a995ac45cba5c7b0f2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -39,6 +39,7 @@
 #include <vtkPolyData.h>
 #include <vtkCellType.h>
 #include <vtkCell.h>
+#include <vtkPassThroughFilter.h>
 
 namespace VISU
 {
@@ -303,7 +304,6 @@ namespace VISU
   ::GetMemorySize()
   {
     if(vtkDataSet* anOutput = GetPolyDataOutput()){
-      //anOutput->Update(); // OUV_PORTING
       return anOutput->GetActualMemorySize() * 1024;
     }
     if(myIsDone){
@@ -330,6 +330,18 @@ namespace VISU
     return mySource;
   }
 
+  const PPassThroughFilter&
+  TUnstructuredGridHolder
+  ::GetFilter() const
+  {
+    if(!myFilter.GetPointer()){
+      myFilter = vtkPassThroughFilter::New();
+      myFilter->Delete();
+      myFilter->SetInputData( GetSource() );
+    }
+    return myFilter;
+  }
+
   vtkUnstructuredGrid*
   TUnstructuredGridHolder
   ::GetUnstructuredGridOutput()
@@ -337,12 +349,18 @@ namespace VISU
     return GetSource().GetPointer();
   }
 
+  vtkAlgorithmOutput* 
+  TUnstructuredGridHolder
+  ::GetOutputPort()
+  {
+    return GetFilter()->GetOutputPort();
+  }
+
   unsigned long int
   TUnstructuredGridHolder
   ::GetMemorySize()
   {
     if(vtkDataSet* anOutput = GetUnstructuredGridOutput()){
-      //anOutput->Update(); // OUV_PORTING
       return anOutput->GetActualMemorySize() * 1024;
     }
     if(myIsDone){
@@ -360,7 +378,6 @@ namespace VISU
   {
     if(myIsVTKDone){
       if(vtkDataSet* anOutput = GetOutput()){
-        //anOutput->Update(); // OUV_PORTING
         return anOutput->GetActualMemorySize() * 1024;
       }
     }
@@ -394,6 +411,13 @@ namespace VISU
     return GetFilter()->GetOutput();
   }
 
+  vtkAlgorithmOutput* 
+  TAppendFilterHolder
+  ::GetOutputPort()
+  {
+    return GetFilter()->GetOutputPort();
+  }
+
   //---------------------------------------------------------------
   TAppendPolyDataHolder
   ::TAppendPolyDataHolder()
@@ -419,6 +443,13 @@ namespace VISU
     return GetFilter()->GetOutput();
   }
 
+  vtkAlgorithmOutput* 
+  TAppendPolyDataHolder
+  ::GetOutputPort()
+  {
+    return GetFilter()->GetOutputPort();
+  }
+
 
   //---------------------------------------------------------------
   TMergeFilterHolder
@@ -444,6 +475,13 @@ namespace VISU
     return GetFilter()->GetOutput();
   }
 
+  vtkAlgorithmOutput* 
+  TMergeFilterHolder
+  ::GetOutputPort()
+  {
+    return GetFilter()->GetOutputPort();
+  }
+
 
   //---------------------------------------------------------------
   TMeshImpl
@@ -600,6 +638,14 @@ namespace VISU
     return anAppendFilter->GetOutput();
   }
 
+  vtkAlgorithmOutput* 
+  TProfileImpl
+  ::GetOutputPort()
+  {
+    const PAppendFilter& anAppendFilter = GetFilter();
+    return anAppendFilter->GetOutputPort();
+  }
+
   unsigned long int
   TProfileImpl
   ::GetMemorySize()
@@ -688,7 +734,7 @@ namespace VISU
   TUnstructuredGridIDMapperImpl
   ::SetReferencedMesh( const PNamedIDMapper& theNamedIDMapper )
   {
-    myCommonCellsFilter->SetCellsUG( theNamedIDMapper->GetUnstructuredGridOutput() );
+    myCommonCellsFilter->SetCellsUG( theNamedIDMapper->GetOutputPort() );
   }
 
   void
@@ -698,15 +744,18 @@ namespace VISU
     if ( !myFilter.GetPointer() ) {
       const PAppendFilter& anAppendFilter = myIDMapper->GetFilter();
 
-      vtkUnstructuredGrid* aGeometry = anAppendFilter->GetOutput();
+      vtkAlgorithmOutput* aGeometryConnection = anAppendFilter->GetOutputPort();
+      vtkUnstructuredGrid* aGeometryData = anAppendFilter->GetOutput();
+      anAppendFilter->Update();
+
       const PUnstructuredGrid& aSource = mySource.GetSource();
       vtkUnstructuredGrid* aDataSet = aSource.GetPointer();
-      aDataSet->ShallowCopy( aGeometry );
+      aDataSet->ShallowCopy( aGeometryData );
 
       const PMergeFilter& aFilter = GetFilter();
-      aFilter->SetGeometry( aGeometry );
-      aFilter->SetScalars( aDataSet );
-      aFilter->SetVectors( aDataSet );
+      aFilter->SetGeometryConnection( aGeometryConnection );
+      aFilter->SetScalarsData( aDataSet );
+      aFilter->SetVectorsData( aDataSet );
       aFilter->AddField( "VISU_FIELD", aDataSet );
       aFilter->AddField( "VISU_FIELD_GAUSS_MIN", aDataSet );
       aFilter->AddField( "VISU_FIELD_GAUSS_MAX", aDataSet );
@@ -716,7 +765,7 @@ namespace VISU
       aFilter->AddField( "ELNO_COMPONENT_MAPPER", aDataSet );
       aFilter->AddField( "VISU_POINTS_MAPPER", aDataSet );
 
-      myCommonCellsFilter->SetProfileUG( aFilter->GetUnstructuredGridOutput() );
+      myCommonCellsFilter->SetProfileUG( aFilter->GetOutputPort() );
     }
   }
 
@@ -725,7 +774,9 @@ namespace VISU
   ::GetUnstructuredGridOutput()
   {
     Build();
-    return myCommonCellsFilter->GetOutput();
+    vtkUnstructuredGrid* anOutput = myCommonCellsFilter->GetOutput();
+    myCommonCellsFilter->Update();
+    return anOutput;
   }
 
   vtkDataSet*
@@ -735,6 +786,13 @@ namespace VISU
     return GetUnstructuredGridOutput();
   }
 
+  vtkAlgorithmOutput*
+  TUnstructuredGridIDMapperImpl
+  ::GetOutputPort()
+  {
+    return myCommonCellsFilter->GetOutputPort();
+  }
+
   PUnstructuredGrid
   TUnstructuredGridIDMapperImpl
   ::GetSource()
@@ -806,16 +864,18 @@ namespace VISU
   {
     if ( !myFilter.GetPointer() ) {
       const PAppendPolyData& anAppendFilter = myIDMapper->GetFilter();
-      vtkPolyData* aGeometry = anAppendFilter->GetOutput();
+      vtkAlgorithmOutput* aGeometryConnection = anAppendFilter->GetOutputPort();
+      vtkPolyData* aGeometryData = anAppendFilter->GetOutput();
+      anAppendFilter->Update();
 
       const PPolyData& aSource = mySource.GetSource();
       vtkPolyData* aDataSet = aSource.GetPointer();
-      aDataSet->ShallowCopy( aGeometry );
+      aDataSet->ShallowCopy( aGeometryData );
 
       const PMergeFilter& aFilter = GetFilter();
-      aFilter->SetGeometry( aGeometry );
-      aFilter->SetScalars( aDataSet );
-      aFilter->SetVectors( aDataSet );
+      aFilter->SetGeometryConnection( aGeometryConnection );
+      aFilter->SetScalarsData( aDataSet );
+      aFilter->SetVectorsData( aDataSet );
       aFilter->AddField( "VISU_FIELD", aDataSet );
       aFilter->AddField( "VISU_FIELD_GAUSS_MIN", aDataSet );
       aFilter->AddField( "VISU_FIELD_GAUSS_MAX", aDataSet );
@@ -840,6 +900,13 @@ namespace VISU
     return GetPolyDataOutput();
   }
 
+  vtkAlgorithmOutput*
+  TPolyDataIDMapperImpl
+  ::GetOutputPort()
+  {
+    return myFilter->GetOutputPort();
+  }
+
   PPolyData
   TPolyDataIDMapperImpl
   ::GetSource()
@@ -1017,6 +1084,13 @@ namespace VISU
     return TAppendPolyDataHolder::GetPolyDataOutput();
   }
 
+  vtkAlgorithmOutput*
+  TGaussMeshImpl
+  ::GetOutputPort()
+  {
+    return TAppendPolyDataHolder::GetOutputPort();
+  }
+
   unsigned long int
   TGaussMeshImpl
   ::GetMemorySize()
@@ -1188,6 +1262,13 @@ namespace VISU
     return TAppendFilterHolder::GetUnstructuredGridOutput();
   }
 
+  vtkAlgorithmOutput* 
+  TMeshOnEntityImpl
+  ::GetOutputPort()
+  {
+    return TAppendFilterHolder::GetOutputPort();
+  }
+
   unsigned long int
   TMeshOnEntityImpl
   ::GetMemorySize()
@@ -1260,6 +1341,13 @@ namespace VISU
     return TUnstructuredGridHolder::GetUnstructuredGridOutput();
   }
 
+  vtkAlgorithmOutput* 
+  TFamilyImpl
+  ::GetOutputPort()
+  {
+    return TUnstructuredGridHolder::GetOutputPort();
+  }
+
   unsigned long int
   TFamilyImpl
   ::GetMemorySize()
@@ -1346,6 +1434,13 @@ namespace VISU
     return TAppendFilterHolder::GetUnstructuredGridOutput();
   }
 
+  vtkAlgorithmOutput* 
+  TGroupImpl
+  ::GetOutputPort()
+  {
+    return TAppendFilterHolder::GetOutputPort();
+  }
+
   unsigned long int
   TGroupImpl
   ::GetMemorySize()