X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPlugins%2FMEDReader%2FIO%2FvtkGenerateVectors.cxx;h=abe812cd6db419e6dc3e100e706832f85290d397;hb=ee690f177c97c5f6093551b09c3cb8ac4a3020d1;hp=c8fa9ca1f5dbb50dc533c0cff16e697aae44b93a;hpb=9dbade0021c7a8e21aedcfb28be257886abed924;p=modules%2Fparavis.git diff --git a/src/Plugins/MEDReader/IO/vtkGenerateVectors.cxx b/src/Plugins/MEDReader/IO/vtkGenerateVectors.cxx index c8fa9ca1..abe812cd 100644 --- a/src/Plugins/MEDReader/IO/vtkGenerateVectors.cxx +++ b/src/Plugins/MEDReader/IO/vtkGenerateVectors.cxx @@ -3,7 +3,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -23,14 +23,24 @@ #include "vtkInformation.h" #include "vtkQuadratureSchemeDefinition.h" #include "MEDUtilities.hxx" -#define protected public #include "vtkFieldData.h" +#include + +const char vtkGenerateVectors::VECTOR_SUFFIX[]="_Vector"; + +std::string vtkGenerateVectors::SuffixFieldName(const std::string& name) +{ + std::ostringstream oss; oss << name << VECTOR_SUFFIX; + return oss.str(); +} + void vtkGenerateVectors::Operate(vtkFieldData *fd) { if(!fd) return ; const int nbOfArrs(fd->GetNumberOfArrays()); + std::vector daToAppend; for(int i=0;iGetArray(i)); @@ -43,9 +53,17 @@ void vtkGenerateVectors::Operate(vtkFieldData *fd) if(nbOfCompo<=1 || nbOfCompo==3) continue; if(nbOfCompo==2) - fd->SetArray(i,Operate2Compo(arrc)); + daToAppend.push_back(Operate2Compo(arrc)); else - fd->SetArray(i,OperateMoreThan3Compo(arrc)); + daToAppend.push_back(OperateMoreThan3Compo(arrc)); + } + for(std::vector::const_iterator it=daToAppend.begin();it!=daToAppend.end();it++) + { + vtkDoubleArray *elt(*it); + if(!elt) + continue; + fd->AddArray(elt); + elt->Delete(); } } @@ -63,7 +81,8 @@ vtkDoubleArray *vtkGenerateVectors::Operate2Compo(vtkDoubleArray *oldArr) pt[3*i+2]=0.; } ret->SetNumberOfComponents(3); - ret->SetName(oldArr->GetName()); + std::string newName(SuffixFieldName(oldArr->GetName())); + ret->SetName(newName.c_str()); ret->SetComponentName(0,oldArr->GetComponentName(0)); ret->SetComponentName(1,oldArr->GetComponentName(1)); ret->SetArray(pt,3*nbOfTuples,0,VTK_DATA_ARRAY_FREE); @@ -86,7 +105,8 @@ vtkDoubleArray *vtkGenerateVectors::OperateMoreThan3Compo(vtkDoubleArray *oldArr pt[3*i+2]=inPt[nbOfCompo*i+2]; } ret->SetNumberOfComponents(3); - ret->SetName(oldArr->GetName()); + std::string newName(SuffixFieldName(oldArr->GetName())); + ret->SetName(newName.c_str()); ret->SetComponentName(0,oldArr->GetComponentName(0)); ret->SetComponentName(1,oldArr->GetComponentName(1)); ret->SetComponentName(2,oldArr->GetComponentName(2));