X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fvtk%2Fsrc%2FbbvtkSphereList.cxx;h=616f088d4b5093246a909ec71b00e15bcad69b65;hb=84454af9be8cecfbf41ca7c0198c65efe60f9b48;hp=88537a23097e0fda36d0e3c6626b7d2cf9f10e2e;hpb=5b38d6b216847d6cf69b3e30143aec1a7e5bee3a;p=bbtk.git diff --git a/packages/vtk/src/bbvtkSphereList.cxx b/packages/vtk/src/bbvtkSphereList.cxx index 88537a2..616f088 100644 --- a/packages/vtk/src/bbvtkSphereList.cxx +++ b/packages/vtk/src/bbvtkSphereList.cxx @@ -77,7 +77,6 @@ void SphereList::GetPoint(int i, double &px,double &py,double &pz) { pz = bbGetInputlstPointZ()[i]*spc[2]; } -printf("EED SphereList::GetPoint() %f %f %f\n",px,py,pz); } @@ -99,93 +98,91 @@ void SphereList::GetColor(int i, double &cr,double &cg,double &cb) } } - - void SphereList::Process() { - - int iMin, iMax; - double px = 0.0; - double py = 0.0; - double pz = 0.0; - - double cr = 0.0; - double cg = 0.0; - double cb = 0.0; - if (bbGetInputRenderer()!=NULL) { -// If it is not the first time Process is executed, the actors have already been created. The only thing to do is to update the opacity. - if (sphereActor.size() != 0) - { - for (int i = 0; i < sphereActor.size(); i++) + int sizeLstX=bbGetInputlstPointX().size(); + int sizeLstY=bbGetInputlstPointY().size(); + int sizeLstZ=bbGetInputlstPointZ().size(); + int sizeLstActors=sphereActor.size(); + if ((sizeLstX==sizeLstY) &&(sizeLstX==sizeLstZ)) + { + if (sizeLstActors>sizeLstX) + { + int i; + int diff=sizeLstActors-sizeLstX; + for (i=0;iRemoveActor( sphereActor[0] ); + vtkspheresourceLst[0]->Delete(); + sphereActor[0]->Delete(); + vtkspheresourceLst.erase( vtkspheresourceLst.begin() ); + sphereActor.erase( sphereActor.begin() ); + } // for + } // if size + + if (sizeLstActors SetThetaResolution(20); + newSphere -> SetPhiResolution(20); + newSphere -> SetRadius( 1 ); + vtkPolyDataMapper * newMapper = vtkPolyDataMapper::New(); + newMapper -> SetInput( newSphere -> GetOutput() ); + vtkActor * newActor = vtkActor::New(); + sphereActor.push_back(newActor); + newActor -> SetMapper(newMapper); + newActor -> SetOrigin(0, 0, 0); + if ( bbGetInputTransform()!=NULL ) + { + newActor->SetUserTransform( bbGetInputTransform() ); + } + bbGetInputRenderer()->AddActor( newActor ); + } // for + } // if size + + // Refresh data + for (int i = 0; i < sphereActor.size() ; i++) { + double px = 0.0; + double py = 0.0; + double pz = 0.0; + double cr = 0.0; + double cg = 0.0; + double cb = 0.0; GetPoint(i, px,py,pz); GetColor(i, cr,cg,cb); sphereActor[i] ->SetPosition( px,py,pz ); -printf("EED SphereList::Process() %f %f %f\n",px,py,pz); sphereActor[i] -> GetProperty() -> SetOpacity( bbGetInputOpacity() ); sphereActor[i] -> GetProperty() -> SetColor( cr,cg,cb ); vtkspheresourceLst[i] -> SetRadius( GetRadio(i) ); } // for i - } else { - iMin=0; - iMax=bbGetInputlstPointX().size(); -// printf("EED SphereList::Process iMax=%d \n", iMax); -// for (int i = 0; i < iMax; i++) -// { -// std::cout << "CM SphereList::Process i=" << i << " bbGetInputlstPointX()[i]=" << bbGetInputlstPointX()[i] << std::endl; -// std::cout << "CM SphereList::Process i=" << i << " bbGetInputlstPointY()[i]=" << bbGetInputlstPointY()[i] << std::endl; -// std::cout << "CM SphereList::Process i=" << i << " bbGetInputlstPointZ()[i]=" << bbGetInputlstPointZ()[i] << std::endl; -// } // for i - - // If the vector Y or respectively the vector Z has a different size from the vector X, the position value py or respectively pz is set to 0. - for ( int i=iMin ; i SetThetaResolution(20); - newSphere -> SetPhiResolution(20); - newSphere -> SetRadius( GetRadio(i) ); - - vtkPolyDataMapper * newMapper = vtkPolyDataMapper::New(); - newMapper -> SetInput( newSphere -> GetOutput() ); - - vtkActor * newActor = vtkActor::New(); - sphereActor.push_back(newActor); - newActor -> SetMapper(newMapper); - newActor -> SetOrigin(0, 0, 0); - newActor -> GetProperty() -> SetColor(cr,cg,cb); - newActor -> GetProperty() -> SetOpacity( bbGetInputOpacity() ); - newActor -> SetPosition( px,py,pz ); - - if ( bbGetInputTransform()!=NULL ) - { - newActor->SetUserTransform( bbGetInputTransform() ); - } - - if (bbGetInputRenderer()!=NULL) - { - bbGetInputRenderer() -> AddActor( newActor ); - } - - } // for - - if (sphereActor.size() != 0) + if (sphereActor.size() != 0) { // Sets the output. bbSetOutputActorList(sphereActor); } - - } // if (sphereActor.size() != 0) - } // if (bbGetInputRenderer()!=NULL) + + } else { + printf("EED Warning! SphereList::Process Lst XYZ are not of the same size.\n"); + }// if sizeLst + } else { + printf("EED Warning! SphereList::Process Render not assigned.\n"); + }// if Renderer + +//==================================================================== } + void SphereList::bbUserSetDefaultValues() {