1 /*# ---------------------------------------------------------------------
3 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
5 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
6 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
7 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
9 # This software is governed by the CeCILL-B license under French law and
10 # abiding by the rules of distribution of free software. You can use,
11 # modify and/ or redistribute the software under the terms of the CeCILL-B
12 # license as circulated by CEA, CNRS and INRIA at the following URL
13 # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
14 # or in the file LICENSE.txt.
16 # As a counterpart to the access to the source code and rights to copy,
17 # modify and redistribute granted by the license, users are provided only
18 # with a limited warranty and the software's author, the holder of the
19 # economic rights, and the successive licensors have only limited
22 # The fact that you are presently reading this means that you have had
23 # knowledge of the CeCILL-B license and that you accept its terms.
24 # ------------------------------------------------------------------------ */
27 /*=========================================================================
30 Module: $RCSfile: manualContourContainer.cxx,v $
32 Date: $Date: 2012/11/15 14:14:56 $
33 Version: $Revision: 1.2 $
35 Copyright: (c) 2002, 2003
38 This software is distributed WITHOUT ANY WARRANTY; without even
39 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
40 PURPOSE. See the above copyright notice for more information.
42 =========================================================================*/
44 #include "manualContourContainer.h"
46 //////////////////////////////////////////////////////////////////////
48 //////////////////////////////////////////////////////////////////////
50 //--------------------------------------------------------
51 manualContourContainer::manualContourContainer()
54 _manContourControlWall = NULL;
55 _mContourModelWall = NULL;
56 _mViewContourWall = NULL;
59 _manContourControlLumen = NULL;
60 _mContourModelLumen = NULL;
61 _mViewContourLumen = NULL;
67 //--------------------------------------------------------
68 manualContourContainer::~manualContourContainer()
73 //--------------------------------------------------------
74 manualContourControler* manualContourContainer::getWallController()
76 return _manContourControlWall;
79 //--------------------------------------------------------
80 manualContourControler* manualContourContainer::getLumenController()
82 return _manContourControlLumen;
85 //--------------------------------------------------------
86 manualContourControler* manualContourContainer::getCalcController(int i)
88 return _manContourControlCalc[i];
91 //--------------------------------------------------------
92 manualContourControler* manualContourContainer::getHypoController(int i)
94 return _manContourControlHypo[i];
97 //--------------------------------------------------------
98 int manualContourContainer::addCalcificationContour(wxVtk2DBaseView *_imageviewer2D_1)
101 manualContourControler *tempC = new manualContourControler();
102 manualContourModel *tempM = new manualContourModel();
103 manualViewContour *tempV = new manualViewContour();
105 tempV->SetRange((int)(0.6) );
107 _manContourControlCalc.push_back(tempC);
108 _mContourModelCalc.push_back(tempM);
109 _mViewContourCalc.push_back(tempV);
111 tam = _mViewContourCalc.size() - 1;
113 _mViewContourCalc[tam]->SetModel( _mContourModelCalc[tam] );
114 _mViewContourCalc[tam]->SetWxVtkBaseView( _imageviewer2D_1 );
115 // _mViewContourCalc[tam]->SetRange( 2 );
116 _mViewContourCalc[tam]->SetZ( 1000 );
117 _mViewContourCalc[tam]->SetColorNormalContour(0, 0.5, 0);
118 _mViewContourCalc[tam]->SetColorEditContour(1, 1, 0.33);
119 _manContourControlCalc[tam]->SetModelView( _mContourModelCalc[tam] , _mViewContourCalc[tam] );
120 _manContourControlCalc[tam]->CreateNewManualContour();
121 _manContourControlCalc[tam]->SetActive(false);
122 _mViewContourCalc[tam]->RefreshContour();
126 //--------------------------------------------------------
127 int manualContourContainer::addHypodenseContour(wxVtk2DBaseView *_imageviewer2D_1)
130 manualContourControler *tempC = new manualContourControler();
131 manualContourModel *tempM = new manualContourModel();
132 manualViewContour *tempV = new manualViewContour();
134 tempV->SetRange( (int)(0.6) );
136 _manContourControlHypo.push_back(tempC);
137 _mContourModelHypo.push_back(tempM);
138 _mViewContourHypo.push_back(tempV);
140 tam = _mViewContourHypo.size() - 1;
141 _mViewContourHypo[tam]->SetModel( _mContourModelHypo[tam] );
142 _mViewContourHypo[tam]->SetWxVtkBaseView( _imageviewer2D_1 );
143 // _mViewContourHypo[tam]->SetRange( 2 );
144 _mViewContourHypo[tam]->SetZ( 1000 );
145 _mViewContourHypo[tam]->SetColorNormalContour(0, 0.5, 0.5);
146 _mViewContourHypo[tam]->SetColorEditContour(1, 1, 0.33);
147 _manContourControlHypo[tam]->SetModelView( _mContourModelHypo[tam] , _mViewContourHypo[tam] );
148 _manContourControlHypo[tam]->CreateNewManualContour();
149 _manContourControlHypo[tam]->SetActive(false);
150 _mViewContourHypo[tam]->RefreshContour();
155 //--------------------------------------------------------
156 void manualContourContainer::setWallVisibility(bool visible)
158 if (_mViewContourWall != NULL)
160 _mViewContourWall->SetVisible( visible );
161 _mViewContourWall->Refresh();
166 //--------------------------------------------------------
167 void manualContourContainer::setLumenVisibility(bool visible)
169 if (_mViewContourLumen != NULL)
171 _mViewContourLumen->SetVisible( visible );
172 _mViewContourLumen->Refresh();
177 //--------------------------------------------------------
178 void manualContourContainer::setCalcVisibility(bool visible)
181 for (i = 0; i < (int)_mViewContourCalc.size(); i++)
183 _mViewContourCalc[i]->SetVisible( visible );
184 _mViewContourCalc[i]->Refresh();
189 //--------------------------------------------------------
190 void manualContourContainer::setHypoVisibility(bool visible)
193 for (i = 0; i < (int)_mViewContourHypo.size(); i++)
195 _mViewContourHypo[i]->SetVisible( visible );
196 _mViewContourHypo[i]->Refresh();
200 //--------------------------------------------------------
201 void manualContourContainer::setWallActive()
203 _manContourControlWall -> SetActive(true);
205 if (_manContourControlLumen != NULL)
207 _manContourControlLumen -> SetActive(false);
211 for (i = 0; i < (int)_manContourControlCalc.size(); i++)
213 _manContourControlCalc[i] -> SetActive(false);
216 for (j = 0; j < (int)_manContourControlHypo.size(); j++)
218 _manContourControlHypo[j] -> SetActive(false);
222 //--------------------------------------------------------
223 void manualContourContainer::setLumenActive()
225 if (_manContourControlWall != NULL)
227 _manContourControlWall -> SetActive(false);
229 _manContourControlLumen -> SetActive(true);
232 for (i = 0; i < (int)_manContourControlCalc.size(); i++)
234 _manContourControlCalc[i] -> SetActive(false);
238 for (j = 0; j < (int)_manContourControlHypo.size(); j++)
240 _manContourControlHypo[j] -> SetActive(false);
246 //--------------------------------------------------------
247 void manualContourContainer::setCalcActive()
249 if (_manContourControlWall != NULL)
251 _manContourControlWall -> SetActive(false);
253 if (_manContourControlLumen != NULL)
255 _manContourControlLumen -> SetActive(false);
258 for (i = 0; i < (int)_manContourControlHypo.size(); i++)
260 _manContourControlHypo[i] -> SetActive(false);
263 for (j = 0; j < (int)_manContourControlCalc.size(); j++)
265 _manContourControlCalc[j] -> SetActive(true);
269 //--------------------------------------------------------
270 void manualContourContainer::setHypoActive()
272 if (_manContourControlWall != NULL)
274 _manContourControlWall -> SetActive(false);
277 if (_manContourControlLumen != NULL)
279 _manContourControlLumen -> SetActive(false);
283 for (i = 0; i < (int)_manContourControlCalc.size(); i++)
285 _manContourControlCalc[i] -> SetActive(false);
289 for (j = 0; j < (int)_manContourControlHypo.size(); j++)
291 _manContourControlHypo[j] -> SetActive(true);
295 //--------------------------------------------------------
296 void manualContourContainer::setCalcContourActive(int i)
298 if (_manContourControlWall != NULL)
300 _manContourControlWall -> SetActive(false);
302 if (_manContourControlLumen != NULL)
304 _manContourControlLumen -> SetActive(false);
308 for (j = 0; j < (int)_manContourControlHypo.size(); j++)
310 _manContourControlHypo[j] -> SetActive(false);
313 _manContourControlCalc[i] -> SetActive(true);
316 //--------------------------------------------------------
317 void manualContourContainer::setHypoContourActive(int i)
319 if (_manContourControlWall != NULL)
321 _manContourControlWall -> SetActive(false);
323 if (_manContourControlLumen != NULL)
325 _manContourControlLumen -> SetActive(false);
329 for (j = 0; j < (int)_manContourControlCalc.size(); j++)
331 _manContourControlCalc[j] -> SetActive(true);
334 _manContourControlHypo[i] -> SetActive(true);
337 //--------------------------------------------------------
338 int manualContourContainer::getNumberOfCalcContours()
340 return _manContourControlCalc.size();
343 //--------------------------------------------------------
344 int manualContourContainer::getNumberOfHypoContours()
346 return _manContourControlHypo.size();
349 //--------------------------------------------------------
350 void manualContourContainer::inactivate()
352 if (_manContourControlWall != NULL)
354 _manContourControlWall -> SetActive(false);
356 if (_manContourControlLumen != NULL)
358 _manContourControlLumen -> SetActive(false);
362 for (i = 0; i < (int)_manContourControlCalc.size(); i++)
364 _manContourControlCalc[i] -> SetActive(false);
367 for (j = 0; j < (int)_manContourControlHypo.size(); j++)
369 _manContourControlHypo[j] -> SetActive(false);
373 //--------------------------------------------------------
374 int manualContourContainer::getNumberOfWallContourPoints()
376 return _manContourControlWall->GetNumberOfPointsSplineManualContour();
379 //--------------------------------------------------------
380 int manualContourContainer::getNumberOfLumenContourPoints()
382 return _manContourControlLumen->GetNumberOfPointsSplineManualContour();
385 //--------------------------------------------------------
386 int manualContourContainer::getNumberOfCalcContourPoints(int i)
388 return _manContourControlCalc[i]->GetNumberOfPointsSplineManualContour();
391 //--------------------------------------------------------
392 int manualContourContainer::getNumberOfHypoContourPoints(int i)
394 return _manContourControlHypo[i]->GetNumberOfPointsSplineManualContour();
397 //--------------------------------------------------------
398 double* manualContourContainer::getXVectorWallPoints()
400 return _manContourControlWall->GetVectorPointsXManualContour();
403 //--------------------------------------------------------
404 double* manualContourContainer::getXVectorLumenPoints()
406 return _manContourControlLumen->GetVectorPointsXManualContour();
409 //--------------------------------------------------------
410 double* manualContourContainer::getXVectorCalcPoints(int i)
412 return _manContourControlCalc[i]->GetVectorPointsXManualContour();
415 //--------------------------------------------------------
416 double* manualContourContainer::getXVectorHypoPoints(int i)
418 return _manContourControlHypo[i]->GetVectorPointsXManualContour();
421 //--------------------------------------------------------
422 double* manualContourContainer::getYVectorWallPoints()
424 return _manContourControlWall->GetVectorPointsYManualContour();
427 //--------------------------------------------------------
428 double* manualContourContainer::getYVectorLumenPoints()
430 return _manContourControlLumen->GetVectorPointsYManualContour();
433 //--------------------------------------------------------
434 double* manualContourContainer::getYVectorCalcPoints(int i)
436 return _manContourControlCalc[i]->GetVectorPointsYManualContour();
439 //--------------------------------------------------------
440 double* manualContourContainer::getYVectorHypoPoints(int i)
442 return _manContourControlHypo[i]->GetVectorPointsYManualContour();
445 //--------------------------------------------------------
446 void manualContourContainer::clear()
454 //--------------------------------------------------------
455 void manualContourContainer::clearWall()
457 if (_mViewContourWall != NULL)
459 _mViewContourWall->ClearContour();
464 //--------------------------------------------------------
465 void manualContourContainer::clearLumen()
467 if (_mViewContourLumen != NULL)
469 _mViewContourLumen->ClearContour();
474 //--------------------------------------------------------
475 void manualContourContainer::clearCalc()
478 for (i = 0; i < (int)_mViewContourCalc.size(); i++)
480 _mViewContourCalc[i] -> ClearContour();
484 //--------------------------------------------------------
485 void manualContourContainer::clearHypo()
488 for (j = 0; j < (int)_mViewContourHypo.size(); j++)
490 _mViewContourHypo[j] -> ClearContour();
495 //--------------------------------------------------------
496 void manualContourContainer::refreshWall(wxVtk2DBaseView *_imageviewer2D_1)
499 if (_mContourModelWall == NULL)
504 int size = _mContourModelWall->GetSizeLstPoints();
505 std::vector<manualPoint *> points;
508 for (i = 0; i < size; i++)
510 points.push_back(_mContourModelWall->GetManualPoint(i));
513 _mContourModelWall->DeleteAllPoints();
514 _manContourControlWall->CreateNewManualContour();
515 _manContourControlWall->SetActive(false);
516 _mViewContourWall->RefreshContour();
517 _imageviewer2D_1->GetInteractorStyleBaseView()->AddInteractorStyleMaracas(
518 _manContourControlWall );
519 for (i = 0; i < size; i++)
521 manualPoint* mp = points[i];
522 int id = _manContourControlWall->GetManualContourModel()->AddPoint(mp->GetX(),mp->GetY(),mp->GetZ());
523 _manContourControlWall->GetManualViewBaseContour()->AddPoint();
524 _manContourControlWall->GetManualViewBaseContour()->Refresh();
530 //--------------------------------------------------------
531 void manualContourContainer::refreshLumen(wxVtk2DBaseView *_imageviewer2D_1)
533 if (_mContourModelLumen == NULL)
537 int size = _mContourModelLumen->GetSizeLstPoints();
538 std::vector<manualPoint *> points;
541 for (i = 0; i < size; i++)
543 points.push_back(_mContourModelLumen->GetManualPoint(i));
546 _mContourModelLumen->DeleteAllPoints();
547 _manContourControlLumen->CreateNewManualContour();
548 _manContourControlLumen->SetActive(false);
549 _mViewContourLumen->RefreshContour();
550 _imageviewer2D_1->GetInteractorStyleBaseView()->AddInteractorStyleMaracas(
551 _manContourControlLumen );
552 for (i = 0; i < size; i++)
554 manualPoint* mp = points[i];
555 int id = _manContourControlLumen->GetManualContourModel()->AddPoint(mp->GetX(),mp->GetY(),mp->GetZ());
556 _manContourControlLumen->GetManualViewBaseContour()->AddPoint();
557 _manContourControlLumen->GetManualViewBaseContour()->Refresh();
561 //--------------------------------------------------------
562 void manualContourContainer::refreshCalc(int j,wxVtk2DBaseView *_imageviewer2D_1)
565 int size = _mContourModelCalc[j]->GetSizeLstPoints();
566 std::vector<manualPoint *> points;
569 for (i = 0; i < size; i++)
571 points.push_back(_mContourModelCalc[j]->GetManualPoint(i));
574 _mContourModelCalc[j]->DeleteAllPoints();
575 _manContourControlCalc[j]->CreateNewManualContour();
576 _manContourControlCalc[j]->SetActive(false);
577 _mViewContourCalc[j]->RefreshContour();
578 _imageviewer2D_1->GetInteractorStyleBaseView()->AddInteractorStyleMaracas(
579 _manContourControlCalc[j] );
580 for (i = 0; i < size; i++)
582 manualPoint* mp = points[i];
583 int id = _manContourControlCalc[j]->GetManualContourModel()->AddPoint(mp->GetX(),mp->GetY(),mp->GetZ());
584 _manContourControlCalc[j]->GetManualViewBaseContour()->AddPoint();
585 _manContourControlCalc[j]->GetManualViewBaseContour()->Refresh();
592 //--------------------------------------------------------
593 void manualContourContainer::refreshHypo(int j,wxVtk2DBaseView *_imageviewer2D_1)
596 int size = _mContourModelHypo[j]->GetSizeLstPoints();
597 std::vector<manualPoint *> points;
600 for (i = 0; i < size; i++)
602 points.push_back(_mContourModelHypo[j]->GetManualPoint(i));
605 _mContourModelHypo[j]->DeleteAllPoints();
606 _manContourControlHypo[j]->CreateNewManualContour();
607 _manContourControlHypo[j]->SetActive(false);
608 _mViewContourHypo[j]->RefreshContour();
609 _imageviewer2D_1->GetInteractorStyleBaseView()->AddInteractorStyleMaracas(
610 _manContourControlHypo[j] );
611 for (i = 0; i < size; i++)
613 manualPoint* mp = points[i];
614 int id = _manContourControlHypo[j]->GetManualContourModel()->AddPoint(mp->GetX(),mp->GetY(),mp->GetZ());
615 _manContourControlHypo[j]->GetManualViewBaseContour()->AddPoint();
616 _manContourControlHypo[j]->GetManualViewBaseContour()->Refresh();
620 //--------------------------------------------------------
621 void manualContourContainer::restartWallContour(wxVtk2DBaseView *_imageviewer2D_1)
623 if (_manContourControlWall == NULL)
627 delete _manContourControlWall;
628 delete _mContourModelWall;
629 delete _mViewContourWall;
631 _manContourControlWall = new manualContourControler();
632 _mContourModelWall = new manualContourModel();
633 _mViewContourWall = new manualViewContour();
635 _mViewContourWall->SetRange( (int)(0.6) );
637 _mViewContourWall->SetModel( _mContourModelWall );
638 _mViewContourWall->SetWxVtkBaseView( _imageviewer2D_1 );
639 // _mViewContourWall->SetRange( 2 );
640 _mViewContourWall->SetZ( 1000 );
641 _mViewContourWall->SetColorNormalContour(0.2, 0.6, 1);
642 _mViewContourWall->SetColorEditContour(1, 1, 0.33);
644 _manContourControlWall->SetModelView( _mContourModelWall , _mViewContourWall );
645 _manContourControlWall->CreateNewManualContour();
646 _manContourControlWall->SetActive(false);
647 _mViewContourWall->RefreshContour();
649 //--------------------------------------------------------
650 void manualContourContainer::restartLumenContour(wxVtk2DBaseView *_imageviewer2D_1)
653 if (_manContourControlLumen == NULL)
657 delete _manContourControlLumen;
658 delete _mContourModelLumen;
659 delete _mViewContourLumen;
661 _manContourControlLumen = new manualContourControler();
662 _mContourModelLumen = new manualContourModel();
663 _mViewContourLumen = new manualViewContour();
664 _mViewContourLumen->SetModel( _mContourModelLumen );
665 _mViewContourLumen->SetWxVtkBaseView( _imageviewer2D_1 );
667 _mViewContourLumen->SetRange( (int)(0.6) );
668 _mViewContourLumen->SetZ( 1000 );
669 _mViewContourLumen->SetColorNormalContour(1, 0, 0);
670 _mViewContourLumen->SetColorEditContour(1, 1, 0.33);
672 _manContourControlLumen->SetModelView( _mContourModelLumen , _mViewContourLumen );
673 _manContourControlLumen->CreateNewManualContour();
674 _manContourControlLumen->SetActive(false);
675 _mViewContourLumen->RefreshContour();
678 //--------------------------------------------------------
679 void manualContourContainer::restartCalcContours()
682 for (i = 0; i < (int)_mContourModelCalc.size(); i++)
685 _manContourControlCalc[i] = NULL;
686 _mContourModelCalc[i] = NULL;
687 _mViewContourCalc[i] = NULL;
689 delete _manContourControlCalc[i];
690 delete _mContourModelCalc[i];
691 delete _mViewContourCalc[i];
694 _manContourControlCalc.clear();
695 _mContourModelCalc.clear();
696 _mViewContourCalc.clear();
699 //--------------------------------------------------------
700 void manualContourContainer::restartHypoContours()
703 for (i = 0; i < (int)_mContourModelHypo.size(); i++)
706 _manContourControlHypo[i] = NULL;
707 _mContourModelHypo[i] = NULL;
708 _mViewContourHypo[i] = NULL;
710 delete _manContourControlHypo[i];
711 delete _mContourModelHypo[i];
712 delete _mViewContourHypo[i];
715 _manContourControlHypo.clear();
716 _mContourModelHypo.clear();
717 _mViewContourHypo.clear();
720 //--------------------------------------------------------
721 void manualContourContainer::createWallContour(wxVtk2DBaseView *_imageviewer2D_1)
724 _manContourControlWall = new manualContourControler();
725 _mContourModelWall = new manualContourModel();
726 _mViewContourWall = new manualViewContour();
727 _mViewContourWall->SetModel( _mContourModelWall );
728 _mViewContourWall->SetWxVtkBaseView( _imageviewer2D_1 );
730 _mViewContourWall->SetRange( (int)(0.6) );
732 _mViewContourWall->SetZ( 1000 );
733 _mViewContourWall->SetColorNormalContour(0.2, 0.6, 1);
734 _mViewContourWall->SetColorEditContour(1, 1, 0.33);
736 _manContourControlWall->SetModelView( _mContourModelWall , _mViewContourWall );
737 _manContourControlWall->CreateNewManualContour();
738 _manContourControlWall->SetActive(false);
739 _mViewContourWall->RefreshContour();
742 //--------------------------------------------------------
743 void manualContourContainer::createLumenContour(wxVtk2DBaseView *_imageviewer2D_1)
747 _manContourControlLumen = new manualContourControler();
748 _mContourModelLumen = new manualContourModel();
749 _mViewContourLumen = new manualViewContour();
750 _mViewContourLumen->SetModel( _mContourModelLumen );
751 _mViewContourLumen->SetWxVtkBaseView( _imageviewer2D_1 );
753 _mViewContourLumen->SetRange( (int)(0.6) );
755 _mViewContourLumen->SetZ( 1000 );
756 _mViewContourLumen->SetColorNormalContour(1, 0, 0);
757 _mViewContourLumen->SetColorEditContour(1, 1, 0.33);
759 _manContourControlLumen->SetModelView( _mContourModelLumen , _mViewContourLumen );
760 _manContourControlLumen->CreateNewManualContour();
761 _manContourControlLumen->SetActive(false);
762 _mViewContourLumen->RefreshContour();