]> Creatis software - crea.git/blobdiff - src/creawxVTKRenderWindowInteractor.mm
3388 TDx
[crea.git] / src / creawxVTKRenderWindowInteractor.mm
index aa05b20a639bd87ae2900ca6cad674bd7e2bec52..578c3a36ac4a925008d8b224af635a1928211fed 100644 (file)
@@ -43,7 +43,7 @@
 
 =========================================================================*/
 
-#import <Cocoa/Cocoa.h>
+
 
 #include <assert.h>
 
@@ -63,7 +63,8 @@
 
 // AKT: wxOSX 2.9.x defines __WXOSX_COCOA__ rather than __WXCOCOA__
 #ifdef __WXOSX_COCOA__
-#define __WXCOCOA__
+   #import <Cocoa/Cocoa.h>
+   #define __WXCOCOA__
 #endif
 
 #if defined(__WXMAC__) && wxCHECK_VERSION(2,9,0)
 #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
@@ -102,7 +109,6 @@ wxWindow* wxGetTopLevelParent(wxWindow *win)
 // To access objc calls on cocoa
 #ifdef __WXCOCOA__
 #ifdef VTK_USE_COCOA
-//EED #import <Cocoa/Cocoa.h>
 // This trick is no longer need in VTK CVS, should get rid of that:
 #define id Id
 #else
@@ -111,7 +117,6 @@ wxWindow* wxGetTopLevelParent(wxWindow *win)
 #endif //__WXCOCOA__
 
 #if wxMAJOR_VERSION <= 2
-
        #ifdef __WXGTK__
         #include <gdk/gdkx.h> // GDK_WINDOW_XWINDOW is found here in wxWidgets 2.8.0
         #include "gdk/gdkprivate.h"
@@ -271,6 +276,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,
@@ -311,6 +322,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()
@@ -320,6 +338,11 @@ wxVTKRenderWindowInteractor::~wxVTKRenderWindowInteractor()
 #if defined(__WXGTK__) && defined(USE_WXGLCANVAS)
   delete this->context;
 #endif
+    
+#ifdef VTK_USE_TDX
+  this->Device->Delete();
+#endif
+
 }
 //---------------------------------------------------------------------------
 wxVTKRenderWindowInteractor * wxVTKRenderWindowInteractor::New()
@@ -354,11 +377,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
@@ -372,6 +418,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();
@@ -395,12 +449,20 @@ void wxVTKRenderWindowInteractor::UpdateSize(int x, int y)
       Size[0] = x;
       Size[1] = y;
       // and our RenderWindow's size
+
+#ifdef __WXCOCOA__
+  #ifdef VTK_USE_COCOA
+  #else
+  #endif //VTK_USE_COCOA
+#else
       RenderWindow->SetSize(x, y);
+#endif //__WXCOCOA__
+      
 #if defined(__WXMSW__)
       this->Refresh();
 #endif //__WXMSW__
-    }
-  }
+    } // if x y
+  } // if RenderWindow
 }
 //---------------------------------------------------------------------------
 int wxVTKRenderWindowInteractor::CreateTimer(int WXUNUSED(timertype))
