X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fvtk%2Fsrc%2FbbvtkSphereList.cxx;h=8d5cfe7069f7604a2069db6f0957d108a9daa25a;hb=f7f26377e49c7ae9e52ae102329b016fd6482da0;hp=8e552d7614300e3e8b1c31d86477f0e0b7b108e4;hpb=076686675e6ef7994bf843e31d5b17341a657325;p=bbtk.git diff --git a/packages/vtk/src/bbvtkSphereList.cxx b/packages/vtk/src/bbvtkSphereList.cxx index 8e552d7..8d5cfe7 100644 --- a/packages/vtk/src/bbvtkSphereList.cxx +++ b/packages/vtk/src/bbvtkSphereList.cxx @@ -1,3 +1,30 @@ +/* + # --------------------------------------------------------------------- + # + # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image + # pour la SantÈ) + # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton + # Previous Authors : Laurent Guigues, Jean-Pierre Roux + # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil + # + # This software is governed by the CeCILL-B license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL-B + # license as circulated by CEA, CNRS and INRIA at the following URL + # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html + # or in the file LICENSE.txt. + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL-B license and that you accept its terms. + # ------------------------------------------------------------------------ */ + + #include "bbvtkSphereList.h" #include "bbvtkPackage.h" @@ -21,58 +48,94 @@ void SphereList::Process() double radio; double spc[3]; + int last_valid_color_index = 0; + if (bbGetInputRenderer()!=NULL) { - spc[0]=spc[1]=spc[2]=1; - - iMin=0; - iMax=bbGetInputlstPointX().size(); - printf("EED SphereList::Process iMax=%d \n", iMax); - // 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 GetProperty() -> SetOpacity( bbGetInputOpacity() ); + } + else + { + if (bbGetInputSpacing().size()==3) + { + spc[0]=bbGetInputSpacing()[0]; + spc[1]=bbGetInputSpacing()[1]; + spc[2]=bbGetInputSpacing()[2]; + } + else + { + spc[0]=spc[1]=spc[2]=1; + } + + 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; + } + // 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. + // Stops at iMax - 1 because of a bug of the box stdReadColumnsDouble creating an extra line at the end of the file. + for ( int i=iMin ; i=1){ - radio = bbGetInputlstRadio()[ bbGetInputlstRadio().size() - 1 ]; - } else { - radio = 1.0; - } - } + { + if (bbGetInputlstRadio().size()>=1) + { + radio = bbGetInputlstRadio()[ bbGetInputlstRadio().size() - 1 ]; + } + else + { + radio = 1.0; + } + } // Sphere vtkSphereSource * newSphere = vtkSphereSource::New(); - vtkSphere.push_back(newSphere); newSphere -> SetThetaResolution(20); newSphere -> SetPhiResolution(20); newSphere -> SetRadius(radio); vtkPolyDataMapper * newMapper = vtkPolyDataMapper::New(); - sphereMapper.push_back(newMapper); newMapper -> SetInput( newSphere -> GetOutput() ); vtkActor * newActor = vtkActor::New(); sphereActor.push_back(newActor); newActor -> SetMapper(newMapper); newActor -> SetOrigin(0, 0, 0); - newActor -> GetProperty() -> SetColor( bbGetInputColour()[0] , bbGetInputColour()[1] , bbGetInputColour()[2] ); + + unsigned int j = 3*i +2; + if (j < bbGetInputColour().size() ) + { + newActor -> GetProperty() -> SetColor( bbGetInputColour()[3*i] , bbGetInputColour()[3*i + 1] , bbGetInputColour()[3*i + 2] ); + last_valid_color_index = 3*i; + } + else + newActor -> GetProperty() -> SetColor( bbGetInputColour()[last_valid_color_index] , bbGetInputColour()[last_valid_color_index + 1] , bbGetInputColour()[last_valid_color_index + 2] ); + newActor -> GetProperty() -> SetOpacity( bbGetInputOpacity() ); newActor -> SetPosition( px,py,pz ); @@ -83,21 +146,21 @@ void SphereList::Process() if (bbGetInputRenderer()!=NULL) - { + { bbGetInputRenderer() -> AddActor( newActor ); - } - - } // for - - if (sphereActor.size() != 0) - { - // Sets the output. - bbSetOutputActorList(sphereActor); - } + } - } // if (bbGetInputRenderer()!=NULL) + } // for + if (sphereActor.size() != 0) + { + // Sets the output. + bbSetOutputActorList(sphereActor); + } + + } // if (bbGetInputRenderer()!=NULL) + } // if (sphereActor.size() != 0) } void SphereList::bbUserSetDefaultValues() @@ -117,7 +180,14 @@ void SphereList::bbUserSetDefaultValues() colour.push_back(0.0); colour.push_back(0.0); bbSetInputColour(colour); - + + // Sets default spacing. + std::vector spacing; + spacing.push_back(1.0); + spacing.push_back(1.0); + spacing.push_back(1.0); + bbSetInputSpacing(spacing); + bbSetInputOpacity(1.0); }