}
+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 );
// --------------------------------------------------------------
void Transform::Process()
{
- printf("EED %p Transform::Process() 1\n", this);
bbUserInitializeProcessing();
if (bbGetInputIn()!=NULL)
{
result->Concatenate( bbGetInputIn()->GetMatrix() );
- printf("EED %p Transform::Process() 2\n", this);
}
if (bbGetInputScale().size()>=3)
{
result->Scale(bbGetInputScale()[0], bbGetInputScale()[1], bbGetInputScale()[2]);
- printf("EED %p Transform::Process() 3\n", this);
}
if ((bbGetInputTranslate().size()>=3) && (bbGetInputSpacing().size()>=3))
double ty = bbGetInputTranslate()[1] * bbGetInputSpacing()[1];
double tz = bbGetInputTranslate()[2] * bbGetInputSpacing()[2];
result->Translate(tx,ty,tz);
- printf("EED %p Transform::Process() 4\n", this);
}
if (bbGetInputRotateWXYZ().size()>=4)
{
result->RotateWXYZ(bbGetInputRotateWXYZ()[0],bbGetInputRotateWXYZ()[1], bbGetInputRotateWXYZ()[2], bbGetInputRotateWXYZ()[3]);
- printf("EED %p Transform::Process() 5\n", this);
}
result->Update();
- printf("EED %p Transform::Process() 6\n", this);
bbSetOutputOut(result);
}