X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fvtk%2Fsrc%2FbbvtkTransform.cxx;h=be42242d05e6207074a1e626dc608120db55fd95;hb=4743efc603c9eeac3b8bc509b5112a76d12b1375;hp=7c375f055010e94ca03176efcdc511ad223dc31c;hpb=22eae0242d8e2c1eb8a25a735289f609b17e103f;p=bbtk.git diff --git a/packages/vtk/src/bbvtkTransform.cxx b/packages/vtk/src/bbvtkTransform.cxx index 7c375f0..be42242 100644 --- a/packages/vtk/src/bbvtkTransform.cxx +++ b/packages/vtk/src/bbvtkTransform.cxx @@ -5,84 +5,92 @@ namespace bbvtk { -BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,Transform) -BBTK_BLACK_BOX_IMPLEMENTATION(Transform,bbtk::AtomicBlackBox); -void Transform::Process() -{ - if (result!=NULL) - { - result->Delete(); - } - result = vtkTransform::New(); - + BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,Transform); + BBTK_BLACK_BOX_IMPLEMENTATION(Transform,bbtk::AtomicBlackBox); - if (bbGetInputIn()!=NULL) + + // -------------------------------------------------------------- + + void Transform::bbUserSetDefaultValues() { - result->Concatenate( bbGetInputIn()->GetMatrix() ); + bbSetInputIn(NULL); + + vecScale.push_back(1); // scale x + vecScale.push_back(1); // scale y + vecScale.push_back(1); // scale z + bbSetInputScale(vecScale); + + vecRotateWXYZ.push_back(0); //angle + vecRotateWXYZ.push_back(1); //vx + vecRotateWXYZ.push_back(0); //vy + vecRotateWXYZ.push_back(0); //vz + bbSetInputRotateWXYZ(vecRotateWXYZ); + + vecTranslate.push_back(0); //tx + vecTranslate.push_back(0); //ty + vecTranslate.push_back(0); //tz + bbSetInputTranslate(vecTranslate); + + vecSpacing.push_back(1); //spacing x + vecSpacing.push_back(1); //spacing y + vecSpacing.push_back(1); //spacing z + bbSetInputTranslate(vecSpacing); + + result = NULL; } - - if (bbGetInputScale().size()>=3) + // -------------------------------------------------------------- + void Transform::bbUserInitializeProcessing() { - result->Scale(bbGetInputScale()[0], bbGetInputScale()[1], bbGetInputScale()[2]); + bbUserFinalizeProcessing(); + result = vtkTransform::New(); } - - if ((bbGetInputTranslate().size()>=3) && (bbGetInputSpacing().size()>=3)) + + + // -------------------------------------------------------------- + void Transform::bbUserFinalizeProcessing() { - double tx = bbGetInputTranslate()[0] * bbGetInputSpacing()[0]; - double ty = bbGetInputTranslate()[1] * bbGetInputSpacing()[1]; - double tz = bbGetInputTranslate()[2] * bbGetInputSpacing()[2]; - result->Translate(tx,ty,tz); + if (result!=NULL) + { + result->Delete(); + result=NULL; + } + } - - if (bbGetInputRotateWXYZ().size()>=4) - { - result->RotateWXYZ(bbGetInputRotateWXYZ()[0],bbGetInputRotateWXYZ()[1], bbGetInputRotateWXYZ()[2], bbGetInputRotateWXYZ()[3]); - } - - result->Update(); - - bbSetOutputOut(result); -} - - -void Transform::bbUserConstructor() -{ - bbSetInputIn(NULL); - - vecScale.push_back(1); // scale x - vecScale.push_back(1); // scale y - vecScale.push_back(1); // scale z - bbSetInputScale(vecScale); - - vecRotateWXYZ.push_back(0); //angle - vecRotateWXYZ.push_back(1); //vx - vecRotateWXYZ.push_back(0); //vy - vecRotateWXYZ.push_back(0); //vz - bbSetInputRotateWXYZ(vecRotateWXYZ); - - vecTranslate.push_back(0); //tx - vecTranslate.push_back(0); //ty - vecTranslate.push_back(0); //tz - bbSetInputTranslate(vecTranslate); - - vecSpacing.push_back(1); //spacing x - vecSpacing.push_back(1); //spacing y - vecSpacing.push_back(1); //spacing z - bbSetInputTranslate(vecSpacing); - - result = NULL; -} -void Transform::bbUserCopyConstructor() -{ - - -} -void Transform::bbUserDestructor() -{ - + + + // -------------------------------------------------------------- + void Transform::Process() + { + bbUserInitializeProcessing(); + if (bbGetInputIn()!=NULL) + { + result->Concatenate( bbGetInputIn()->GetMatrix() ); + } + + if (bbGetInputScale().size()>=3) + { + result->Scale(bbGetInputScale()[0], bbGetInputScale()[1], bbGetInputScale()[2]); + } + + if ((bbGetInputTranslate().size()>=3) && (bbGetInputSpacing().size()>=3)) + { + double tx = bbGetInputTranslate()[0] * bbGetInputSpacing()[0]; + double ty = bbGetInputTranslate()[1] * bbGetInputSpacing()[1]; + double tz = bbGetInputTranslate()[2] * bbGetInputSpacing()[2]; + result->Translate(tx,ty,tz); + } + + if (bbGetInputRotateWXYZ().size()>=4) + { + result->RotateWXYZ(bbGetInputRotateWXYZ()[0],bbGetInputRotateWXYZ()[1], bbGetInputRotateWXYZ()[2], bbGetInputRotateWXYZ()[3]); + } + + result->Update(); + + bbSetOutputOut(result); + } -} } // EO namespace bbvtk