manualViewBaseContour.cpp

Go to the documentation of this file.
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() // virtual
00055 {
00056 // Information...
00057 //int manualViewBaseContour::GetType()          0;
00058 //int manualViewContour::GetType()                      1;
00059 //int manualViewRoi::GetType()                          2;
00060 //int manualViewCircle::GetType()                       3;
00061 //int manualViewStar::GetType()                         4;
00062 //int manualViewLine::GetType()                         6;
00063 //int manualViewPoints::GetType()                       7;
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          /*vtkRenderer * theRenderer = */  _wxvtkbaseview->GetRenderer();  // JPRx ??
00085          //Adding the spline
00086          AddSplineActor();
00087          AddTextActor();
00088 
00089          //Adding each control point
00090          if( ifControlPoints )
00091                 AddControlPoints();
00092          RefreshContour();
00093          Refresh();
00094 }
00095 // ---------------------------------------------------------------------------
00096 
00097 void manualViewBaseContour :: RemoveCompleteContourActor()
00098 {
00099         /*vtkRenderer * theRenderer =*/  _wxvtkbaseview->GetRenderer(); // JPRx ??
00100          //Removing the spline
00101         RemoveSplineActor();
00102         RemoveTextActor();
00103 
00104         //Removing each point
00105         RemoveControlPoints();
00106         RefreshContour();
00107         Refresh();
00108 }
00109 // ---------------------------------------------------------------------------
00110 manualViewBaseContour *  manualViewBaseContour :: Clone( )//virtual
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         // Fathers object
00123         //XXXX::CopyAttributesTo(cloneObject);
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() // virtual
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                 } // for
00168         } // if
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         // for the control points
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 //JSTG 29-02-08 -----------------------------------------------
00243         //int i , nps = _sizePointsContour;
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         // This is for the boundaring inicialisation
00255 
00256 //EED 29Mars2009        
00257         //_pts->SetPoint(0,     0       , 0     , -1000 );
00258         //_pts->SetPoint(1,     0       , 0     ,  1000 );
00259         _pts->SetPoint(0,       -1000   , -1000 , -1000 );
00260         _pts->SetPoint(1,       1000    , 1000  , 1000  );
00261 
00262         vtkCellArray *lines = vtkCellArray::New();
00263         lines->InsertNextCell( nps /* +1 */ );
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();  //do not delete lines ??
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         //      Text
00291         _textActor = vtkTextActor::New();
00292 //      _textActor->SetDisplayPosition(200, 200);
00293         _textActor->SetInput("00");
00294         // Set coordinates to match the old vtkScaledTextActor default value
00295 //      _textActor->GetPosition2Coordinate()->SetCoordinateSystemToNormalizedViewport();
00296 //      _textActor->GetPosition2Coordinate()->SetValue( 0.2 , 0.2 );
00297         _textActor->GetPositionCoordinate()->SetCoordinateSystemToWorld ();
00298 //      _textActor->GetPositionCoordinate()->SetValue( 0.8 , 0.8 );
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         _wxvtkbaseview->GetRenderer()->AddActor( _contourVtkActor );
00312         _wxvtkbaseview->GetRenderer()->AddActor2D(_textActor);*/
00313         AddCompleteContourActor();
00314 }
00315 // ----------------------------------------------------------------------------
00316 void manualViewBaseContour::UpdateViewPoint(int id) // virtual
00317 {
00318         manualPoint             *mp             = _manContModel->GetManualPoint(id);
00319 
00320 //EEDx6
00321                         double XX=mp->GetX(),YY=mp->GetY(),ZZ=mp->GetZ();
00322 //                      wxVtk2DBaseView *wxvtk2Dbasevie = (wxVtk2DBaseView*)this->GetWxVtkBaseView();
00323 //                      wxvtk2Dbasevie->TransformCoordinate_spacing_ModelToView(XX,YY,ZZ);
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         // EED 3 oct 2006
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 // EED 3 oct 2006
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         /*if (_contourVtkActor!=NULL){
00373                 _wxvtkbaseview->GetRenderer()->RemoveActor( _contourVtkActor );
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) // virtual
00384 {
00385         int size=_lstViewPoints.size();
00386         if ( (id>=0) && (id<size) ){
00387                 manualViewPoint         *mvp    =_lstViewPoints[id];
00388 //EED ups1
00389 //              _handlePicker->DeletePickList(mvp->GetVtkActor());
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         // ToDo
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)  // virtual
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) // virtual
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         // ToDo
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()  // Virtual
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() // virtual
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()  // virtual
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) // virtual
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 //JSTG 25-02-08 ---------------------------------------------------------------
00724 /*int manualViewBaseContour::GetNumberOfPointsSpline()
00725 {
00726         return _sizePointsContour;
00727 }*/
00728 //----------------------------------------------------------------------------
00729 
00730 //JSTG 25-02-08 ---------------------------------------------------------------
00731 /*void manualViewBaseContour::SetNumberOfPointsSpline(int size)
00732 {
00733         _sizePointsContour = size;
00734 }*/
00735 //----------------------------------------------------------------------------
00736 // virtual
00737 void manualViewBaseContour::TransfromCoordViewWorld(double &X, double &Y, double &Z, int type)  // Virtual
00738 {
00739         _wxvtkbaseview->TransFromCoordScreenToWorld(X, Y, Z,false, type);
00740 
00741 
00742 //EED 27 sep 2007
00743 //   //EEDx6
00744 //      wxVtk2DBaseView *wxvtk2Dbaseview = (wxVtk2DBaseView*)_wxvtkbaseview;
00745 //      wxvtk2Dbaseview->TransformCoordinate_spacing_ModelToView(X,Y,Z);
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 //      _Z=z;
00762 }
00763 // ----------------------------------------------------------------------------
00764 int     manualViewBaseContour::GetZ()
00765 {
00766 //      return _Z;
00767         return 0;
00768 }
00769 // ----------------------------------------------------------------------------
00770 void manualViewBaseContour::InitMove(int x, int y, int z) // virtual
00771 {
00772 
00773 }
00774 // ----------------------------------------------------------------------------
00775 void manualViewBaseContour::MoveContour(int x, int y, int z) // virtual
00776 {
00777 }
00778 // ----------------------------------------------------------------------------
00779 void manualViewBaseContour::MoveContour(int horizontalUnits, int verticalUnits )// virtual
00780 {
00781 
00782 }
00783 // ----------------------------------------------------------------------------
00784 void manualViewBaseContour::GetMinMax( double &minX,double &minY, double &minZ, double &maxX, double &maxY, double &maxZ )// virtual
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                 // min X
00809                 if (pp[0]<minX)
00810                 {
00811                         minX=pp[0];
00812                 }
00813                 //min Y
00814                 if (pp[1]<minY)
00815                 {
00816                         minY=pp[1];
00817                 }
00818                 //max X
00819                 if (pp[0]>maxX)
00820                 {
00821                         maxX=pp[0];
00822                 }
00823                 // max Y
00824                 if (pp[1]>maxY)
00825                 {
00826                         maxY=pp[1];
00827                 }
00828                 if ( ifFindZ )
00829                 {
00830                         // min Z
00831                         if (pp[2]<minZ)
00832                         {
00833                                 minZ=pp[2];
00834                         }
00835                         // max Z
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 }

Generated on 20 Oct 2010 for creaMaracasVisu_lib by  doxygen 1.6.1