]> Creatis software - crea.git/blobdiff - src/creawxVTKRenderWindowInteractor.mm
#3389 Stuck Render macOS
[crea.git] / src / creawxVTKRenderWindowInteractor.mm
index 6bc66c2f2df9f15d6c850d60dd77f9d99c83e92a..4f63d149db47ddebd16e61c7adf75752cad4cd24 100644 (file)
@@ -44,7 +44,6 @@
 =========================================================================*/
 
 
-
 #include <assert.h>
 
 #include "creawxVTKRenderWindowInteractor.h"
 #endif
 
 
+#ifdef VTK_USE_TDX
+// #import "vtkTDxMacDevice.h"
+#import "/Users/davila/Creatis/C11/tpli/include/vtk-8.2/vtkTDxMacDevice.h"
+#endif
+
+
 //=======================================================================
 // LG : NAMESPACE IS NECESSARY TO AVOID CONFLICTING SYMBOLS IN DYN LIBS
 namespace crea
@@ -270,6 +275,12 @@ wxVTKRenderWindowInteractor::wxVTKRenderWindowInteractor()
   this->RenderWindow = NULL;
   this->SetRenderWindow(vtkRenderWindow::New());
   this->RenderWindow->Delete();
+    
+#ifdef VTK_USE_TDX
+    this->Device=vtkTDxMacDevice::New();
+#endif
+
+    
 }
 //---------------------------------------------------------------------------
 wxVTKRenderWindowInteractor::wxVTKRenderWindowInteractor(wxWindow *parent,
@@ -310,6 +321,13 @@ wxVTKRenderWindowInteractor::wxVTKRenderWindowInteractor(wxWindow *parent,
   // so we update the size information of the interactor/renderwindow here
   this->UpdateSize(size.x, size.y);
 #endif
+    
+
+#ifdef VTK_USE_TDX
+    this->Device=vtkTDxMacDevice::New();
+#endif
+
+    
 }
 //---------------------------------------------------------------------------
 wxVTKRenderWindowInteractor::~wxVTKRenderWindowInteractor()
@@ -319,6 +337,11 @@ wxVTKRenderWindowInteractor::~wxVTKRenderWindowInteractor()
 #if defined(__WXGTK__) && defined(USE_WXGLCANVAS)
   delete this->context;
 #endif
+    
+#ifdef VTK_USE_TDX
+  this->Device->Delete();
+#endif
+
 }
 //---------------------------------------------------------------------------
 wxVTKRenderWindowInteractor * wxVTKRenderWindowInteractor::New()
@@ -353,11 +376,34 @@ void wxVTKRenderWindowInteractor::Enable()
 #if defined(__WXGTK__) && defined(USE_WXGLCANVAS)
   wxGLCanvas::SetCurrent(*this->context);
 #endif
+
+//EED 2010-10-14
+#ifdef VTK_USE_TDX
+  if(this->UseTDx)
+  {
+    this->Device->SetInteractor(this);
+    this->Device->Initialize();
+  }
+#endif
+
+    
+    
   Modified();
 }
 //---------------------------------------------------------------------------
 bool wxVTKRenderWindowInteractor::Enable(bool enable)
 {
+    
+#ifdef VTK_USE_TDX
+  if(this->UseTDx)
+  {
+    this->Device->SetInteractor(this);
+    this->Device->Initialize();
+  }
+#endif
+
+    
+    
 #if defined(__WXGTK__) && defined(USE_WXGLCANVAS)
   return wxGLCanvas::Enable(enable);
 #else
@@ -371,6 +417,14 @@ void wxVTKRenderWindowInteractor::Disable()
   if (!Enabled)
     return;
 
+#ifdef VTK_USE_TDX
+  if(this->Device->GetInitialized())
+  {
+    this->Device->Close();
+  }
+#endif
+    
+    
   // that's it (we can't remove the event handler like it should be...)
   Enabled = 0;
   Modified();
@@ -385,6 +439,7 @@ void wxVTKRenderWindowInteractor::Start()
 //---------------------------------------------------------------------------
 void wxVTKRenderWindowInteractor::UpdateSize(int x, int y)
 {
+//printf("EED wxVTKRenderWindowInteractor::UpdateSize Start\n");
   if( RenderWindow )
   {
     // if the size changed tell render window
@@ -408,6 +463,7 @@ void wxVTKRenderWindowInteractor::UpdateSize(int x, int y)
 #endif //__WXMSW__
     } // if x y
   } // if RenderWindow
+printf("EED wxVTKRenderWindowInteractor::UpdateSize End\n");
 }
 //---------------------------------------------------------------------------
 int wxVTKRenderWindowInteractor::CreateTimer(int WXUNUSED(timertype))
@@ -511,6 +567,8 @@ long wxVTKRenderWindowInteractor::GetHandleHack()
 //---------------------------------------------------------------------------
 void wxVTKRenderWindowInteractor::OnPaint(wxPaintEvent& WXUNUSED(event))
 {
+printf("EED wxVTKRenderWindowInteractor::OnPaint Start\n");
+
   //must always be here
 //EED2021-08-26  
 #ifdef __WXCOCOA__
@@ -575,6 +633,8 @@ void wxVTKRenderWindowInteractor::OnPaint(wxPaintEvent& WXUNUSED(event))
   }
 #endif
 #endif
