From ba9989600c26aef325523e4ea68ca4d3e1a40af7 Mon Sep 17 00:00:00 2001 From: apo Date: Wed, 28 May 2008 07:35:22 +0000 Subject: [PATCH] Fix for Bug IPAL19822 - 4.x: REGRESSION - it is impossible to create any presentation on the filed of the attached med file. --- src/PIPELINE/VISU_ElnoDisassembleFilter.cxx | 51 ++++++++++++--------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/src/PIPELINE/VISU_ElnoDisassembleFilter.cxx b/src/PIPELINE/VISU_ElnoDisassembleFilter.cxx index a1d17d6b..eb84ca41 100644 --- a/src/PIPELINE/VISU_ElnoDisassembleFilter.cxx +++ b/src/PIPELINE/VISU_ElnoDisassembleFilter.cxx @@ -102,8 +102,8 @@ namespace vtkPointData *myOutputPointData; TPointsDataArray *myInputPointsArray; TPointsDataArray *myOutputPointsArray; - TElnoDataArray* myElnoPointDataArray; - TElnoDataArray* myElnoPointVectors; + TElnoDataArray* myElnoFullDataArray; + TElnoDataArray* myElnoPartialDataArray; TPointsDataArray *myElnoPointCoords; vtkIntArray* myInputPointsMapper; vtkIntArray* myOutputPointsMapper; @@ -138,17 +138,21 @@ namespace myOutputPointData->Allocate( aNbPoints ); vtkCellData *anInputCellData = theInput->GetCellData(); - vtkDataArray* aVectors = anInputCellData->GetVectors(); - myElnoPointDataArray = TElnoDataArray::New(); - myElnoPointDataArray->SetName( "VISU_FIELD" ); - myElnoPointDataArray->SetNumberOfComponents( myGetElnoNodeData.getNbComp() ); - myElnoPointDataArray->SetNumberOfTuples( aNbPoints ); - - myElnoPointVectors = TElnoDataArray::New(); - myElnoPointVectors->SetName( aVectors->GetName() ); - myElnoPointVectors->SetNumberOfComponents( 3 ); - myElnoPointVectors->SetNumberOfTuples( aNbPoints ); + // To create a new copy of initial data for output + myElnoFullDataArray = TElnoDataArray::New(); + myElnoFullDataArray->SetName( "VISU_FIELD" ); + myElnoFullDataArray->SetNumberOfComponents( myGetElnoNodeData.getNbComp() ); + myElnoFullDataArray->SetNumberOfTuples( aNbPoints ); + + // To create a new copy of partial initial data for output + myElnoPartialDataArray = TElnoDataArray::New(); + // This partial data can be represented as in terms of vectors as scalars + if ( anInputCellData->GetVectors() != NULL ) + myElnoPartialDataArray->SetNumberOfComponents( 3 ); + else + myElnoPartialDataArray->SetNumberOfComponents( 1 ); + myElnoPartialDataArray->SetNumberOfTuples( aNbPoints ); myElnoPointCoords = TPointsDataArray::New(); myElnoPointCoords->SetName( "ELNO_POINT_COORDS" ); @@ -186,11 +190,14 @@ namespace //anOutputPointData->PassData( anInputPointData ); - myOutputPointData->AddArray( myElnoPointDataArray ); - myElnoPointDataArray->Delete(); + myOutputPointData->AddArray( myElnoFullDataArray ); + myElnoFullDataArray->Delete(); - myOutputPointData->SetVectors( myElnoPointVectors ); - myElnoPointVectors->Delete(); + if ( anInputCellData->GetVectors() != NULL ) + myOutputPointData->SetVectors( myElnoPartialDataArray ); + else + myOutputPointData->SetScalars( myElnoPartialDataArray ); + myElnoPartialDataArray->Delete(); myOutputPointData->AddArray( myElnoPointCoords ); myElnoPointCoords->Delete(); @@ -224,10 +231,10 @@ namespace myOutputPointData->CopyData( myInputPointData, aCurrentPntId, aNewPntId ); TElnoDataType* anElnoData = myGetElnoNodeData( aCellId, aPntId ); - myElnoPointDataArray->SetTupleValue( aNewPntId, anElnoData ); + myElnoFullDataArray->SetTupleValue( aNewPntId, anElnoData ); - myElnoPointDataArray->GetTupleValue( aNewPntId, &anElnoDataValues[ 0 ] ); - myElnoPointVectors->SetTupleValue( aNewPntId, &anElnoDataValues[ 0 ] ); + myElnoFullDataArray->GetTupleValue( aNewPntId, &anElnoDataValues[ 0 ] ); + myElnoPartialDataArray->SetTupleValue( aNewPntId, &anElnoDataValues[ 0 ] ); myInputPointsMapper->GetTupleValue( aCurrentPntId, &anPointsMapperValues[ 0 ] ); myOutputPointsMapper->SetTupleValue( aNewPntId, &anPointsMapperValues[ 0 ] ); @@ -285,10 +292,10 @@ namespace myOutputPointData->CopyData( myInputPointData, aCurrentPntId, aNewPntId ); TElnoDataType* anElnoData = myGetElnoNodeData( aCellId, aPntId ); - myElnoPointDataArray->SetTupleValue( aNewPntId, anElnoData ); + myElnoFullDataArray->SetTupleValue( aNewPntId, anElnoData ); - myElnoPointDataArray->GetTupleValue( aNewPntId, &anElnoDataValues[ 0 ] ); - myElnoPointVectors->SetTupleValue( aNewPntId, &anElnoDataValues[ 0 ] ); + myElnoFullDataArray->GetTupleValue( aNewPntId, &anElnoDataValues[ 0 ] ); + myElnoPartialDataArray->SetTupleValue( aNewPntId, &anElnoDataValues[ 0 ] ); myInputPointsMapper->GetTupleValue( aCurrentPntId, &anPointsMapperValues[ 0 ] ); myOutputPointsMapper->SetTupleValue( aNewPntId, &anPointsMapperValues[ 0 ] ); -- 2.39.2