00001 #include "manualViewBaseContour.h"
00002
00003
00004
00005
00006
00007
00008 manualViewBaseContour::manualViewBaseContour()
00009 {
00010 _show_text = true;
00011 _textActor = NULL;
00012 _manContModel = NULL;
00013 _wxvtkbaseview = NULL;
00014 _selected = false;
00015 _posibleSelected = false;
00016 _viewControlPoints = false;
00017 _pts = NULL;
00018 _pd = NULL;
00019 _contourVtkActor = NULL;
00020 _bboxMapper = NULL;
00021 _range = 1;
00022 _sizePointsContour = 100;
00023 _spc[0] = 1;
00024 _spc[1] = 1;
00025 _spc[2] = 1;
00026
00027 _coulorEdit_r = 1;
00028 _coulorEdit_g = 1;
00029 _coulorEdit_b = 0;
00030
00031 _coulorNormal_r = 1;
00032 _coulorNormal_g = 0;
00033 _coulorNormal_b = 1;
00034
00035 _coulorSelection_r = 0;
00036 _coulorSelection_g = 1;
00037 _coulorSelection_b = 0;
00038
00039 _widthline = 1;
00040
00041 }
00042
00043 manualViewBaseContour::~manualViewBaseContour()
00044 {
00045 int i,size=_lstViewPoints.size();
00046 for (i=0;i<size; i++){
00047 delete _lstViewPoints[i];
00048 }
00049 _lstViewPoints.clear();
00050 }
00051
00052
00053
00054 int manualViewBaseContour::GetType()
00055 {
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066 return 0;
00067 }
00068
00069
00070 void manualViewBaseContour::Save(FILE *pFile)
00071 {
00072 fprintf(pFile,"TypeView %d\n", GetType() );
00073 }
00074
00075
00076 void manualViewBaseContour::Open(FILE *pFile)
00077 {
00078 }
00079
00080
00081 void manualViewBaseContour :: AddCompleteContourActor( bool ifControlPoints )
00082 {
00083 _viewControlPoints = ifControlPoints;
00084 _wxvtkbaseview->GetRenderer();
00085
00086 AddSplineActor();
00087 AddTextActor();
00088
00089
00090 if( ifControlPoints )
00091 AddControlPoints();
00092 RefreshContour();
00093 Refresh();
00094 }
00095
00096
00097 void manualViewBaseContour :: RemoveCompleteContourActor()
00098 {
00099 _wxvtkbaseview->GetRenderer();
00100
00101 RemoveSplineActor();
00102 RemoveTextActor();
00103
00104
00105 RemoveControlPoints();
00106 RefreshContour();
00107 Refresh();
00108 }
00109
00110 manualViewBaseContour * manualViewBaseContour :: Clone( )
00111 {
00112 manualViewBaseContour * clone = new manualViewBaseContour();
00113 CopyAttributesTo(clone);
00114 return clone;
00115
00116 }
00117
00118
00119
00120 void manualViewBaseContour::CopyAttributesTo( manualViewBaseContour * cloneObject)
00121 {
00122
00123
00124
00125 cloneObject-> SetWxVtkBaseView( this->_wxvtkbaseview );
00126 cloneObject-> SetSelected( this->GetSelected() );
00127 cloneObject-> SetPosibleSelected( this->GetPosibleSelected() );
00128 cloneObject-> SetIfViewControlPoints( this->GetIfViewControlPoints() );
00129 cloneObject-> SetRange( this->GetRange() );
00130 cloneObject-> SetZ( this->GetZ() );
00131 cloneObject-> SetSpacing( _spc );
00132 cloneObject-> SetColorNormalContour( _coulorNormal_r, _coulorNormal_g, _coulorNormal_b );
00133 cloneObject-> SetColorEditContour( _coulorEdit_r, _coulorEdit_g, _coulorEdit_b );
00134 cloneObject-> SetColorSelectContour( _coulorSelection_r, _coulorSelection_g, _coulorSelection_b );
00135
00136 int i, size = _lstViewPoints.size();
00137 for ( i=0; i<size; i++ )
00138 {
00139 cloneObject->AddPoint( );
00140 }
00141 }
00142
00143
00144 void manualViewBaseContour :: AddSplineActor()
00145 {
00146 vtkRenderer * theRenderer = _wxvtkbaseview->GetRenderer();
00147 if (_contourVtkActor!=NULL)
00148 theRenderer->AddActor( _contourVtkActor );
00149 }
00150
00151 void manualViewBaseContour :: RemoveSplineActor()
00152 {
00153 vtkRenderer * theRenderer = _wxvtkbaseview->GetRenderer();
00154 if (_contourVtkActor!=NULL)
00155 theRenderer->RemoveActor( _contourVtkActor );
00156 }
00157
00158 void manualViewBaseContour :: RemoveControlPoints()
00159 {
00160 if (_wxvtkbaseview!=NULL){
00161 vtkRenderer * theRenderer = _wxvtkbaseview->GetRenderer();
00162 int i,size=_lstViewPoints.size();
00163 for (i=0;i<size; i++)
00164 {
00165 vtkActor * pointActor = _lstViewPoints[i]->GetVtkActor();
00166 theRenderer->RemoveActor( pointActor );
00167 }
00168 }
00169 SetIfViewControlPoints( false );
00170 }
00171
00172 void manualViewBaseContour::AddControlPoints()
00173 {
00174 vtkRenderer * theRenderer = _wxvtkbaseview->GetRenderer();
00175 SetIfViewControlPoints( true );
00176 if( _viewControlPoints )
00177 {
00178 int i,size=_lstViewPoints.size();
00179 for (i=0;i<size; i++)
00180 {
00181 vtkActor * pointActor = _lstViewPoints[i]->GetVtkActor();
00182 theRenderer->AddActor( pointActor );
00183 }
00184 }
00185 }
00186
00187 void manualViewBaseContour::AddTextActor()
00188 {
00189 if(_show_text)
00190 {
00191 _wxvtkbaseview->GetRenderer()->AddActor2D( _textActor );
00192 }
00193 }
00194
00195 void manualViewBaseContour::RemoveTextActor()
00196 {
00197 if(_show_text)
00198 {
00199 _wxvtkbaseview->GetRenderer()->RemoveActor2D( _textActor );
00200 }
00201 }
00202
00203 void manualViewBaseContour::DeleteVtkObjects()
00204 {
00205 if ( _contourVtkActor != NULL ) { _contourVtkActor -> Delete(); }
00206 if ( _bboxMapper != NULL ) { _bboxMapper -> Delete(); }
00207 if ( _pts != NULL ) { _pts -> Delete(); }
00208 if ( _pd != NULL ) { _pd -> Delete(); }
00209 _contourVtkActor = NULL;
00210 _bboxMapper = NULL;
00211 _pts = NULL;
00212 _pd = NULL;
00213 }
00214
00215
00216
00217 void manualViewBaseContour::SetWidthLine(double width)
00218 {
00219 _widthline = width;
00220 this->UpdateColorActor();
00221
00222
00223 int id, size = _lstViewPoints.size();
00224 for( id=0; id<size; id++)
00225 {
00226 this->_lstViewPoints[id]->SetWidthLine(_widthline);
00227 }
00228
00229 }
00230
00231
00232 double manualViewBaseContour::GetWidthLine()
00233 {
00234 return _widthline;
00235 }
00236
00237
00238 void manualViewBaseContour::ConstructVTKObjects()
00239 {
00240
00241
00242
00243
00244 int i;
00245 int nps = _manContModel->GetNumberOfPointsSpline();
00246
00247
00248 DeleteVtkObjects();
00249 _pts = vtkPoints::New();
00250 _pts->SetNumberOfPoints(nps);
00251 for (i=0 ; i<nps ; i++){
00252 _pts->SetPoint(i, 0 , 0 , 0 );
00253 }
00254
00255
00256
00257
00258
00259 _pts->SetPoint(0, -1000 , -1000 , -1000 );
00260 _pts->SetPoint(1, 1000 , 1000 , 1000 );
00261
00262 vtkCellArray *lines = vtkCellArray::New();
00263 lines->InsertNextCell( nps );
00264 for ( i=0 ; i<nps+1 ; i++ ){
00265 lines->InsertCellPoint(i % nps );
00266 }
00267 _pd = vtkPolyData::New();
00268 _pd->SetPoints( _pts );
00269 _pd->SetLines( lines );
00270 lines->Delete();
00271
00272 _contourVtkActor = vtkActor::New();
00273 _bboxMapper = vtkPolyDataMapper::New();
00274 _bboxMapper->ScalarVisibilityOff( );
00275
00276 _bboxMapper->SetInput(_pd);
00277 _bboxMapper->ImmediateModeRenderingOn();
00278 _contourVtkActor->SetMapper(_bboxMapper);
00279 _contourVtkActor->GetProperty()->BackfaceCullingOff();
00280
00281 UpdateColorActor();
00282
00283 _pd->ComputeBounds();
00284
00285 InitTextActor();
00286 }
00287
00288 void manualViewBaseContour::InitTextActor()
00289 {
00290
00291 _textActor = vtkTextActor::New();
00292
00293 _textActor->SetInput("00");
00294
00295
00296
00297 _textActor->GetPositionCoordinate()->SetCoordinateSystemToWorld ();
00298
00299
00300 vtkTextProperty *tprop = _textActor->GetTextProperty();
00301 tprop->SetFontSize(14);
00302 tprop->SetFontFamilyToArial();
00303 tprop->SetColor(0, 0, 1);
00304 }
00305
00306
00307 void manualViewBaseContour::CreateNewContour()
00308 {
00309 ConstructVTKObjects();
00310
00311
00312
00313 AddCompleteContourActor();
00314 }
00315
00316 void manualViewBaseContour::UpdateViewPoint(int id)
00317 {
00318 manualPoint *mp = _manContModel->GetManualPoint(id);
00319
00320
00321 double XX=mp->GetX(),YY=mp->GetY(),ZZ=mp->GetZ();
00322
00323
00324
00325 _lstViewPoints[id]->SetPositionXY( XX , YY ,_range, ZZ );
00326 }
00327
00328
00329 void manualViewBaseContour::UpdateViewPoints()
00330 {
00331 int id, size = _lstViewPoints.size();
00332 for( id=0; id<size; id++)
00333 {
00334 UpdateViewPoint( id );
00335 }
00336 }
00337
00338
00339 void manualViewBaseContour::AddPoint()
00340 {
00341 manualViewPoint *mvp = new manualViewPoint( this->GetWxVtkBaseView() );
00342 AddPoint( mvp );
00343 }
00344
00345 void manualViewBaseContour::AddPoint( manualViewPoint * manualViewPoint )
00346 {
00347 _lstViewPoints.push_back( manualViewPoint );
00348
00349
00350 manualViewPoint->SetSpacing(_spc);
00351
00352 vtkActor *actor = manualViewPoint->CreateVtkPointActor();
00353 _wxvtkbaseview->GetRenderer()->AddActor( actor );
00354 }
00355
00356
00357 void manualViewBaseContour::InsertPoint(int id)
00358 {
00359 manualViewPoint *mvp = new manualViewPoint( this->GetWxVtkBaseView() );
00360
00361
00362 mvp->SetSpacing(_spc);
00363
00364 std::vector<manualViewPoint*>::iterator itNum = _lstViewPoints.begin() + id;
00365 _lstViewPoints.insert(itNum,mvp);
00366 _wxvtkbaseview->GetRenderer()->AddActor( mvp->CreateVtkPointActor() );
00367 }
00368
00369 void manualViewBaseContour::DeleteContour()
00370 {
00371 RemoveCompleteContourActor();
00372
00373
00374
00375 DeleteVtkObjects();
00376 int i,size=_lstViewPoints.size();
00377 for (i=0;i<size;i++){
00378 manualViewBaseContour::DeletePoint(0);
00379 }
00380 Refresh();
00381 }
00382
00383 void manualViewBaseContour::DeletePoint(int id)
00384 {
00385 int size=_lstViewPoints.size();
00386 if ( (id>=0) && (id<size) ){
00387 manualViewPoint *mvp =_lstViewPoints[id];
00388
00389
00390 _wxvtkbaseview->GetRenderer()->RemoveActor( mvp->GetVtkActor() );
00391 std::vector<manualViewPoint*>::iterator itNum = _lstViewPoints.begin() + id;
00392 _lstViewPoints.erase(itNum);
00393 delete mvp;
00394 Refresh();
00395 }
00396 }
00397
00398 void manualViewBaseContour::DeletePoint(int x, int y, int z)
00399 {
00400 int id=GetIdPoint(x,y,z);
00401 if (id!=-1){
00402 DeletePoint(id);
00403 }
00404 }
00405
00406 void manualViewBaseContour::SetSelected(bool selected)
00407 {
00408 _selected=selected;
00409 }
00410
00411 void manualViewBaseContour::SetPosibleSelected(bool posibleSelected)
00412 {
00413 _posibleSelected=posibleSelected;
00414 }
00415
00416 bool manualViewBaseContour::GetEditable()
00417 {
00418 return *_editable;
00419 }
00420
00421 void manualViewBaseContour::SetEditable( bool * condition )
00422 {
00423 _editable = condition;
00424 }
00425
00426 bool manualViewBaseContour::GetSelected()
00427 {
00428 return _selected;
00429 }
00430
00431 bool manualViewBaseContour::GetPosibleSelected()
00432 {
00433 return _posibleSelected;
00434 }
00435
00436 void manualViewBaseContour::DeleteSelectedPoints()
00437 {
00438 int i,size=_lstViewPoints.size();
00439 for (i=size-1;i>=0;i--){
00440 if (_lstViewPoints[i]->GetSelected()==true){
00441 DeletePoint(i);
00442 }
00443 }
00444 Refresh();
00445 }
00446
00447 void manualViewBaseContour::SelectPoint(int i, bool select)
00448 {
00449 _lstViewPoints[i]->SetSelected(select);
00450 }
00451
00452 void manualViewBaseContour::SelectLstPoints()
00453 {
00454
00455 }
00456
00457 void manualViewBaseContour::SelectAllPoints(bool select)
00458 {
00459 int i,size=_lstViewPoints.size();
00460 for (i=0;i<size;i++){
00461 SelectPoint(i,select);
00462 }
00463 }
00464
00465 void manualViewBaseContour:: SetIfViewControlPoints(bool ifShow)
00466 {
00467 _viewControlPoints = ifShow;
00468 }
00469
00470 bool manualViewBaseContour:: GetIfViewControlPoints()
00471 {
00472 return _viewControlPoints;
00473 }
00474
00475
00476 void manualViewBaseContour::SetPointPosibleSelected(int id,bool select)
00477 {
00478 _lstViewPoints[id]->SetPosibleSelected(select);
00479 }
00480
00481 void manualViewBaseContour::SetPointSelected(int id,bool select)
00482 {
00483 _lstViewPoints[id]->SetSelected(select);
00484 }
00485
00486 void manualViewBaseContour::SelectAllPossibleSelected(bool select)
00487 {
00488 int i,size=_lstViewPoints.size();
00489 for (i=0;i<size;i++){
00490 SetPointPosibleSelected(i,select);
00491 }
00492 }
00493
00494 int manualViewBaseContour::SelectPosiblePoint(int x, int y, int z)
00495 {
00496 SelectAllPossibleSelected(false);
00497
00498 int id = GetIdPoint(x,y,z);
00499 if (id!=-1)
00500 {
00501 SetPointPosibleSelected(id,true);
00502 }
00503 return id;
00504 }
00505
00506 bool manualViewBaseContour::SelectPosibleContour(int x, int y, int z)
00507 {
00508 bool result=false;
00509 SetPosibleSelected(result);
00510 int id = GetIdPoint(x,y,z);
00511
00512 if( !GetEditable() && !_selected && id!= -1)
00513 {
00514 result=true;
00515 _posibleSelected=true;
00516 }
00517 else
00518 {
00519 if ( (GetEditable()==true) && (id==-1 ) && (this->_lstViewPoints.size()>=2) )
00520 {
00521 if (ifTouchContour(x,y,z)==true)
00522 {
00523 result=true;
00524 SetPosibleSelected(result);
00525 }
00526 }
00527
00528 if (GetEditable()==false)
00529 {
00530 if (ifTouchContour(x,y,z)==true)
00531 {
00532 result=true;
00533 SetPosibleSelected(result);
00534 }
00535 }
00536 }
00537 return result;
00538 }
00539
00540 bool manualViewBaseContour::ifTouchContour(int x,int y, int z)
00541 {
00542 return false;
00543 }
00544
00545 void manualViewBaseContour::UnSelectPoint(int i){
00546 _lstViewPoints[i]->SetSelected(false);
00547 Refresh();
00548 }
00549
00550 void manualViewBaseContour::UnSelectLstPoints(){
00551
00552 }
00553
00554 void manualViewBaseContour::UnSelectAllPoints(){
00555 int i,size=_lstViewPoints.size();
00556 for (i=0;i<size;i++){
00557 UnSelectPoint(i);
00558 }
00559 Refresh();
00560 }
00561
00562 void manualViewBaseContour::SetModel(manualBaseModel *manContModel){
00563 _manContModel=manContModel;
00564 }
00565
00566 void manualViewBaseContour::SetWxVtkBaseView(wxVtkBaseView *wxvtkbaseview){
00567 _wxvtkbaseview = wxvtkbaseview;
00568 }
00569
00570 void manualViewBaseContour::RefreshContour()
00571 {
00572 }
00573
00574 double* manualViewBaseContour::GetVectorPointsXManualContour(){
00575 double pp[3];
00576 int i,size = _sizePointsContour;
00577 double *vx = (double*)malloc(sizeof(double)*size);
00578 for (i=0;i<size;i++){
00579 _pts->GetPoint(i,pp);
00580 vx[i]=pp[0];
00581 }
00582 return vx;
00583 }
00584
00585 double* manualViewBaseContour::GetVectorPointsYManualContour()
00586 {
00587 double pp[3];
00588 int i,size = _sizePointsContour;
00589 double *vy = (double*)malloc(sizeof(double)*size);
00590 for (i=0;i<size;i++){
00591 _pts->GetPoint(i,pp);
00592 vy[i]=pp[1];
00593 }
00594 return vy;
00595 }
00596
00597 double* manualViewBaseContour::GetVectorPointsZManualContour()
00598 {
00599 double pp[3];
00600 int i,size = _sizePointsContour;
00601 double *vz = (double*)malloc(sizeof(double)*size);
00602 for (i=0;i<size;i++){
00603 _pts->GetPoint(i,pp);
00604 vz[i]=pp[2];
00605 }
00606 return vz;
00607 }
00608
00609 void manualViewBaseContour::Refresh()
00610 {
00611 if (_contourVtkActor!=NULL){
00612 RefreshContour();
00613 }
00614 int i,size=_lstViewPoints.size();
00615 for (i=0;i<size;i++){
00616 UpdateViewPoint(i);
00617 _lstViewPoints[i]->UpdateColorActor();
00618 }
00619 UpdateColorActor();
00620
00621 if (_show_text==true)
00622 {
00623 RefreshText();
00624 }
00625
00626 vtkRenderWindowInteractor *vri = _wxvtkbaseview->GetWxVTKRenderWindowInteractor ();
00627 if (vri==NULL)
00628 {
00629 _wxvtkbaseview->GetRenWin()->Render();
00630 printf("EED %p How to optimize manualViewBaseContour::Refresh() \n",this);
00631 }
00632
00633 }
00634
00635 void manualViewBaseContour::RefreshText()
00636 {
00637 if( _textActor!=NULL)
00638 _textActor -> SetInput("00");
00639 }
00640
00641 void manualViewBaseContour::SetColorNormalContour(double r, double g, double b)
00642 {
00643 _coulorNormal_r = r;
00644 _coulorNormal_g = g;
00645 _coulorNormal_b = b;
00646 }
00647
00648 void manualViewBaseContour::GetColorNormalContour(double &r, double &g, double &b)
00649 {
00650 r = _coulorNormal_r;
00651 g = _coulorNormal_g;
00652 b = _coulorNormal_b;
00653 }
00654
00655 void manualViewBaseContour::SetColorEditContour(double r, double g, double b)
00656 {
00657 _coulorEdit_r = r;
00658 _coulorEdit_g = g;
00659 _coulorEdit_b = b;
00660 }
00661
00662 void manualViewBaseContour::GetColorEditContour(double &r, double &g, double &b)
00663 {
00664 r = _coulorEdit_r;
00665 g = _coulorEdit_g;
00666 b = _coulorEdit_b;
00667 }
00668
00669 void manualViewBaseContour::SetColorSelectContour(double r, double g, double b)
00670 {
00671 _coulorSelection_r = r;
00672 _coulorSelection_g = g;
00673 _coulorSelection_b = b;
00674 }
00675
00676 void manualViewBaseContour::GetColorSelectContour(double &r, double &g, double &b)
00677 {
00678 r = _coulorSelection_r;
00679 g = _coulorSelection_g;
00680 b = _coulorSelection_b;
00681 }
00682
00683 void manualViewBaseContour::UpdateColorActor()
00684 {
00685 if (_contourVtkActor!=NULL)
00686 {
00687 _contourVtkActor->GetProperty()->SetLineWidth( _widthline );
00688 _contourVtkActor->GetProperty()->SetDiffuseColor( _coulorNormal_r , _coulorNormal_g , _coulorNormal_b );
00689 if (_posibleSelected || (_posibleSelected && GetEditable() ) )
00690 {
00691 _contourVtkActor->GetProperty()->SetDiffuseColor( _coulorEdit_r , _coulorEdit_g , _coulorEdit_b );
00692 }
00693 if( _selected )
00694 {
00695 _contourVtkActor->GetProperty()->SetDiffuseColor( _coulorSelection_r , _coulorSelection_g , _coulorSelection_b );
00696 }
00697 }
00698 }
00699
00700 int manualViewBaseContour::GetIdPoint(int x, int y, int z)
00701 {
00702 int ii = -1;
00703 if (_manContModel!=NULL){
00704 double xx = x;
00705 double yy = y;
00706 double zz = z;
00707 TransfromCoordViewWorld(xx,yy,zz);
00708 ii=_manContModel->GetIdPoint(xx,yy,zz,_range,-1);
00709 }
00710 return ii;
00711 }
00712
00713
00714
00715
00716 int manualViewBaseContour::GetNumberOfPoints()
00717 {
00718 return _lstViewPoints.size();
00719 }
00720
00721
00722
00723
00724
00725
00726
00727
00728
00729
00730
00731
00732
00733
00734
00735
00736
00737 void manualViewBaseContour::TransfromCoordViewWorld(double &X, double &Y, double &Z, int type)
00738 {
00739 _wxvtkbaseview->TransFromCoordScreenToWorld(X, Y, Z,false, type);
00740
00741
00742
00743
00744
00745
00746
00747 }
00748
00749 void manualViewBaseContour::SetRange(double range)
00750 {
00751 _range=range;
00752 }
00753
00754 double manualViewBaseContour::GetRange()
00755 {
00756 return _range;
00757 }
00758
00759 void manualViewBaseContour::SetZ(int z)
00760 {
00761
00762 }
00763
00764 int manualViewBaseContour::GetZ()
00765 {
00766
00767 return 0;
00768 }
00769
00770 void manualViewBaseContour::InitMove(int x, int y, int z)
00771 {
00772
00773 }
00774
00775 void manualViewBaseContour::MoveContour(int x, int y, int z)
00776 {
00777 }
00778
00779 void manualViewBaseContour::MoveContour(int horizontalUnits, int verticalUnits )
00780 {
00781
00782 }
00783
00784 void manualViewBaseContour::GetMinMax( double &minX,double &minY, double &minZ, double &maxX, double &maxY, double &maxZ )
00785 {
00786 double pp[3];
00787 manualPoint *mp;
00788 int i;
00789 int size=_manContModel->GetSizeLstPoints();
00790 minX=99999;
00791 minY=99999;
00792 maxX=-99999;
00793 maxY=-99999;
00794 bool ifFindZ = minZ!=-1.0 && maxZ!=-1.0;
00795 if ( ifFindZ )
00796 {
00797 minZ=99999;
00798 maxZ=-99999;
00799 }
00800 for( i = 0; i < size; i++ )
00801 {
00802 mp=_manContModel->GetManualPoint(i);
00803 pp[0]=mp->GetX();
00804 pp[1]=mp->GetY();
00805 if ( ifFindZ )
00806 pp[2]=mp->GetZ();
00807
00808
00809 if (pp[0]<minX)
00810 {
00811 minX=pp[0];
00812 }
00813
00814 if (pp[1]<minY)
00815 {
00816 minY=pp[1];
00817 }
00818
00819 if (pp[0]>maxX)
00820 {
00821 maxX=pp[0];
00822 }
00823
00824 if (pp[1]>maxY)
00825 {
00826 maxY=pp[1];
00827 }
00828 if ( ifFindZ )
00829 {
00830
00831 if (pp[2]<minZ)
00832 {
00833 minZ=pp[2];
00834 }
00835
00836 if (pp[2]>maxZ)
00837 {
00838 maxZ=pp[2];
00839 }
00840 }
00841 }
00842 if ( size<1 )
00843 {
00844 minX = 0;
00845 maxX = 0;
00846
00847 minY = 0;
00848 maxY = 0;
00849
00850 minZ = 0;
00851 maxZ = 0;
00852 }
00853 }
00854
00855 void manualViewBaseContour::ClearContour()
00856 {
00857 if (_contourVtkActor!=NULL){
00858 _wxvtkbaseview->GetRenderer()->RemoveActor( _contourVtkActor );
00859 }
00860 DeleteVtkObjects();
00861 int i,size=_lstViewPoints.size();
00862 for (i=0;i<size;i++){
00863 ClearPoint(0);
00864 }
00865 Refresh();
00866 }
00867
00868 void manualViewBaseContour::ClearPoint(int id)
00869 {
00870 DeletePoint(id);
00871 }
00872
00873 void manualViewBaseContour::SetVisible(bool ok)
00874 {
00875 double opacity;
00876 if (ok==true)
00877 {
00878 opacity=1;
00879 } else {
00880 opacity=0.5;
00881 }
00882 vtkActor *actor;
00883 int i,size=_lstViewPoints.size();
00884 for (i=0;i<size;i++){
00885 actor = _lstViewPoints[i]->GetVtkActor();
00886 actor->GetProperty()->SetOpacity( opacity );
00887 }
00888 _contourVtkActor->GetProperty()->SetOpacity( opacity );
00889 _textActor->GetProperty()->SetOpacity( opacity );
00890 _textActor->SetInput("00");
00891
00892 }
00893
00894 void manualViewBaseContour::SetShowText(bool ok)
00895 {
00896 _show_text = ok;
00897 if (_show_text==false && _textActor!=NULL)
00898 {
00899 _textActor->SetInput("00");
00900 }
00901 }
00902
00903 wxVtkBaseView *manualViewBaseContour::GetWxVtkBaseView()
00904 {
00905 return this->_wxvtkbaseview;
00906 }
00907
00908 void manualViewBaseContour::GetSpacing(double spc[3])
00909 {
00910 spc[0] = _spc[0];
00911 spc[1] = _spc[1];
00912 spc[2] = _spc[2];
00913 }
00914
00915 void manualViewBaseContour::SetSpacing(double spc[3])
00916 {
00917 _spc[0] = spc[0];
00918 _spc[1] = spc[1];
00919 _spc[2] = spc[2];
00920 }