X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=src%2FcreawxVTKRenderWindowInteractor.mm;h=33f4e84002409d8f58ae5eb0f438765da9699652;hb=refs%2Fheads%2Fvtk9itk5wx3-macos;hp=6bc66c2f2df9f15d6c850d60dd77f9d99c83e92a;hpb=0ec2144d3569d045ee5dfe886e3db723f400225a;p=crea.git diff --git a/src/creawxVTKRenderWindowInteractor.mm b/src/creawxVTKRenderWindowInteractor.mm index 6bc66c2..33f4e84 100644 --- a/src/creawxVTKRenderWindowInteractor.mm +++ b/src/creawxVTKRenderWindowInteractor.mm @@ -44,7 +44,6 @@ =========================================================================*/ - #include #include "creawxVTKRenderWindowInteractor.h" @@ -54,6 +53,7 @@ # include "vtkVersion.h" #endif + #if VTK_MAJOR_VERSION > 4 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0) # include "vtkCommand.h" #else @@ -81,6 +81,11 @@ #endif +#ifdef VTK_USE_TDX +#import "vtkTDxMacDevice.h" +#endif + + //======================================================================= // LG : NAMESPACE IS NECESSARY TO AVOID CONFLICTING SYMBOLS IN DYN LIBS namespace crea @@ -102,12 +107,16 @@ wxWindow* wxGetTopLevelParent(wxWindow *win) // To access objc calls on cocoa #ifdef __WXCOCOA__ -#ifdef VTK_USE_COCOA -// This trick is no longer need in VTK CVS, should get rid of that: + #define id Id -#else -#error Build mismatch you need both wxWidgets and VTK to be configure against Cocoa to work -#endif //VTK_USE_COCOA + +// #ifdef VTK_USE_COCOA +// // This trick is no longer need in VTK CVS, should get rid of that: +// #define id Id +// #else +// #error Build mismatch you need both wxWidgets and VTK to be configure against Cocoa to work +// #endif //VTK_USE_COCOA + #endif //__WXCOCOA__ #if wxMAJOR_VERSION <= 2 @@ -261,6 +270,7 @@ wxVTKRenderWindowInteractor::wxVTKRenderWindowInteractor() , RenderWhenDisabled(1) , UseCaptureMouse(0) { + #ifdef VTK_DEBUG_LEAKS vtkDebugLeaks::ConstructClass("wxVTKRenderWindowInteractor"); #endif @@ -270,6 +280,11 @@ 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, @@ -296,6 +311,7 @@ wxVTKRenderWindowInteractor::wxVTKRenderWindowInteractor(wxWindow *parent, , RenderWhenDisabled(1) , UseCaptureMouse(0) { + #ifdef VTK_DEBUG_LEAKS vtkDebugLeaks::ConstructClass("wxVTKRenderWindowInteractor"); #endif @@ -310,7 +326,14 @@ 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,13 +342,19 @@ wxVTKRenderWindowInteractor::~wxVTKRenderWindowInteractor() #if defined(__WXGTK__) && defined(USE_WXGLCANVAS) delete this->context; #endif + +#ifdef VTK_USE_TDX + this->Device->Delete(); +#endif } + //--------------------------------------------------------------------------- wxVTKRenderWindowInteractor * wxVTKRenderWindowInteractor::New() { // we don't make use of the objectfactory, because we're not registered return new wxVTKRenderWindowInteractor; } + //--------------------------------------------------------------------------- void wxVTKRenderWindowInteractor::Initialize() { @@ -333,13 +362,11 @@ void wxVTKRenderWindowInteractor::Initialize() // enable everything and start rendering Enable(); //RenderWindow->Start(); - // set the size in the render window interactor Size[0] = size[0]; Size[1] = size[1]; - // this is initialized - Initialized = 1; + Initialized = 1; } //--------------------------------------------------------------------------- void wxVTKRenderWindowInteractor::Enable() @@ -353,11 +380,30 @@ 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 @@ -369,8 +415,17 @@ void wxVTKRenderWindowInteractor::Disable() { // if already disabled then done 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(); @@ -396,9 +451,9 @@ void wxVTKRenderWindowInteractor::UpdateSize(int x, int y) // and our RenderWindow's size #ifdef __WXCOCOA__ - #ifdef VTK_USE_COCOA - #else - #endif //VTK_USE_COCOA +// #ifdef VTK_USE_COCOA +// #else +// #endif //VTK_USE_COCOA #else RenderWindow->SetSize(x, y); #endif //__WXCOCOA__ @@ -414,19 +469,21 @@ int wxVTKRenderWindowInteractor::CreateTimer(int WXUNUSED(timertype)) { // it's a one shot timer if (!timer.Start(10, TRUE)) + { return 0; - + } return 1; - } + #if VTK_MAJOR_VERSION > 5 || (VTK_MAJOR_VERSION == 5 && VTK_MINOR_VERSION >= 2) //------------------------------------------------------------------ int wxVTKRenderWindowInteractor::InternalCreateTimer(int timerId, int timerType, unsigned long duration) { if (!timer.Start(duration, timerType == OneShotTimer)) + { return 0; - + } return ID_wxVTKRenderWindowInteractor_TIMER; } //------------------------------------------------------------------ @@ -436,12 +493,14 @@ int wxVTKRenderWindowInteractor::InternalDestroyTimer(int platformTimerId) return 1; } #endif + //--------------------------------------------------------------------------- int wxVTKRenderWindowInteractor::DestroyTimer() { // do nothing return 1; } + //--------------------------------------------------------------------------- void wxVTKRenderWindowInteractor::OnTimer(wxTimerEvent& WXUNUSED(event)) { @@ -575,6 +634,7 @@ void wxVTKRenderWindowInteractor::OnPaint(wxPaintEvent& WXUNUSED(event)) } #endif #endif + } //--------------------------------------------------------------------------- void wxVTKRenderWindowInteractor::OnEraseBackground(wxEraseEvent &event) @@ -661,7 +721,7 @@ void wxVTKRenderWindowInteractor::OnLeave(wxMouseEvent &event) //--------------------------------------------------------------------------- void wxVTKRenderWindowInteractor::OnKeyDown(wxKeyEvent &event) { - if (!Enabled) + if (!Enabled) { return; } @@ -691,7 +751,7 @@ void wxVTKRenderWindowInteractor::OnKeyDown(wxKeyEvent &event) //--------------------------------------------------------------------------- void wxVTKRenderWindowInteractor::OnKeyUp(wxKeyEvent &event) { - if (!Enabled) + if (!Enabled) { return; } @@ -722,7 +782,7 @@ void wxVTKRenderWindowInteractor::OnKeyUp(wxKeyEvent &event) //--------------------------------------------------------------------------- void wxVTKRenderWindowInteractor::OnChar(wxKeyEvent &event) { - if (!Enabled) + if (!Enabled) { return; } @@ -889,7 +949,7 @@ void wxVTKRenderWindowInteractor::OnMouseWheel(wxMouseEvent& event) InvokeEvent(vtkCommand::MouseWheelBackwardEvent, NULL); } #endif - + } //--------------------------------------------------------------------------- @@ -928,7 +988,7 @@ void wxVTKRenderWindowInteractor::Render() //if it's not enabeld, renderAllowed will be false renderAllowed = topParent->IsEnabled(); } - } + } // if renderAllowed && !RenderWhenDisabled if (renderAllowed) { @@ -951,8 +1011,7 @@ void wxVTKRenderWindowInteractor::Render() RenderWindow->Render(); } #endif - - } + } // if renderAllowed } //--------------------------------------------------------------------------- void wxVTKRenderWindowInteractor::SetRenderWhenDisabled(int newValue)