+    
+printf("EED wxVTKRenderWindowInteractor::OnPaint End\n");
 }
 //---------------------------------------------------------------------------
 void wxVTKRenderWindowInteractor::OnEraseBackground(wxEraseEvent &event)
@@ -691,7 +751,8 @@ void wxVTKRenderWindowInteractor::OnKeyDown(wxKeyEvent &event)
 //---------------------------------------------------------------------------
 void wxVTKRenderWindowInteractor::OnKeyUp(wxKeyEvent &event)
 {
-  if (!Enabled) 
+printf("EED wxVTKRenderWindowInteractor::OnKeyUp Start\n");
+  if (!Enabled)
     {
     return;
     }
@@ -717,11 +778,13 @@ void wxVTKRenderWindowInteractor::OnKeyUp(wxKeyEvent &event)
     event.GetKeyCode(), 1);
 #endif
   event.Skip();
+printf("EED wxVTKRenderWindowInteractor::OnKeyUp End\n");
 }
 #endif //!(VTK_MAJOR_VERSION == 3 && VTK_MINOR_VERSION == 1)
  //---------------------------------------------------------------------------
 void wxVTKRenderWindowInteractor::OnChar(wxKeyEvent &event)
 {
+printf("EED wxVTKRenderWindowInteractor::OnKeyUp Start\n");
   if (!Enabled) 
     {
     return;
@@ -745,10 +808,12 @@ void wxVTKRenderWindowInteractor::OnChar(wxKeyEvent &event)
   InvokeEvent(vtkCommand::CharEvent, NULL);
 #endif
   event.Skip();
+printf("EED wxVTKRenderWindowInteractor::OnKeyUp End\n");
 }
 //---------------------------------------------------------------------------
 void wxVTKRenderWindowInteractor::OnButtonDown(wxMouseEvent &event)
 {
+printf("EED wxVTKRenderWindowInteractor::OnButtonDown Start\n");
   if (!Enabled || (ActiveButton != wxEVT_NULL))
     {
     return;
@@ -807,10 +872,12 @@ void wxVTKRenderWindowInteractor::OnButtonDown(wxMouseEvent &event)
   {
     CaptureMouse();
   }
+printf("EED wxVTKRenderWindowInteractor::OnButtonDown End\n");
 }
 //---------------------------------------------------------------------------
 void wxVTKRenderWindowInteractor::OnButtonUp(wxMouseEvent &event)
 {
+printf("EED wxVTKRenderWindowInteractor::OnButtonDown Start\n");
   //EVT_xxx_DOWN == EVT_xxx_UP - 1
   //This is only needed if two mouse buttons are pressed at the same time.
   //In wxWindows 2.4 and later: better use of wxMOUSE_BTN_RIGHT or 
@@ -867,10 +934,12 @@ void wxVTKRenderWindowInteractor::OnButtonUp(wxMouseEvent &event)
     ReleaseMouse();
   }
   ActiveButton = wxEVT_NULL;
+printf("EED wxVTKRenderWindowInteractor::OnButtonDown End\n");
 }
 //---------------------------------------------------------------------------
 void wxVTKRenderWindowInteractor::OnMouseWheel(wxMouseEvent& event)
 {
+printf("EED wxVTKRenderWindowInteractor::OnMouseWheel Start\n");
 // Mouse wheel was only added after VTK 4.4 (I think...)
 #if VTK_MAJOR_VERSION > 4 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 4)
   // new style
@@ -889,7 +958,8 @@ void wxVTKRenderWindowInteractor::OnMouseWheel(wxMouseEvent& event)
       InvokeEvent(vtkCommand::MouseWheelBackwardEvent, NULL);
     }
 #endif
-    
+    printf("EED wxVTKRenderWindowInteractor::OnMouseWheel End\n");
+
 }
 
 //---------------------------------------------------------------------------
@@ -912,6 +982,7 @@ void wxVTKRenderWindowInteractor::OnMouseCaptureLost(wxMouseCaptureLostEvent& ev
 //---------------------------------------------------------------------------
 void wxVTKRenderWindowInteractor::Render()
 {
+printf("EED wxVTKRenderWindowInteractor::Render Start\n");
 #if wxCHECK_VERSION(2, 8, 0)
   int renderAllowed = !IsFrozen();
 #else
@@ -928,7 +999,7 @@ void wxVTKRenderWindowInteractor::Render()
       //if it's not enabeld, renderAllowed will be false
       renderAllowed = topParent->IsEnabled();
       }
-    }
+    } // if renderAllowed && !RenderWhenDisabled
 
   if (renderAllowed)
     {
@@ -951,8 +1022,8 @@ void wxVTKRenderWindowInteractor::Render()
       RenderWindow->Render();
       }
 #endif
-
-    }
+    } // if renderAllowed
+printf("EED wxVTKRenderWindowInteractor::Render Start\n");
 }
 //---------------------------------------------------------------------------
 void wxVTKRenderWindowInteractor::SetRenderWhenDisabled(int newValue)