Salome HOME
Fix for Bug IPAL8945
[modules/visu.git] / src / PIPELINE / VISUPipeLine.cxx
index e1f35eaa90576e292df6f0bad41bec2601821920..d1ac8fe3f9f25b176508c889eda26470f9f6c7e3 100644 (file)
 #include "VISU_DeformedShapePL.hxx"
 #include "VISU_VectorsPL.hxx"
 #include "VISU_StreamLinesPL.hxx"
+#include "VISU_GaussPointsPL.hxx"
 #include "VISU_Plot3DPL.hxx"
 
-typedef VISU_Plot3DPL TPresent;
+typedef VISU_GaussPointsPL TPresent;
 
 #include <vtkUnstructuredGrid.h>
 #include <vtkDataSetMapper.h>
 
 #include <vtkRenderWindowInteractor.h>
 #include <vtkRenderWindow.h>
+#include <vtkImageData.h>
 #include <vtkRenderer.h>
 #include <vtkCamera.h>
 #include <vtkActor.h>
@@ -64,6 +66,9 @@ int main(int argc, char** argv){
       vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
       iren->SetRenderWindow(renWin);
       VISU_Convertor* aConvertor = CreateConvertor(argv[1]);
+      aConvertor->BuildEntities();
+      aConvertor->BuildFields();
+      aConvertor->BuildMinMax();
       const VISU::TMeshMap& aMeshMap = aConvertor->GetMeshMap();
       VISU::TMeshMap::const_iterator aMeshMapIter = aMeshMap.begin();
       if(aMeshMapIter == aMeshMap.end()) return 0;
@@ -74,7 +79,10 @@ int main(int argc, char** argv){
       if(isOnlyMesh){
        const VISU::TEntity& anEntity = VISU::CELL_ENTITY;
        aMeshOnEntityMapIter = aMeshOnEntityMap.find(anEntity);
-       vtkUnstructuredGrid* aDataSet = aConvertor->GetMeshOnEntity(aMeshName,anEntity);
+
+       VISU::PIDMapper anIDMapper = 
+         aConvertor->GetMeshOnEntity(aMeshName,anEntity);
+       VISU::TVTKOutput* aDataSet = anIDMapper->GetVTKOutput();
 
        VISU_MeshPL* aPresent = VISU_MeshPL::New();
        aPresent->SetInput(aDataSet);
@@ -100,23 +108,43 @@ int main(int argc, char** argv){
        VISU::TFieldMap::const_iterator aFieldMapIter = aFieldMap.begin();
        for(; aFieldMapIter != aFieldMap.end(); aFieldMapIter++){
          const VISU::PField aField = aFieldMapIter->second;
-         if(aField->myNbComp == 1) continue;
+         /*
+         if(aField->myNbComp == 1) 
+           continue;
+         */
          const string& aFieldName = aFieldMapIter->first;
          const VISU::TValField& aValField = aField->myValField;
          VISU::TValField::const_iterator aValFieldIter = aValField.begin();
          if(aValFieldIter == aValField.end()) return 0;
          int aTimeStamp = aValFieldIter->first;
-         vtkUnstructuredGrid* aDataSet = aConvertor->GetTimeStampOnMesh(aMeshName,anEntity,aFieldName,aTimeStamp);
 
          TPresent* aPresent = TPresent::New();
-         aPresent->SetInput(aDataSet);
+         VISU::PIDMapper anIDMapper;
+         if(anEntity != VISU::NODE_ENTITY){
+           VISU::PGaussPtsIDMapper aGaussPtsIDMapper = aConvertor->GetTimeStampOnGaussPts(aMeshName,anEntity,aFieldName,aTimeStamp);
+           aPresent->SetGaussPtsIDMapper(aGaussPtsIDMapper);
+         }else{
+           continue;
+           VISU::PIDMapper anIDMapper = aConvertor->GetTimeStampOnMesh(aMeshName,anEntity,aFieldName,aTimeStamp);
+           aPresent->SetIDMapper(anIDMapper);
+         }
+
          aPresent->Build();
          aPresent->Init();
-         aPresent->SetSourceRange();
-         //aPresent->SetNumberOfContours(50);
-         //aPresent->SetNbParts(1);
-         //aPresent->SetOrientation(VISU_CutPlanesPL::XY,0.0,0.0);
-         //aPresent->SetScaling(VTK_SCALE_LOG10);
+
+         char aMainTexture[80];
+         strcpy( aMainTexture, getenv( "VISU_ROOT_DIR" ) );
+         strcat( aMainTexture, "/share/salome/resources/sprite_texture.vti" );
+         //cout << aMainTexture << endl;
+
+         char anAlphaTexture[80];
+         strcpy( anAlphaTexture, getenv( "VISU_ROOT_DIR" ) );
+         strcat( anAlphaTexture, "/share/salome/resources/sprite_alpha.vti" );
+         //cout << anAlphaTexture << endl;
+
+         vtkSmartPointer<vtkImageData> aTextureValue = VISU_GaussPointsPL::MakeTexture( aMainTexture, anAlphaTexture );
+         aPresent->SetImageData( aTextureValue.GetPointer() );
+
          aPresent->Update();
 
          vtkActor* anActor = vtkActor::New();
@@ -125,8 +153,6 @@ int main(int argc, char** argv){
          VISU_ScalarBarActor * aScalarBar = VISU_ScalarBarActor::New();
          aScalarBar->SetLookupTable(aPresent->GetBarTable());
 
-         aPresent->Build();
-
          ren->AddActor(anActor);
          ren->AddActor2D(aScalarBar);