+}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+void vvToolRigidReg::ReadFile()
+{
+ std::string x;
+ QString center;
+ double * orientations=new double[3];
+ double * translations=new double[3];
+ vtkMatrix4x4 *matrix=vtkMatrix4x4::New();
+ vtkSmartPointer<vtkTransform> transform = mCurrentSlicerManager->GetImage()->GetTransform();
+
+ //Open File to read the transformation parameters
+ QString file1 = QFileDialog::getOpenFileName(
+ this,
+ "Choose the Transformation Parameters file",
+ mMainWindow->GetInputPathName(),
+ "Text (*.mat *.txt *.rtf *.doc)");
+ if (file1.isEmpty())
+ return;
+ QFile Qfile1(file1);
+ // ifstream readfile;
+ std::string transfile= file1.toStdString();
+ std::string filename1(transfile);
+ std::ifstream f1(filename1.c_str());
+ if(f1.is_open())
+ {
+ f1.close();
+ itk::Matrix<double, 4, 4> itkMat = clitk::ReadMatrix3D(transfile);
+ for(int j=0; j<4; j++)
+ for(int i=0; i<4; i++)
+ matrix->SetElement(i,j,itkMat[i][j]);
+ }
+ UpdateTextEditor(matrix,textEdit);
+ transform->SetMatrix(matrix);
+ transform->GetOrientation(orientations);
+ transform->PostMultiply();
+
+ //Obtain the Rotation Center , set it to origin
+ Xval->setText(center.setNum(0));
+ Yval->setText(center.setNum(0));
+ Zval->setText(center.setNum(0));
+
+ //In the Order or Y X Z //
+ //now postmultiply for the rotations
+ SetTransform(0,0,0,0,0,-rint(orientations[2]),false);
+ SetTransform(0,0,0,-rint(orientations[0]),0,0,false);
+ SetTransform(0,0,0,0,-rint(orientations[1]),0,false);
+
+ transform->GetPosition(translations);
+ transform->Identity();
+
+ DD(translations[0]/mInput1->GetImage()->GetSpacing()[0]);
+ DD(translations[1]/mInput1->GetImage()->GetSpacing()[1]);
+ DD(translations[2]/mInput1->GetImage()->GetSpacing()[2]);
+ DD(orientations[0]);
+ DD(orientations[1]);
+ DD(orientations[2]);
+ //set the sliders and spin box values
+ InitializeSliders(rint(translations[0]),rint(translations[1])
+ ,rint(translations[2]),rint(orientations[0]),rint(orientations[1]),rint(orientations[2]),true);
+ SetTransform(matrix);
+}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+void vvToolRigidReg::ResetTransform()
+{
+ vtkMatrix4x4 *matrix = vtkMatrix4x4::New();
+ for(int i=0;i<4;i++)
+ for(int j=0;j<4;j++)
+ matrix->SetElement(i,j,mInitialMatrix[i*4+j]);
+ SetTransform(matrix);
+ SetRotationCenter();
+ SetSliderRanges();
+ UpdateTextEditor(matrix,textEdit);
+}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+void vvToolRigidReg::SetRotationCenter()
+{
+ //default image rotation center is the center of the image
+ QString xcord,ycord,zcord;
+ std::vector<double> imageorigin;
+ imageorigin=mInput1->GetImage()->GetOrigin();
+
+ xcord=xcord.setNum(imageorigin[0]+mImageSize[0]*mInput1->GetImage()->GetSpacing()[0]/2, 'g', 3);
+ ycord=ycord.setNum(imageorigin[1]+mImageSize[1]*mInput1->GetImage()->GetSpacing()[1]/2, 'g', 3);
+ zcord=zcord.setNum(imageorigin[2]+mImageSize[2]*mInput1->GetImage()->GetSpacing()[2]/2, 'g', 3);
+
+ Xval->setText(xcord);
+ Yval->setText(ycord);
+ Zval->setText(zcord);
+ InitializeSliders(0,0,0,0,0,0,true);
+}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+void vvToolRigidReg::InitializeSliders(double xtrans,double ytrans, double ztrans, double xrot, double yrot, double zrot,bool sliders)
+{
+
+ xtrans_sb->blockSignals(true);
+ xtrans_sb->setSingleStep(mInput1->GetImage()->GetSpacing()[0]);
+ xtrans_sb->setValue(xtrans);
+ xtrans_sb->blockSignals(false);
+ ytrans_sb->blockSignals(true);
+ ytrans_sb->setSingleStep(mInput1->GetImage()->GetSpacing()[1]);
+ ytrans_sb->setValue(ytrans);
+ ytrans_sb->blockSignals(false);
+ ztrans_sb->blockSignals(true);
+ ztrans_sb->setSingleStep(mInput1->GetImage()->GetSpacing()[2]);
+ ztrans_sb->setValue(ztrans);
+ ztrans_sb->blockSignals(false);
+
+ if(sliders){
+ xtrans_slider->blockSignals(true);
+ DD(xtrans_slider->value());
+ xtrans_slider->setValue(rint(xtrans));
+ xtrans_slider->blockSignals(false);
+ ytrans_slider->blockSignals(true);
+ ytrans_slider->setValue(rint(ytrans));
+ ytrans_slider->blockSignals(false);
+ ztrans_slider->blockSignals(true);
+ ztrans_slider->setValue(rint(ztrans));
+ ztrans_slider->blockSignals(false);
+ }
+ xrot_sb->blockSignals(true);
+ xrot_sb->setValue(xrot);
+ xrot_sb->blockSignals(false);
+ yrot_sb->blockSignals(true);
+ yrot_sb->setValue(yrot);
+ yrot_sb->blockSignals(false);
+ zrot_sb->blockSignals(true);
+ zrot_sb->setValue(zrot);
+ zrot_sb->blockSignals(false);
+ xrot_slider->blockSignals(true);
+ xrot_slider->setValue(xrot);
+ xrot_slider->blockSignals(false);
+ yrot_slider->blockSignals(true);
+ yrot_slider->setValue(yrot);
+ yrot_slider->blockSignals(false);
+ zrot_slider->blockSignals(true);
+ zrot_slider->setValue(zrot);
+ zrot_slider->blockSignals(false);
+}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+void vvToolRigidReg::SetSliderRanges()
+{
+ xtrans_slider->blockSignals(true);
+ xtrans_slider->setRange(-2000,2000);
+ xtrans_slider->blockSignals(false);
+
+ ytrans_slider->blockSignals(true);
+ ytrans_slider->setRange(-2000,2000);
+ ytrans_slider->blockSignals(false);
+
+ ztrans_slider->blockSignals(true);
+ ztrans_slider->setRange(-2000,2000);
+ ztrans_slider->blockSignals(false);
+
+ xtrans_sb->blockSignals(true);
+ xtrans_sb->setRange(-2000,2000);
+ xtrans_sb->setDecimals(3);
+ xtrans_sb->blockSignals(false);
+
+ ytrans_sb->blockSignals(true);
+ ytrans_sb->setRange(-2000,2000);
+ ytrans_sb->setDecimals(3);
+ ytrans_sb->blockSignals(false);
+
+ ztrans_sb->blockSignals(true);
+ ztrans_sb->setRange(-2000,2000);
+ ztrans_sb->setDecimals(3);
+ ztrans_sb->blockSignals(false);
+
+ xrot_slider->blockSignals(true);
+ xrot_slider->setRange(-360,360);
+ xrot_slider->blockSignals(false);
+
+ yrot_slider->blockSignals(true);
+ yrot_slider->setRange(-360,360);
+ yrot_slider->blockSignals(false);
+
+ zrot_slider->blockSignals(true);
+ zrot_slider->setRange(-360,360);
+ zrot_slider->blockSignals(false);
+
+
+ xrot_sb->blockSignals(true);
+ xrot_sb->setRange(-360,360);
+ xrot_sb->blockSignals(false);
+
+ yrot_sb->blockSignals(true);
+ yrot_sb->setRange(-360,360);
+ yrot_sb->blockSignals(false);
+
+ zrot_sb->blockSignals(true);
+ zrot_sb->setRange(-360,360);
+ zrot_sb->blockSignals(false);