]> Creatis software - bbtk.git/commitdiff
no message
authorEduardo Davila <Eduardo.Davila@creatis.insa-lyon.fr>
Wed, 11 Apr 2012 14:11:13 +0000 (14:11 +0000)
committerEduardo Davila <Eduardo.Davila@creatis.insa-lyon.fr>
Wed, 11 Apr 2012 14:11:13 +0000 (14:11 +0000)
packages/vtk/src/bbvtkSphereList.cxx [new file with mode: 0644]
packages/vtk/src/bbvtkSphereList.h [new file with mode: 0644]

diff --git a/packages/vtk/src/bbvtkSphereList.cxx b/packages/vtk/src/bbvtkSphereList.cxx
new file mode 100644 (file)
index 0000000..8e552d7
--- /dev/null
@@ -0,0 +1,137 @@
+#include "bbvtkSphereList.h"
+#include "bbvtkPackage.h"
+
+#include <vtkPolyDataMapper.h>
+#include <vtkProperty.h>
+#include <vtkRenderWindow.h>
+
+namespace bbvtk
+{
+
+BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,SphereList)
+BBTK_BLACK_BOX_IMPLEMENTATION(SphereList,bbtk::AtomicBlackBox);
+
+void SphereList::Process()
+{
+
+        int iMin, iMax;
+       double px = 0.0;
+       double py = 0.0;
+       double pz = 0.0;
+       double radio;
+       double spc[3];
+
+       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<iMax ; i=i+1 )
+               {
+                       px = bbGetInputlstPointX()[i]*spc[0];
+                       if (bbGetInputlstPointY().size() == bbGetInputlstPointX().size() )
+                         {
+                           py = bbGetInputlstPointY()[i]*spc[1];
+                         }
+                       if (bbGetInputlstPointZ().size() == bbGetInputlstPointX().size() )
+                         {                     
+                           pz = bbGetInputlstPointZ()[i]*spc[2];
+                         }
+
+                       // If the number of elements in the radio list is different from the number of X coordinates, the radio value is set to 1.
+                       if (bbGetInputlstRadio().size() == bbGetInputlstPointX().size() )
+                         {
+                           radio = bbGetInputlstRadio()[i];
+                         }
+                       else
+                         {
+                           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] );
+                       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)
+                 {
+                   // Sets the output.
+                   bbSetOutputActorList(sphereActor);
+                 }
+
+       } // if (bbGetInputRenderer()!=NULL)
+
+
+}
+
+void SphereList::bbUserSetDefaultValues()
+{
+  bbSetInputRenderer(NULL);
+  bbSetInputTransform(NULL);
+  // Sets default radio to 1.
+  std::vector<double> radio;
+  radio.push_back(1.0);
+  bbSetInputlstRadio(radio);
+
+  // Sets default colour to red.
+  std::vector<double> colour;
+  colour.push_back(1.0);
+  colour.push_back(0.0);
+  colour.push_back(0.0);
+  bbSetInputColour(colour);
+  
+  bbSetInputOpacity(1.0);
+
+}
+
+void SphereList::bbUserInitializeProcessing()
+{
+}
+
+void SphereList::bbUserFinalizeProcessing()
+{
+  
+}
+}
+// EO namespace bbvtk
+
+
diff --git a/packages/vtk/src/bbvtkSphereList.h b/packages/vtk/src/bbvtkSphereList.h
new file mode 100644 (file)
index 0000000..ec632f3
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef __bbvtkSphereList_h_INCLUDED__
+#define __bbvtkSphereList_h_INCLUDED__
+#include "bbvtk_EXPORT.h"
+#include "bbtkAtomicBlackBox.h"
+#include "iostream"
+
+#include <vtkPolyDataMapper.h>
+#include <vtkRenderer.h>
+#include <vtkSphereSource.h>
+#include <vtkLinearTransform.h>
+
+
+namespace bbvtk
+{
+
+class bbvtk_EXPORT SphereList
+ : 
+   public bbtk::AtomicBlackBox
+{
+  BBTK_BLACK_BOX_INTERFACE(SphereList,bbtk::AtomicBlackBox);
+
+  BBTK_DECLARE_INPUT(Renderer ,vtkRenderer*);
+  BBTK_DECLARE_INPUT(lstPointX,std::vector<double>);
+  BBTK_DECLARE_INPUT(lstPointY,std::vector<double>);
+  BBTK_DECLARE_INPUT(lstPointZ,std::vector<double>);
+  BBTK_DECLARE_INPUT(lstRadio ,std::vector<double>);
+  BBTK_DECLARE_INPUT(Colour   ,std::vector<double>);
+  BBTK_DECLARE_INPUT(Transform   ,vtkLinearTransform*);
+
+  BBTK_DECLARE_INPUT(Opacity  ,double);
+
+  BBTK_DECLARE_OUTPUT(ActorList,std::vector<vtkActor*>);
+
+  BBTK_PROCESS(Process);
+  void Process();
+
+  std::vector<vtkActor *> sphereActor;
+  std::vector<vtkPolyDataMapper *> sphereMapper;
+  std::vector<vtkSphereSource *> vtkSphere;
+
+};
+
+BBTK_BEGIN_DESCRIBE_BLACK_BOX(SphereList,bbtk::AtomicBlackBox);
+BBTK_NAME("SphereList");
+BBTK_AUTHOR("InfoTeam  CREATIS");
+BBTK_DESCRIPTION("Builds a sphere list actor given four vectors (X, Y, Z, radius).");
+BBTK_CATEGORY("");
+BBTK_INPUT(SphereList,Renderer,"Renderer",vtkRenderer*,"");
+BBTK_INPUT(SphereList,lstPointX,"List of X coordinates. Requirement: same size as vector Y and vector Z.",std::vector<double>,"");
+BBTK_INPUT(SphereList,lstPointY,"List of Y coordinates. Requirement: same size as vector X and vector Z.",std::vector<double>,"");
+BBTK_INPUT(SphereList,lstPointZ,"List of Z coordinates. Requirement: same size as vector X and vector Y.",std::vector<double>,"");
+BBTK_INPUT(SphereList,lstRadio,"List of Radio values",std::vector<double>,"");
+BBTK_INPUT(SphereList,Colour,"Colour RGB values for the spheres",std::vector<double>,"");
+BBTK_INPUT(SphereList,Opacity,"Opacity of the spheres",double,"");
+BBTK_INPUT(SphereList,Transform,"vtkTransform",vtkLinearTransform*,"");
+
+ BBTK_OUTPUT(SphereList,ActorList,"List of the sphere actors",std::vector<vtkActor*>,"");
+
+BBTK_END_DESCRIBE_BLACK_BOX(SphereList);
+}
+// EO namespace bbvtk
+
+#endif // __bbvtkSphereList_h_INCLUDED__
+