@@ -467,7 +529,6 @@ void wxVTKRenderWindowInteractor::OnTimer(wxTimerEvent& WXUNUSED(event))
 // in wxPython/src/helpers.cpp
 long wxVTKRenderWindowInteractor::GetHandleHack()
 {
-printf("EED  wxVTKRenderWindowInteractor::GetHandleHack start \n");
   //helper function to hide the MSW vs GTK stuff
   long handle_tmp = 0;
 
@@ -493,8 +554,6 @@ printf("EED  wxVTKRenderWindowInteractor::GetHandleHack start \n");
 
     // Find and return the actual X-Window.
 #if defined(__WXGTK__) || defined(__WXX11__)
-printf("EED  wxVTKRenderWindowInteractor::GetHandleHack End AAA handle_tmp %ld \n", handle_tmp);
-printf("EED  wxVTKRenderWindowInteractor::GetHandleHack End AAA handle_tmp %ld \n",  (long)GetXWindow(this));
     return (long)GetXWindow(this);
 #endif
 
@@ -502,45 +561,37 @@ printf("EED  wxVTKRenderWindowInteractor::GetHandleHack End AAA handle_tmp %ld \
 //    handle_tmp = (long)this->GetXWindow();
 //#endif
 
-printf("EED  wxVTKRenderWindowInteractor::GetHandleHack End BBB handle_tmp %ld \n", handle_tmp);
   return handle_tmp;
 }
 //---------------------------------------------------------------------------
 void wxVTKRenderWindowInteractor::OnPaint(wxPaintEvent& WXUNUSED(event))
 {
-
-printf("EED  wxVTKRenderWindowInteractor::OnPaint Start \n");
   //must always be here
-//EED2021-08-26  wxPaintDC pDC(this);
-
-printf("EED  wxVTKRenderWindowInteractor::OnPaint 1 \n");
+//EED2021-08-26  
+#ifdef __WXCOCOA__
+#else
+       wxPaintDC pDC(this);
+#endif
 
   //do it here rather than in the cstor: this is safer.
   if(!Handle)
   {
-printf("EED  wxVTKRenderWindowInteractor::OnPaint 2 \n");
     Handle = GetHandleHack();
        
 #ifdef __WXCOCOA__
-printf("EED  wxVTKRenderWindowInteractor::OnPaint 3 \n");
        vtkCocoaRenderWindow    *rwin           = vtkCocoaRenderWindow::SafeDownCast(RenderWindow);
     NSView                                     *nvsview        = (NSView* )Handle;
        NSWindow                                *nswindow       = nvsview.window;
     rwin->SetRootWindow( nswindow );
     rwin->SetWindowId(  reinterpret_cast<void *>(nvsview) );
 #else  
-printf("EED  wxVTKRenderWindowInteractor::OnPaint 4 \n");
     RenderWindow->SetWindowId(reinterpret_cast<void *>(Handle));
 #endif
-
-               
-printf("EED  wxVTKRenderWindowInteractor::OnPaint 5 \n");
        
 // Cocoa
 // this->GetNSView() <-> DisplayId
 // this->GetTopLevel()->GetNSWindow() <-> WindowId
 #ifdef __WXMSW__
-printf("EED  wxVTKRenderWindowInteractor::OnPaint 6 \n");
     RenderWindow->SetParentId(reinterpret_cast<void *>(this->GetParent()->GetHWND()));
 #endif //__WXMSW__
       
@@ -555,45 +606,30 @@ printf("EED  wxVTKRenderWindowInteractor::OnPaint 6 \n");
     #endif
   }
   // get vtk to render to the wxWindows
-
-printf("EED  wxVTKRenderWindowInteractor::OnPaint 7 \n");
-
   Render();
 #ifdef __WXMAC__
-printf("EED  wxVTKRenderWindowInteractor::OnPaint 8 \n");
   // This solves a problem with repainting after a window resize
   // See also: http://sourceforge.net/mailarchive/forum.php?thread_id=31690967&forum_id=41789
 #ifdef __WXCOCOA__
-printf("EED  wxVTKRenderWindowInteractor::OnPaint 9 \n");
   #if !wxCHECK_VERSION(2, 9, 0)
     // this doesn't seem necessary with wxOSX 2.9.x
-printf("EED  wxVTKRenderWindowInteractor::OnPaint 10 \n");
     vtkCocoaRenderWindow * rwin = vtkCocoaRenderWindow::SafeDownCast(RenderWindow);
     if( rwin )
     {
-printf("EED  wxVTKRenderWindowInteractor::OnPaint 11 \n");
       rwin->UpdateContext();
     }
   #endif
 #else
-printf("EED  wxVTKRenderWindowInteractor::OnPaint 12 \n");
   vtkCarbonRenderWindow* rwin = vtkCarbonRenderWindow::SafeDownCast(RenderWindow);
   if( rwin )
   {
-printf("EED  wxVTKRenderWindowInteractor::OnPaint 13 \n");
 #if VTK_MAJOR_VERSION > 4 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 4)
     // Must be somewhere after VTK 4.4
-printf("EED  wxVTKRenderWindowInteractor::OnPaint 14 \n");
     rwin->UpdateGLRegion();
 #endif
   }
 #endif
 #endif
-
-printf("EED  wxVTKRenderWindowInteractor::OnPaint 15 \n");
-
-printf("EED  wxVTKRenderWindowInteractor::OnPaint End \n");
-
 }
 //---------------------------------------------------------------------------
 void wxVTKRenderWindowInteractor::OnEraseBackground(wxEraseEvent &event)
@@ -931,7 +967,6 @@ void wxVTKRenderWindowInteractor::OnMouseCaptureLost(wxMouseCaptureLostEvent& ev
 //---------------------------------------------------------------------------
 void wxVTKRenderWindowInteractor::Render()
 {
-printf("EED wxVTKRenderWindowInteractor::Render Start \n");
 #if wxCHECK_VERSION(2, 8, 0)
   int renderAllowed = !IsFrozen();
 #else
@@ -957,9 +992,7 @@ printf("EED wxVTKRenderWindowInteractor::Render Start \n");
 #endif
     if(Handle && (Handle == GetHandleHack()) )
       {
-printf("EED wxVTKRenderWindowInteractor::Render 1 \n");
       RenderWindow->Render();
-printf("EED wxVTKRenderWindowInteractor::Render 2 \n");
       }
 #if VTK_MAJOR_VERSION > 4 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 2)
     else if(GetHandleHack())
@@ -974,8 +1007,6 @@ printf("EED wxVTKRenderWindowInteractor::Render 2 \n");
       }
 #endif
 
-printf("EED wxVTKRenderWindowInteractor::Render End \n");
-
     }
 }
 //---------------------------------------------------------------------------