From 66923cdc16451738c67193d83bc453772717ed6b Mon Sep 17 00:00:00 2001 From: Eduardo DAVILA Date: Mon, 19 Aug 2013 15:57:26 +0200 Subject: [PATCH] 2111 Bug Colors Law in SphereListBox --- packages/vtk/src/bbvtkSphereList.cxx | 44 ++++++++++++++++++---------- packages/vtk/src/bbvtkSphereList.h | 1 + packages/vtk/src/bbvtkTransform.cxx | 6 ---- 3 files changed, 29 insertions(+), 22 deletions(-) diff --git a/packages/vtk/src/bbvtkSphereList.cxx b/packages/vtk/src/bbvtkSphereList.cxx index 2462413..40fce8f 100644 --- a/packages/vtk/src/bbvtkSphereList.cxx +++ b/packages/vtk/src/bbvtkSphereList.cxx @@ -80,6 +80,25 @@ void SphereList::GetPoint(int i, double &px,double &py,double &pz) } +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() { @@ -88,11 +107,11 @@ 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. @@ -101,8 +120,10 @@ void SphereList::Process() 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 { @@ -124,7 +145,7 @@ void SphereList::Process() GetPoint(i, px,py,pz); - + GetColor(i, cr,cg,cb); // Sphere @@ -141,17 +162,8 @@ void SphereList::Process() 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 ); diff --git a/packages/vtk/src/bbvtkSphereList.h b/packages/vtk/src/bbvtkSphereList.h index ddbc10d..fdc775a 100644 --- a/packages/vtk/src/bbvtkSphereList.h +++ b/packages/vtk/src/bbvtkSphereList.h @@ -67,6 +67,7 @@ class bbvtk_EXPORT SphereList private: double GetRadio(int); void GetPoint(int i, double &px,double &py,double &pz); + void GetColor(int i, double &cr,double &cg,double &cb); }; BBTK_BEGIN_DESCRIBE_BLACK_BOX(SphereList,bbtk::AtomicBlackBox); diff --git a/packages/vtk/src/bbvtkTransform.cxx b/packages/vtk/src/bbvtkTransform.cxx index 829cd7e..7923cb5 100644 --- a/packages/vtk/src/bbvtkTransform.cxx +++ b/packages/vtk/src/bbvtkTransform.cxx @@ -82,18 +82,15 @@ namespace bbvtk // -------------------------------------------------------------- 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)) @@ -102,17 +99,14 @@ namespace bbvtk 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); } -- 2.45.1