=========================================================================*/
-
#include <assert.h>
#include "creawxVTKRenderWindowInteractor.h"
# include "vtkVersion.h"
#endif
+
#if VTK_MAJOR_VERSION > 4 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
# include "vtkCommand.h"
#else
#endif
+#ifdef VTK_USE_TDX
+#import "vtkTDxMacDevice.h"
+#endif
+
+
//=======================================================================
// LG : NAMESPACE IS NECESSARY TO AVOID CONFLICTING SYMBOLS IN DYN LIBS
namespace crea
// 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
, RenderWhenDisabled(1)
, UseCaptureMouse(0)
{
+ //EED 2025-01-20 Create sync mechanism windows
+ firstTimeOnPaint=false;
+
#ifdef VTK_DEBUG_LEAKS
vtkDebugLeaks::ConstructClass("wxVTKRenderWindowInteractor");
#endif
this->RenderWindow = NULL;
this->SetRenderWindow(vtkRenderWindow::New());
this->RenderWindow->Delete();
+
+#ifdef VTK_USE_TDX
+ this->Device=vtkTDxMacDevice::New();
+#endif
+
}
//---------------------------------------------------------------------------
wxVTKRenderWindowInteractor::wxVTKRenderWindowInteractor(wxWindow *parent,
, RenderWhenDisabled(1)
, UseCaptureMouse(0)
{
+ //EED 2025-01-20 Create sync mechanism windows
+ firstTimeOnPaint=false;
#ifdef VTK_DEBUG_LEAKS
vtkDebugLeaks::ConstructClass("wxVTKRenderWindowInteractor");
#endif
// 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()
{
#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()
{
// 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()
#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
{
// 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();
// 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__
{
// 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;
}
//------------------------------------------------------------------
return 1;
}
#endif
+
//---------------------------------------------------------------------------
int wxVTKRenderWindowInteractor::DestroyTimer()
{
// do nothing
return 1;
}
+
//---------------------------------------------------------------------------
void wxVTKRenderWindowInteractor::OnTimer(wxTimerEvent& WXUNUSED(event))
{
//---------------------------------------------------------------------------
void wxVTKRenderWindowInteractor::OnPaint(wxPaintEvent& WXUNUSED(event))
{
+ //EED 2025-01-20 Create sync mechanism windows
+ firstTimeOnPaint=true;
+
//must always be here
//EED2021-08-26
#ifdef __WXCOCOA__
#endif
#endif
}
+
//---------------------------------------------------------------------------
void wxVTKRenderWindowInteractor::OnEraseBackground(wxEraseEvent &event)
{
//turn off background erase to reduce flickering on MSW
event.Skip(false);
}
+
//---------------------------------------------------------------------------
void wxVTKRenderWindowInteractor::OnSize(wxSizeEvent& WXUNUSED(event))
{
int w, h;
GetClientSize(&w, &h);
UpdateSize(w, h);
-
if (!Enabled)
- {
- return;
- }
-
+ {
+ return;
+ }
#if VTK_MAJOR_VERSION > 4 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
InvokeEvent(vtkCommand::ConfigureEvent, NULL);
#endif
//this will check for Handle
//Render();
}
+
//---------------------------------------------------------------------------
void wxVTKRenderWindowInteractor::OnMotion(wxMouseEvent &event)
{
//---------------------------------------------------------------------------
void wxVTKRenderWindowInteractor::OnKeyDown(wxKeyEvent &event)
{
- if (!Enabled)
+ if (!Enabled)
{
return;
}
//---------------------------------------------------------------------------
void wxVTKRenderWindowInteractor::OnKeyUp(wxKeyEvent &event)
{
- if (!Enabled)
+ if (!Enabled)
{
return;
}
//---------------------------------------------------------------------------
void wxVTKRenderWindowInteractor::OnChar(wxKeyEvent &event)
{
- if (!Enabled)
+ if (!Enabled)
{
return;
}
InvokeEvent(vtkCommand::MouseWheelBackwardEvent, NULL);
}
#endif
-
+
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void wxVTKRenderWindowInteractor::Render()
{
+ //EED 2025-01-20 Create sync mechanism windows
+ if (firstTimeOnPaint==true)
+ {
+
#if wxCHECK_VERSION(2, 8, 0)
- int renderAllowed = !IsFrozen();
+ int renderAllowed = !IsFrozen();
#else
- int renderAllowed = 1;
+ int renderAllowed = 1;
#endif
- if (renderAllowed && !RenderWhenDisabled)
- {
- //the user doesn't want us to render when the toplevel frame
- //is disabled - first find the top level parent
- wxWindow *topParent = wxGetTopLevelParent(this);
- if (topParent)
- {
- //if it exists, check whether it's enabled
- //if it's not enabeld, renderAllowed will be false
- renderAllowed = topParent->IsEnabled();
- }
- }
-
- if (renderAllowed)
- {
+ if (renderAllowed && !RenderWhenDisabled)
+ {
+ //the user doesn't want us to render when the toplevel frame
+ //is disabled - first find the top level parent
+ wxWindow *topParent = wxGetTopLevelParent(this);
+ if (topParent)
+ {
+ //if it exists, check whether it's enabled
+ //if it's not enabeld, renderAllowed will be false
+ renderAllowed = topParent->IsEnabled();
+ }
+ } // if renderAllowed && !RenderWhenDisabled
+
+ if (renderAllowed)
+ {
#if defined(__WXGTK__) && defined(USE_WXGLCANVAS)
- wxGLCanvas::SetCurrent(*(this->context));
+ wxGLCanvas::SetCurrent(*(this->context));
#endif
- if(Handle && (Handle == GetHandleHack()) )
- {
- RenderWindow->Render();
- }
+ if(Handle && (Handle == GetHandleHack()) )
+ {
+ RenderWindow->Render();
+ }
#if VTK_MAJOR_VERSION > 4 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 2)
- else if(GetHandleHack())
- {
- //this means the user has reparented us; let's adapt to the
- //new situation by doing the WindowRemap dance
- //store the new situation
- Handle = GetHandleHack();
- RenderWindow->SetNextWindowId(reinterpret_cast<void *>(Handle));
- RenderWindow->WindowRemap();
- RenderWindow->Render();
- }
+ else if(GetHandleHack())
+ {
+ //this means the user has reparented us; let's adapt to the
+ //new situation by doing the WindowRemap dance
+ //store the new situation
+ Handle = GetHandleHack();
+ RenderWindow->SetNextWindowId(reinterpret_cast<void *>(Handle));
+ RenderWindow->WindowRemap();
+ RenderWindow->Render();
+ }
#endif
-
- }
+ } // if renderAllowed
+ } // if firstTimeOnPaint
}
+
//---------------------------------------------------------------------------
void wxVTKRenderWindowInteractor::SetRenderWhenDisabled(int newValue)
{
}
-// LG : EO namespace bbwxvtk
+// LG : EO namespace
//=======================================================================