double SphereList::GetRadio(int i)
{
double radio;
- if (bbGetInputlstRadio().size()==0)
+ if ( bbGetInputlstRadio().size()==0 )
{
radio = 1.0;
- } else if (bbGetInputlstRadio().size() < i )
+ } else if ( i<bbGetInputlstRadio().size() )
{
radio = bbGetInputlstRadio()[i];
} else
}
+void SphereList::GetColor(int i, double &cr,double &cg,double &cb)
+ {
+ unsigned int j = 3*i +2;
+ if (j < bbGetInputColour().size() )
+ {
+ cr=bbGetInputColour()[3*i+0];
+ cg=bbGetInputColour()[3*i+1];
+ cb=bbGetInputColour()[3*i+2];
+
+ } else {
+ int lastValidColorIndex = (bbGetInputColour().size()-1)/3;
+ lastValidColorIndex = lastValidColorIndex*3;
+ cr=bbGetInputColour()[ lastValidColorIndex+0 ];
+ cg=bbGetInputColour()[ lastValidColorIndex+1 ];
+ cb=bbGetInputColour()[ lastValidColorIndex+2 ];
+ }
+}
+
+
void SphereList::Process()
{
double px = 0.0;
double py = 0.0;
double pz = 0.0;
-
-
- int last_valid_color_index = 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.
for (int i = 0; i < sphereActor.size(); i++)
{
GetPoint(i, px,py,pz);
+ GetColor(i, cr,cg,cb);
sphereActor[i] ->SetPosition( px,py,pz );
sphereActor[i] -> GetProperty() -> SetOpacity( bbGetInputOpacity() );
+ sphereActor[i] -> GetProperty() -> SetColor( cr,cg,cb );
vtkspheresourceLst[i] -> SetRadius( GetRadio(i) );
} // for i
} else {
GetPoint(i, px,py,pz);
-
+ GetColor(i, cr,cg,cb);
// Sphere
vtkActor * newActor = vtkActor::New();
sphereActor.push_back(newActor);
newActor -> SetMapper(newMapper);
- newActor -> SetOrigin(0, 0, 0);
-
- 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 -> SetOrigin(0, 0, 0);
+ newActor -> GetProperty() -> SetColor(cr,cg,cb);
newActor -> GetProperty() -> SetOpacity( bbGetInputOpacity() );
newActor -> SetPosition( px,py,pz );