vtkInteractorStyleBaseView.cxx

Go to the documentation of this file.
00001 #include "vtkInteractorStyleBaseView.h"
00002 
00003 #include "wxVtk3DBaseView.h"
00004 #include "wxVtk2DBaseView.h"
00005 
00006 #include "vtkObjectFactory.h"
00007 
00008 #include "InteractorStyleMaracas.h"
00009 
00010 vtkStandardNewMacro(vtkInteractorStyleBaseView);
00011 //---------------------------------------------------------------------------
00012 //---------------------------------------------------------------------------
00013 //---------------------------------------------------------------------------
00014 
00015 vtkInteractorStyleBaseView::vtkInteractorStyleBaseView()
00016 {
00017         _refresh_waiting                = false;
00018         _parent_refresh_waiting = false;
00019         _blockRefresh                   = false;
00020 }
00021 //---------------------------------------------------------------------------
00022 vtkInteractorStyleBaseView::~vtkInteractorStyleBaseView()
00023 {
00024 }
00025 //---------------------------------------------------------------------------
00026 void vtkInteractorStyleBaseView::OnMouseMove() // virtual 
00027 {
00028         CallLstInteractorStyleMaracas(3);
00029 }
00030 //---------------------------------------------------------------------------
00031 void vtkInteractorStyleBaseView::OnLeftButtonDown()  // virtual 
00032 {
00033         CallLstInteractorStyleMaracas(4);
00034 }
00035 //---------------------------------------------------------------------------
00036 void vtkInteractorStyleBaseView::OnLeftButtonUp() // virtual 
00037 {
00038         CallLstInteractorStyleMaracas(5);
00039 }
00040 
00041 //---------------------------------------------------------------------------
00042 void vtkInteractorStyleBaseView::OnLeftDClick()  // virtual
00043 {
00044         CallLstInteractorStyleMaracas( 11 );
00045 }
00046 
00047 //---------------------------------------------------------------------------
00048 void vtkInteractorStyleBaseView::OnMiddleButtonDown()  // virtual 
00049 {
00050         CallLstInteractorStyleMaracas(6);
00051 }
00052 //---------------------------------------------------------------------------
00053 void vtkInteractorStyleBaseView::OnMiddleButtonUp() // virtual 
00054 {
00055         CallLstInteractorStyleMaracas(7);
00056 }
00057 //---------------------------------------------------------------------------
00058 void vtkInteractorStyleBaseView::OnMiddleDClick()  // virtual
00059 {
00060         CallLstInteractorStyleMaracas( 13 );
00061 }
00062 
00063 //---------------------------------------------------------------------------
00064 void vtkInteractorStyleBaseView::OnRightButtonDown() // virtual 
00065 {
00066         CallLstInteractorStyleMaracas(1);
00067 }
00068 //---------------------------------------------------------------------------
00069 void vtkInteractorStyleBaseView::OnRightButtonUp() // virtual 
00070 {
00071         CallLstInteractorStyleMaracas(2);
00072 }
00073 //---------------------------------------------------------------------------
00074 void vtkInteractorStyleBaseView::OnRightDClick()  // virtual
00075 {
00076         CallLstInteractorStyleMaracas( 12 );
00077 }
00078 //---------------------------------------------------------------------------
00079 void vtkInteractorStyleBaseView::OnMouseWheel()  // virtual
00080 {
00081         CallLstInteractorStyleMaracas( 14 );
00082 }
00083 //---------------------------------------------------------------------------
00084 void vtkInteractorStyleBaseView::AddInteractorStyleMaracas(InteractorStyleMaracas* interactorStyleMaracas)
00085 {
00086         interactorStyleMaracas->SetVtkInteractorStyleBaseView(this);
00087         _lstInteractorStyleMaracas.push_back(interactorStyleMaracas);
00088 }
00089 //---------------------------------------------------------------------------
00090 void  vtkInteractorStyleBaseView::RemoveInteractorStyleMaracas(InteractorStyleMaracas* interactorStyleMaracas)
00091 {
00092         interactorStyleMaracas->RemoveVtkInteractorStyleBaseView();
00093         int i, size = _lstInteractorStyleMaracas.size();
00094         std::vector< InteractorStyleMaracas* >::iterator iter = _lstInteractorStyleMaracas.begin();
00095         bool removed = false;
00096         for (i=0; !removed && i<size; i++)
00097         {
00098                 if ( _lstInteractorStyleMaracas[i] == interactorStyleMaracas )
00099                 {
00100                         _lstInteractorStyleMaracas.erase(iter);
00101                         removed = true;
00102                 } else {
00103                   iter++;
00104                 }
00105         }               
00106 }
00107 //---------------------------------------------------------------------------
00108 void vtkInteractorStyleBaseView::InsertInteractorStyleMaracas(int pos, InteractorStyleMaracas* interactorStyleMaracas)
00109 {
00110         interactorStyleMaracas->SetVtkInteractorStyleBaseView(this);
00111         _lstInteractorStyleMaracas.insert(_lstInteractorStyleMaracas.begin()+pos,interactorStyleMaracas);
00112 }
00113 //---------------------------------------------------------------------------
00114 void vtkInteractorStyleBaseView::CallLstInteractorStyleMaracas(int type)
00115 {
00116 
00117         InteractorStyleMaracas *intStyMar;
00118 
00119         int i,size=_lstInteractorStyleMaracas.size();
00120 
00121 //EED Borrame
00122 //FILE *ff = fopen("c:/temp/wxVtkBaseView_SceneManagerStadistics.txt","a+");
00123 //fprintf(ff,"EED vtkInteractorStyleBaseView::CallLstInteractorStyleMaracas \n" );
00124 //for (i=0;i<size;i++)
00125 //{
00126 //fprintf(ff,"    %p\n" , _lstInteractorStyleMaracas[i] );
00127 //}
00128 //fclose(ff);
00129 
00130 
00131 
00132         for (i=0;i<size;i++)
00133         {
00134                 if (i < (int)_lstInteractorStyleMaracas.size() )
00135                 {
00136                         intStyMar = _lstInteractorStyleMaracas[i];
00137                 } else {
00138                         intStyMar=NULL;
00139                 }
00140                 if (intStyMar!=NULL && intStyMar->GetActive()==true){
00141                         if (type ==1)
00142                         {  // OnRightButtonDown
00143                                 if (intStyMar->OnRightButtonDown()==false)
00144                                 {
00145                                         i=size;
00146                                 }
00147                         }
00148                         if (type ==2)
00149                         {  // OnRightButtonUp
00150                                 if (intStyMar->OnRightButtonUp()==false)
00151                                 {
00152                                         i=size;
00153                                 }
00154                         }
00155                         if (type==3)
00156                         {  // OnMouseMouve
00157                                 if (intStyMar->OnMouseMove()==false)
00158                                 {
00159                                         i=size;
00160                                 }
00161                         }
00162                         if (type==4)
00163                         {  // OnLeftButtonDown
00164                                 if (intStyMar->OnLeftButtonDown()==false)
00165                                 {
00166                                         i=size;
00167                                 }
00168                         }
00169                         if (type==5)
00170                         {  // OnLeftButtonUp
00171                                 if (intStyMar->OnLeftButtonUp()==false)
00172                                 {
00173                                         i=size;
00174                                 }
00175                         }
00176                         if (type==6)
00177                         {  // OnMiddleButtonDown
00178                                 if (intStyMar->OnMiddleButtonDown()==false)
00179                                 {
00180                                         i=size;
00181                                 }
00182                         }
00183                         if (type==7)
00184                         {  // OnMiddleButtonUp
00185                                 if (intStyMar->OnMiddleButtonUp()==false)
00186                                 {
00187                                         i=size;
00188                                 }
00189                         }
00190                         if (type==10)
00191                         {  // OnMiddleButtonUp
00192                                 if (intStyMar->OnChar()==false)
00193                                 {
00194                                         i=size;
00195                                 }
00196                         }
00197                         if (type==11)
00198                         {  // OnLeftDClick
00199                                 if (intStyMar->OnLeftDClick()==false)
00200                                 {
00201                                         i=size;
00202                                 }
00203                         }
00204                         if (type==12)
00205                         {  // OnRightDClick
00206                                 if (intStyMar->OnRightDClick()==false)
00207                                 {
00208                                         i=size;
00209                                 }
00210                         }
00211                         if (type==13)
00212                         {  // OnMiddleDClick
00213                                 if (intStyMar-> OnMiddleDClick()==false)
00214                                 {
00215                                         i=size;
00216                                 }
00217                         }
00218                         if (type==14)
00219                         {  // OnMouseWheel
00220                                 if (intStyMar->OnMouseWheel()==false)
00221                                 {
00222                                         i=size;
00223                                 }
00224                         }
00225                 } // if active
00226         } // for
00227 
00228         EvaluateToRefresh();
00229 }
00230 //---------------------------------------------------------------------------
00231 void  vtkInteractorStyleBaseView::OnChar()  // virtual 
00232 {    
00233 //      char a=GetInteractor()->GetKeyCode();
00234         CallLstInteractorStyleMaracas(10);
00235 }
00236 //---------------------------------------------------------------------------
00237 void vtkInteractorStyleBaseView::TransformCoordinate(double &X, double &Y, double &Z)
00238 {
00239         if(((wxVtk2DBaseView*)GetWxVtk2DBaseView())->_imageViewer2XYZ){
00240                 vtkImageViewer2 *imageViewer = ((wxVtk2DBaseView*)GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2();
00241 
00242                 imageViewer->GetRenderer()->SetDisplayPoint((int)X, (int)Y, (int)Z);
00243                 imageViewer->GetRenderer()->DisplayToWorld();
00244                 double fP[4];
00245                 imageViewer->GetRenderer()->GetWorldPoint( fP );
00246 
00247                 if ( fP[3] ){
00248                         fP[0] /= fP[3];
00249                         fP[1] /= fP[3];
00250                         fP[2] /= fP[3];
00251                 }
00252 
00253         // EEDx5
00254                 ((wxVtk2DBaseView*)GetWxVtk2DBaseView())->TransformCoordinate_spacing_ViewToModel(fP[0],fP[1],fP[2]);
00255 
00256                 X=fP[0];
00257                 Y=fP[1];
00258                 Z=fP[2];
00259         }
00260 }
00261 //---------------------------------------------------------------------------
00262 void vtkInteractorStyleBaseView::SetwxVtkBaseView(wxVtkBaseView *wxvtkbaseview)
00263 {
00264         _wxvtkbaseview = wxvtkbaseview;
00265 }
00266 //---------------------------------------------------------------------------
00267 /*JCP 13/05/2009
00268 wxVtk2DBaseView* vtkInteractorStyleBaseView::GetWxVtk2DBaseView()
00269 {
00270         return (wxVtk2DBaseView*)_wxvtkbaseview;
00271 }
00272 //---------------------------------------------------------------------------
00273 wxVtk3DBaseView* vtkInteractorStyleBaseView::GetWxVtk3DBaseView()
00274 {
00275         return (wxVtk3DBaseView*)_wxvtkbaseview;
00276 }JCP 13/05/2009*/
00277 wxVtkBaseView* vtkInteractorStyleBaseView::GetWxVtk2DBaseView()
00278 {
00279         return _wxvtkbaseview;
00280 }
00281 //---------------------------------------------------------------------------
00282 wxVtkBaseView* vtkInteractorStyleBaseView::GetWxVtk3DBaseView()
00283 {
00284         return _wxvtkbaseview;
00285 }
00286 //---------------------------------------------------------------------------
00287 void vtkInteractorStyleBaseView::SetActiveAllInteractors(bool ok)
00288 {
00289         InteractorStyleMaracas *intStyMar;
00290         int i,size=_lstInteractorStyleMaracas.size();
00291         for (i=0;i<size;i++)
00292         {
00293                 intStyMar = _lstInteractorStyleMaracas[i];
00294                 intStyMar->SetActive(ok);
00295         }
00296 
00297 }
00298 //---------------------------------------------------------------------------
00299 void vtkInteractorStyleBaseView::SetRefresh_waiting()
00300 {
00301         _refresh_waiting=true;
00302 }
00303 //---------------------------------------------------------------------------
00304 bool vtkInteractorStyleBaseView::GetRefresh_waiting()
00305 {
00306         return _refresh_waiting;
00307 }
00308 //---------------------------------------------------------------------------
00309 void vtkInteractorStyleBaseView::SetParent_refresh_waiting()
00310 {
00311         _parent_refresh_waiting=true;
00312 }
00313 //---------------------------------------------------------------------------
00314 bool vtkInteractorStyleBaseView::GetParent_refresh_waiting()
00315 {
00316         return _parent_refresh_waiting;
00317 }
00318 //---------------------------------------------------------------------------
00319 void vtkInteractorStyleBaseView::EvaluateToRefresh()
00320 {
00321 
00322         if  ( _blockRefresh==false )
00323         {
00324                 if ( (_refresh_waiting==true) && (_parent_refresh_waiting==false))
00325                 {
00326                         _refresh_waiting                = false;
00327                         this->_wxvtkbaseview->Refresh();
00328                 }
00329                 if (_parent_refresh_waiting==true)
00330                 {
00331                         _parent_refresh_waiting = false;
00332                         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
00333 //CPR 13/01/2010
00334                         this->_wxvtkbaseview->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
00335                         int i;
00336                         int size = _lstParentToReport.size();
00337                         for(i = 0; i<size; i++)
00338                         {       
00339                                 _lstParentToReport[i]->ProcessEvent(newevent1);
00340                         }//for
00341                 }//if
00342         }//if _blockRefresh
00343 }
00344 //---------------------------------------------------------------------------
00345 void vtkInteractorStyleBaseView::BlockRefresh()
00346 {
00347         _blockRefresh=true;
00348 }
00349 //---------------------------------------------------------------------------
00350 void vtkInteractorStyleBaseView::UnBlockRefresh()
00351 {
00352         _blockRefresh=false;
00353 }
00354 
00355 wxEvtHandler* vtkInteractorStyleBaseView::GetParentToReport(int i)
00356 {
00357         wxEvtHandler* parentToReport = NULL;
00358         if(i>=0 && i<_lstParentToReport.size())
00359         {       
00360                 parentToReport = _lstParentToReport[i];
00361         }
00362         return parentToReport;
00363 
00364 }
00365 
00366 void vtkInteractorStyleBaseView::AddParentToReport(wxEvtHandler* parentToReport)
00367 {
00368         _lstParentToReport.push_back(parentToReport);
00369 }

Generated on 20 Oct 2010 for creaMaracasVisu_lib by  doxygen 1.6.1