1 /*=========================================================================
2 Program: vv http://www.creatis.insa-lyon.fr/rio/vv
5 - University of LYON http://www.universite-lyon.fr/
6 - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
7 - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
9 This software is distributed WITHOUT ANY WARRANTY; without even
10 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 PURPOSE. See the copyright notices for more information.
13 It is distributed under dual licence
15 - BSD See included LICENSE.txt file
16 - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17 ======================================================================-====*/
20 #include "vvToolRigidReg.h"
21 #include "vvImageReader.h"
25 #include <vtkImageData.h>
26 #include <vtkSmartPointer.h>
27 #include <vtkTransform.h>
30 #include "clitkTransformUtilities.h"
31 #include "clitkAffineRegistrationGenericFilter.h"
33 #include <QMessageBox>
34 #include <QFileDialog>
35 #include <QTextStream>
39 //------------------------------------------------------------------------------
40 // Create the tool and automagically (I like this word) insert it in
41 // the main window menu.
42 ADD_TOOL(vvToolRigidReg);
43 //------------------------------------------------------------------------------
45 //------------------------------------------------------------------------------
46 vvToolRigidReg::vvToolRigidReg(vvMainWindowBase * parent, Qt::WindowFlags f):
47 vvToolWidgetBase(parent, f),
48 vvToolBase<vvToolRigidReg>(parent),
52 Ui_vvToolRigidReg::setupUi(mToolWidget);
54 // qsize.setHeight(470);
55 // qsize.setWidth(850);
56 // mToolWidget->setFixedSize(qsize);
59 // Set how many inputs are needed for this tool
60 // mFilter = new clitk::AffineTransformGenericFilter<args_info_clitkAffineTransform>;
61 mFilter = new clitk::AffineRegistrationGenericFilter<args_info_clitkAffineRegistration>;
63 // Set how many inputs are needed for this tool
64 AddInputSelector("Select moving image",mFilter);
65 AddInputSelector("Select fixed image",mFilter);
67 //------------------------------------------------------------------------------
69 //------------------------------------------------------------------------------
70 vvToolRigidReg::~vvToolRigidReg()
73 //------------------------------------------------------------------------------
75 //------------------------------------------------------------------------------
76 bool vvToolRigidReg::close()
80 return vvToolWidgetBase::close();
82 //------------------------------------------------------------------------------
84 //------------------------------------------------------------------------------
85 void vvToolRigidReg::reject()
88 return vvToolWidgetBase::reject();
90 //------------------------------------------------------------------------------
92 //------------------------------------------------------------------------------
93 void vvToolRigidReg::GetArgsInfoFromGUI()
96 str.append("Configs Loaded for AutoRegister...Apply Filter...");
97 tab2textedit->setText(str);
98 /* cmdline_parser_clitkAffineRegistration_configfile("/home/bharath/bin/AffineReg.txt",&mArgsInfo,1,1,0);
99 mArgsInfo.reference_arg=new char;
100 mArgsInfo.target_arg=new char;
101 mArgsInfo.output_arg=new char;
102 mArgsInfo.referenceMask_arg=new char;
103 mArgsInfo.targetMask_arg=new char;
104 mArgsInfo.initMatrix_arg=new char;
105 mArgsInfo.matrix_arg=new char;*/
106 mArgsInfo.referenceMask_given=0;
107 mArgsInfo.reference_given=0;
108 mArgsInfo.reference_arg=new char;
109 mArgsInfo.target_given=0;
110 mArgsInfo.target_arg=new char;
111 mArgsInfo.output_given=0;
112 mArgsInfo.output_arg=new char;
113 mArgsInfo.checker_after_given=0;
114 mArgsInfo.checker_before_given=0;
115 mArgsInfo.after_given=0;
116 mArgsInfo.before_given=0;
117 // std::string strouput= "/home/bharath/bin/Lung3Doutput.mhd";
118 //mArgsInfo.output_arg=const_cast<char*>(strouput.c_str());
119 mArgsInfo.threads_given=1;
120 mArgsInfo.threads_arg=3;
121 mArgsInfo.normalize_flag=0;
122 DD("GetArgsInfoFromGUI_2");
123 mArgsInfo.blur_arg=0.0;
124 mArgsInfo.referenceMask_arg=new char;
125 mArgsInfo.targetMask_arg=new char;
126 mArgsInfo.targetMask_given=0;
127 mArgsInfo.levels_given=1;
128 mArgsInfo.levels_arg=2;
129 mArgsInfo.moment_flag=1;
130 mArgsInfo.intThreshold_given=0;
131 mArgsInfo.intThreshold_arg=0.0;
132 mArgsInfo.transX_arg=0.0;
133 mArgsInfo.transY_arg=0.0;
134 mArgsInfo.transZ_arg=0.0;
135 mArgsInfo.transform_arg=2;
136 mArgsInfo.gradient_flag=1;
137 mArgsInfo.interp_given=1;
138 mArgsInfo.interp_arg=1;
139 mArgsInfo.interpOrder_given=1;
140 mArgsInfo.interpOrder_arg=3;
141 mArgsInfo.interpSF_given=1;
142 mArgsInfo.interpSF_arg=20;//default
143 mArgsInfo.metric_given=1;
144 mArgsInfo.metric_arg=0;
145 mArgsInfo.samples_arg=1;//default
146 mArgsInfo.stdDev_arg=0.4;
147 mArgsInfo.step_arg=2.0;
148 mArgsInfo.relax_arg=0.7;
149 mArgsInfo.valueTol_arg=0.01;
150 mArgsInfo.stepTol_arg=0.1;
151 mArgsInfo.gradTol_arg=1e-5;
152 mArgsInfo.lineAcc_arg=0.9;
153 mArgsInfo.convFactor_arg=1e+12;
154 mArgsInfo.maxIt_arg=500;
155 mArgsInfo.maxLineIt_arg=50;
156 mArgsInfo.maxEval_arg=500;
157 mArgsInfo.maxCorr_arg=5;
158 mArgsInfo.selectBound_arg=0;
159 mArgsInfo.inc_arg=1.2;
161 mArgsInfo.optimizer_arg=1;
162 mArgsInfo.initMatrix_given=0;
163 mArgsInfo.initMatrix_arg=new char;
164 mArgsInfo.tWeight_given=1;
165 mArgsInfo.tWeight_arg=1.0;
166 mArgsInfo.rWeight_given=1.0;
167 mArgsInfo.rWeight_arg=50.0;
168 // std::string str="/home/bharath/bin/matrix.txt";
169 // mArgsInfo.initMatrix_arg=const_cast<char*>(str.c_str());
170 mArgsInfo.matrix_given=0;
172 //------------------------------------------------------------------------------
174 //------------------------------------------------------------------------------
175 void vvToolRigidReg::InputIsSelected(std::vector<vvSlicerManager *> & l)
181 UpdateTextEditor(mCurrentSlicerManager->GetImage()->GetTransform()->GetMatrix(),textEdit_2);
183 for(int i =0;i<4;i++)
185 mInitialMatrix[i*4+j]=mCurrentSlicerManager->GetImage()->GetTransform()->GetMatrix()->GetElement(i,j);
187 if(mInput1->GetFileName()==mInput2->GetFileName())
189 QMessageBox::information(this, "Warning","Your Reference and Target Images are the same");
193 mImageSize=mInput1->GetImage()->GetSize();
197 //connect all sigs to slots
198 connect(resetbutton, SIGNAL(pressed()), this, SLOT(ResetTransform()));
199 connect(tab2loadbutton, SIGNAL(pressed()), this, SLOT(GetArgsInfoFromGUI()));
200 connect(tab2applybutton, SIGNAL(pressed()), this, SLOT(AutoRegister()));
203 connect(Xval, SIGNAL(editingFinished()), this, SLOT(SetXvalue()));
204 connect(Yval, SIGNAL(editingFinished()), this, SLOT(SetYvalue()));
205 connect(Zval, SIGNAL(editingFinished()), this, SLOT(SetZvalue()));
207 connect(xtrans_slider, SIGNAL(valueChanged(int)), this, SLOT(UpdateTransform_sliders()));
208 connect(ytrans_slider, SIGNAL(valueChanged(int)), this, SLOT(UpdateTransform_sliders()));
209 connect(ztrans_slider, SIGNAL(valueChanged(int)), this, SLOT(UpdateTransform_sliders()));
212 connect(xrot_slider, SIGNAL(valueChanged(int)), this, SLOT(UpdateTransform_sliders()));
213 connect(yrot_slider, SIGNAL(valueChanged(int)), this, SLOT(UpdateTransform_sliders()));
214 connect(zrot_slider, SIGNAL(valueChanged(int)), this, SLOT(UpdateTransform_sliders()));
216 connect(xtrans_sb, SIGNAL(valueChanged(double)), this, SLOT(UpdateTransform_sb()));
217 connect(ytrans_sb, SIGNAL(valueChanged(double)), this, SLOT(UpdateTransform_sb()));
218 connect(ztrans_sb, SIGNAL(valueChanged(double)), this, SLOT(UpdateTransform_sb()));
219 connect(xrot_sb, SIGNAL(valueChanged(double)), this, SLOT(UpdateTransform_sb()));
220 connect(yrot_sb, SIGNAL(valueChanged(double)), this, SLOT(UpdateTransform_sb()));
221 connect(zrot_sb, SIGNAL(valueChanged(double)), this, SLOT(UpdateTransform_sb()));
223 connect(loadbutton, SIGNAL(pressed()), this, SLOT(ReadFile()));
224 connect(savebutton, SIGNAL(pressed()), this, SLOT(SaveFile()));
227 //------------------------------------------------------------------------------
229 //------------------------------------------------------------------------------
230 void vvToolRigidReg::apply()
234 //------------------------------------------------------------------------------
236 //------------------------------------------------------------------------------
237 void vvToolRigidReg::SetOverlay()
239 for (int i =0; i<mCurrentSlicerManager->NumberOfSlicers(); i++) {
240 mCurrentSlicerManager->GetSlicer(i)->SetOverlay(mInput2->GetImage());
241 mCurrentSlicerManager->GetSlicer(i)->SetActorVisibility("overlay",0,true);
242 mCurrentSlicerManager->SetColorMap();
243 mCurrentSlicerManager->Render();
246 //------------------------------------------------------------------------------
248 //------------------------------------------------------------------------------
249 void vvToolRigidReg::RemoveOverlay()
251 for(int i=0;i<mCurrentSlicerManager->NumberOfSlicers();i++)
253 mInput1->RemoveActor("overlay",0);
254 mInput1->SetColorMap(0);
259 //------------------------------------------------------------------------------
261 //------------------------------------------------------------------------------
262 void vvToolRigidReg::SetXvalue()
264 QString xstr = Xval->text();
266 //------------------------------------------------------------------------------
268 //------------------------------------------------------------------------------
269 void vvToolRigidReg::SetYvalue()
271 QString ystr = Yval->text();
273 //------------------------------------------------------------------------------
275 //------------------------------------------------------------------------------
276 void vvToolRigidReg::SetZvalue()
278 QString zstr = Zval->text();
280 //------------------------------------------------------------------------------
282 //------------------------------------------------------------------------------
283 void vvToolRigidReg::SetTransform(double tX, double tY, double tZ, double aX, double aY, double aZ,bool update)
285 vtkSmartPointer<vtkTransform> transform = mInput1->GetImage()->GetTransform();
286 transform->PostMultiply();
288 if (aX!=0 || aY!=0 || aZ!=0) {
290 x= Xval->text().toDouble();
291 y= Yval->text().toDouble();
292 z= Zval->text().toDouble();
293 transform->Translate(-x,-y,-z);
294 if (aX!=0) transform->RotateX(aX);
295 if (aY!=0) transform->RotateY(aY);
296 if (aZ!=0) transform->RotateZ(aZ);
297 transform->Translate(x,y,z);
300 if (tX!=0||tY!=0||tZ!=0)
301 transform->Translate(tX*mInput1->GetImage()->GetSpacing()[0],tY*mInput1->GetImage()->GetSpacing()[1],tZ*mInput1->GetImage()->GetSpacing()[2]);
303 //------------------------------------------------------------------------------
305 //------------------------------------------------------------------------------
306 void vvToolRigidReg::SetTransform(vtkMatrix4x4 *matrix)
308 vtkSmartPointer<vtkTransform> transform=vtkSmartPointer<vtkTransform>::New();
309 for(int i=0; i<4;i++)
311 mCurrentSlicerManager->GetImage()->GetTransform()->GetMatrix()->SetElement(i,j,matrix->GetElement(i,j));
315 //------------------------------------------------------------------------------
317 //------------------------------------------------------------------------------
318 void vvToolRigidReg::Render()
320 for (int i=0; i<mCurrentSlicerManager->NumberOfSlicers(); i++) {
321 mCurrentSlicerManager->GetSlicer(i)->ForceUpdateDisplayExtent();
322 mCurrentSlicerManager->GetSlicer(i)->Render();
325 //------------------------------------------------------------------------------
327 //------------------------------------------------------------------------------
328 void vvToolRigidReg::UpdateTextEditor(vtkMatrix4x4 *matrix,QTextEdit* textEdit)
330 QFont font=QFont("Times New Roman",11);
331 textEdit->setCurrentFont(font);
334 QString str1,str2,str3;
337 textEdit->setAcceptRichText(true);
338 str2=textEdit->toPlainText();
339 str2.append("#Rotation Center(mm): \n#");
340 textEdit->setText(str2);
342 str2=textEdit->toPlainText();
343 textEdit->setTextColor(QColor(255,0,0));
344 str2.append(str3.append(Xval->text()));
345 textEdit->setText(str2);
348 str2=textEdit->toPlainText();
350 textEdit->setText(str2);
352 str2=textEdit->toPlainText();
353 str2.append(str3.append(Yval->text()));
354 textEdit->setText(str2);
357 str2=textEdit->toPlainText();
359 textEdit->setText(str2);
362 str2=textEdit->toPlainText();
363 str2.append(str3.append(Zval->text()));
364 textEdit->setText(str2);
367 str2=textEdit->toPlainText();
369 textEdit->setText(str2);
372 str2=textEdit->toPlainText();
373 str2.append("#Transformation Matrix(mm):\n");
374 textEdit->setText(str2);
379 str2=textEdit->toPlainText();
380 // str2.append("\t"+str1.setNum(matrix->Element[i][j]));
381 str2.append(QString("%1\t").arg(str1.setNum(matrix->Element[i][j]),2));
382 textEdit->setText(str2);
384 str2=textEdit->toPlainText();
386 textEdit->setText(str2);
388 //QString str = QFileDialog::getOpenFileName();
389 textEdit->setTextColor(QColor(255,0,0));
390 textEdit->setFont(QFont("courrier new",12,4,true));
391 textEdit->toPlainText().toAscii();
393 str2=textEdit->toPlainText();
394 textEdit->setText(str2);
396 //------------------------------------------------------------------------------
398 //------------------------------------------------------------------------------
399 void vvToolRigidReg::UpdateTransform_sliders()
401 InitializeSliders(xtrans_slider->value()*mInput1->GetImage()->GetSpacing()[0],
402 ytrans_slider->value()*mInput1->GetImage()->GetSpacing()[1],
403 ztrans_slider->value()*mInput1->GetImage()->GetSpacing()[2],
404 xrot_slider->value(),yrot_slider->value(),zrot_slider->value(),false);
405 UpdateTransform(true);
408 //------------------------------------------------------------------------------
410 //------------------------------------------------------------------------------
411 void vvToolRigidReg::UpdateTransform_sb()
413 InitializeSliders(xtrans_sb->value(),
416 xrot_sb->value(),yrot_sb->value(),zrot_sb->value(),false);
417 DD(xtrans_sb->value());
418 UpdateTransform(false);
421 //------------------------------------------------------------------------------
423 //------------------------------------------------------------------------------
424 void vvToolRigidReg::AutoRegister()
426 if (!mCurrentSlicerManager) close();
427 QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
429 std::vector<vvImage::Pointer> inputs;
431 inputs.push_back(mInput1->GetImage());
432 inputs.push_back(mInput2->GetImage());
435 clitk::AffineRegistrationGenericFilter<args_info_clitkAffineRegistration>::Pointer filter =
436 clitk::AffineRegistrationGenericFilter<args_info_clitkAffineRegistration>::New();
437 filter->SetInputVVImages(inputs);
438 filter->SetArgsInfo(mArgsInfo);
439 DD("ArgsInfo given in");
440 filter->EnableReadOnDisk(false);
442 DD("I am done...! Updated");
443 vvImage::Pointer output = filter->GetOutputVVImage();
444 DD("filter getoutput done...");
445 std::ostringstream osstream;
446 osstream << "Registered" << "_ "
447 << mCurrentSlicerManager->GetSlicer(0)->GetFileName() << ".mhd";
448 AddImage(output,osstream.str());
450 QApplication::restoreOverrideCursor();
453 //------------------------------------------------------------------------------
455 //------------------------------------------------------------------------------
456 void vvToolRigidReg::UpdateTransform(bool slider_enabled)
458 vtkSmartPointer<vtkTransform> transform_final=vtkSmartPointer<vtkTransform>::New();
459 transform_final->SetMatrix(mInitialMatrix);
460 transform_final->PostMultiply();
462 double x=0, y=0 ,z=0;
463 x= Xval->text().toDouble();
464 y= Yval->text().toDouble();
465 z= Zval->text().toDouble();
466 transform_final->Translate(-x,-y,-z);
468 transform_final->RotateY(yrot_slider->value());
469 transform_final->RotateX(xrot_slider->value());
470 transform_final->RotateZ(zrot_slider->value());
473 transform_final->RotateY(yrot_sb->value());
474 transform_final->RotateX(xrot_sb->value());
475 transform_final->RotateZ(zrot_sb->value());
477 transform_final->Translate(x,y,z);
478 transform_final->PreMultiply();
480 transform_final->Translate(xtrans_slider->value()*mInput1->GetImage()->GetSpacing()[0],0,0);
481 transform_final->Translate(0,ytrans_slider->value()*mInput1->GetImage()->GetSpacing()[1],0);
482 transform_final->Translate(0,0,ztrans_slider->value()*mInput1->GetImage()->GetSpacing()[2]);
485 transform_final->Translate(xtrans_sb->value(),0,0);
486 transform_final->Translate(0,ytrans_sb->value(),0);
487 transform_final->Translate(0,0,ztrans_sb->value());
489 SetTransform(transform_final->GetMatrix());
490 UpdateTextEditor(transform_final->GetMatrix(),textEdit);
492 //------------------------------------------------------------------------------
495 //------------------------------------------------------------------------------
496 void vvToolRigidReg::SaveFile()
498 //Write the Transformation Matrix
499 QString f1 = QFileDialog::getSaveFileName(this, tr("Save Transformation Matrix File"),
500 mMainWindow->GetInputPathName(),
501 tr("Text (*.mat *.txt *.doc *.rtf)"));
503 std::vector<QString> transparameters;
506 for(int i =0;i<4;i++)
508 transparameters.push_back(line1.setNum(mCurrentSlicerManager->GetImage()->GetTransform()->GetMatrix()->Element[i][j]));
510 if (file1.open(QFile::WriteOnly | QFile::Truncate)) {
511 QTextStream out1(&file1);
512 for(int i =0;i<4;i++){
513 for(int j=0;j<4;j++) {
514 out1<<transparameters[i*4+j]+"\t";
521 QMessageBox::information(this,"Warning","Error Reading Parameters");
524 //------------------------------------------------------------------------------
526 //------------------------------------------------------------------------------
527 void vvToolRigidReg::ReadFile()
531 double * orientations=new double[3];
532 double * translations=new double[3];
533 vtkMatrix4x4 *matrix=vtkMatrix4x4::New();
534 vtkSmartPointer<vtkTransform> transform = mCurrentSlicerManager->GetImage()->GetTransform();
536 //Open File to read the transformation parameters
538 transform->SetMatrix(matrix);
539 transform->GetOrientation(orientations);
540 transform->PostMultiply();
542 //Obtain the Rotation Center , set it to origin
543 Xval->setText(center.setNum(0));
544 Yval->setText(center.setNum(0));
545 Zval->setText(center.setNum(0));
547 //In the Order or Y X Z //
548 //now postmultiply for the rotations
549 SetTransform(0,0,0,0,0,-rint(orientations[2]),false);
550 SetTransform(0,0,0,-rint(orientations[0]),0,0,false);
551 SetTransform(0,0,0,0,-rint(orientations[1]),0,false);
553 transform->GetPosition(translations);
554 transform->Identity();
556 DD(translations[0]/mInput1->GetImage()->GetSpacing()[0]);
557 DD(translations[1]/mInput1->GetImage()->GetSpacing()[1]);
558 DD(translations[2]/mInput1->GetImage()->GetSpacing()[2]);
562 //set the sliders and spin box values
563 InitializeSliders(rint(translations[0]),rint(translations[1])
564 ,rint(translations[2]),rint(orientations[0]),rint(orientations[1]),rint(orientations[2]),true);
565 SetTransform(matrix);
567 //------------------------------------------------------------------------------
569 //------------------------------------------------------------------------------
570 void vvToolRigidReg::ResetTransform()
572 vtkMatrix4x4 *matrix = vtkMatrix4x4::New();
575 matrix->SetElement(i,j,mInitialMatrix[i*4+j]);
576 SetTransform(matrix);
579 UpdateTextEditor(matrix,textEdit);
581 //------------------------------------------------------------------------------
583 //------------------------------------------------------------------------------
584 void vvToolRigidReg::SetRotationCenter()
586 //default image rotation center is the center of the image
587 QString xcord,ycord,zcord;
588 std::vector<double> imageorigin;
589 imageorigin=mInput1->GetImage()->GetOrigin();
591 xcord=xcord.setNum(imageorigin[0]+mImageSize[0]*mInput1->GetImage()->GetSpacing()[0]/2, 'g', 3);
592 ycord=ycord.setNum(imageorigin[1]+mImageSize[1]*mInput1->GetImage()->GetSpacing()[1]/2, 'g', 3);
593 zcord=zcord.setNum(imageorigin[2]+mImageSize[2]*mInput1->GetImage()->GetSpacing()[2]/2, 'g', 3);
595 Xval->setText(xcord);
596 Yval->setText(ycord);
597 Zval->setText(zcord);
598 InitializeSliders(0,0,0,0,0,0,true);
600 //------------------------------------------------------------------------------
602 //------------------------------------------------------------------------------
603 void vvToolRigidReg::InitializeSliders(double xtrans,double ytrans, double ztrans, double xrot, double yrot, double zrot,bool sliders)
606 xtrans_sb->blockSignals(true);
607 xtrans_sb->setSingleStep(mInput1->GetImage()->GetSpacing()[0]);
608 xtrans_sb->setValue(xtrans);
609 xtrans_sb->blockSignals(false);
610 ytrans_sb->blockSignals(true);
611 ytrans_sb->setSingleStep(mInput1->GetImage()->GetSpacing()[1]);
612 ytrans_sb->setValue(ytrans);
613 ytrans_sb->blockSignals(false);
614 ztrans_sb->blockSignals(true);
615 ztrans_sb->setSingleStep(mInput1->GetImage()->GetSpacing()[2]);
616 ztrans_sb->setValue(ztrans);
617 ztrans_sb->blockSignals(false);
620 xtrans_slider->blockSignals(true);
621 xtrans_slider->setValue(rint(xtrans));
622 xtrans_slider->blockSignals(false);
623 ytrans_slider->blockSignals(true);
624 ytrans_slider->setValue(rint(ytrans));
625 ytrans_slider->blockSignals(false);
626 ztrans_slider->blockSignals(true);
627 ztrans_slider->setValue(rint(ztrans));
628 ztrans_slider->blockSignals(false);
630 xrot_sb->blockSignals(true);
631 xrot_sb->setValue(xrot);
632 xrot_sb->blockSignals(false);
633 yrot_sb->blockSignals(true);
634 yrot_sb->setValue(yrot);
635 yrot_sb->blockSignals(false);
636 zrot_sb->blockSignals(true);
637 zrot_sb->setValue(zrot);
638 zrot_sb->blockSignals(false);
639 xrot_slider->blockSignals(true);
640 xrot_slider->setValue(xrot);
641 xrot_slider->blockSignals(false);
642 yrot_slider->blockSignals(true);
643 yrot_slider->setValue(yrot);
644 yrot_slider->blockSignals(false);
645 zrot_slider->blockSignals(true);
646 zrot_slider->setValue(zrot);
647 zrot_slider->blockSignals(false);
649 //------------------------------------------------------------------------------
651 //------------------------------------------------------------------------------
652 void vvToolRigidReg::SetSliderRanges()
654 xtrans_slider->blockSignals(true);
655 xtrans_slider->setRange(-2000,2000);
656 xtrans_slider->blockSignals(false);
658 ytrans_slider->blockSignals(true);
659 ytrans_slider->setRange(-2000,2000);
660 ytrans_slider->blockSignals(false);
662 ztrans_slider->blockSignals(true);
663 ztrans_slider->setRange(-2000,2000);
664 ztrans_slider->blockSignals(false);
666 xtrans_sb->blockSignals(true);
667 xtrans_sb->setRange(-2000,2000);
668 xtrans_sb->setDecimals(3);
669 xtrans_sb->blockSignals(false);
671 ytrans_sb->blockSignals(true);
672 ytrans_sb->setRange(-2000,2000);
673 ytrans_sb->setDecimals(3);
674 ytrans_sb->blockSignals(false);
676 ztrans_sb->blockSignals(true);
677 ztrans_sb->setRange(-2000,2000);
678 ztrans_sb->setDecimals(3);
679 ztrans_sb->blockSignals(false);
681 xrot_slider->blockSignals(true);
682 xrot_slider->setRange(-360,360);
683 xrot_slider->blockSignals(false);
685 yrot_slider->blockSignals(true);
686 yrot_slider->setRange(-360,360);
687 yrot_slider->blockSignals(false);
689 zrot_slider->blockSignals(true);
690 zrot_slider->setRange(-360,360);
691 zrot_slider->blockSignals(false);
693 xrot_sb->blockSignals(true);
694 xrot_sb->setRange(-360,360);
695 xrot_sb->blockSignals(false);
697 yrot_sb->blockSignals(true);
698 yrot_sb->setRange(-360,360);
699 yrot_sb->blockSignals(false);
701 zrot_sb->blockSignals(true);
702 zrot_sb->setRange(-360,360);
703 zrot_sb->blockSignals(false);