00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "wxVTKRenderWindowInteractor.h"
00020
00021
00022 #ifndef VTK_MAJOR_VERSION
00023 # include "vtkVersion.h"
00024 #endif
00025
00026 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
00027 # include "vtkCommand.h"
00028 #else
00029 # include "vtkInteractorStyle.h"
00030 #endif
00031
00032
00033
00034 namespace bbwxvtk
00035 {
00036
00037
00038 #if (!wxCHECK_VERSION(2, 4, 0))
00039 wxWindow* wxGetTopLevelParent(wxWindow *win)
00040 {
00041 while ( win && !win->IsTopLevel() )
00042 win = win->GetParent();
00043 return win;
00044 }
00045 #endif
00046 }
00047
00048
00049
00050
00051 #ifdef __WXCOCOA__
00052 #ifdef VTK_USE_COCOA
00053 #import <Cocoa/Cocoa.h>
00054
00055 #define id Id
00056 #else
00057 #error Build mismatch you need both wxWidgets and VTK to be configure against Cocoa to work
00058 #endif //VTK_USE_COCOA
00059 #endif //__WXCOCOA__
00060
00061 #ifdef __WXGTK__
00062 # include <gdk/gdkx.h>
00063 # include "gdk/gdkprivate.h"
00064 #ifdef __WXGTK20__
00065 #include <wx/gtk/win_gtk.h>
00066 #else
00067 #include <wx/gtk1/win_gtk.h>
00068 #endif
00069 #define GetXWindow(wxwin) (wxwin)->m_wxwindow ? \
00070 GDK_WINDOW_XWINDOW(GTK_PIZZA((wxwin)->m_wxwindow)->bin_window) : \
00071 GDK_WINDOW_XWINDOW((wxwin)->m_widget->window)
00072 #endif
00073
00074 #ifdef __WXX11__
00075 #include "wx/x11/privx.h"
00076 #define GetXWindow(wxwin) ((Window)(wxwin)->GetHandle())
00077 #endif
00078
00079
00080
00081
00082
00083 #if wxCHECK_VERSION(2, 3, 2) && !wxCHECK_VERSION(2, 4, 1) && defined(__WXGTK__)
00084 # define WX_USE_X_CAPTURE 0
00085 #else
00086 # define WX_USE_X_CAPTURE 1
00087 #endif
00088
00089 #define ID_wxVTKRenderWindowInteractor_TIMER 1001
00090
00091
00092
00093 namespace bbwxvtk
00094 {
00095
00096 #if defined(__WXGTK__) && defined(USE_WXGLCANVAS)
00097 IMPLEMENT_DYNAMIC_CLASS(wxVTKRenderWindowInteractor, wxGLCanvas)
00098 #else
00099 IMPLEMENT_DYNAMIC_CLASS(wxVTKRenderWindowInteractor, wxWindow)
00100 #endif //__WXGTK__
00101
00102
00103 #if defined(__WXGTK__) && defined(USE_WXGLCANVAS)
00104 BEGIN_EVENT_TABLE(wxVTKRenderWindowInteractor, wxGLCanvas)
00105 #else
00106 BEGIN_EVENT_TABLE(wxVTKRenderWindowInteractor, wxWindow)
00107 #endif //__WXGTK__
00108
00109 EVT_PAINT (wxVTKRenderWindowInteractor::OnPaint)
00110 EVT_ERASE_BACKGROUND(wxVTKRenderWindowInteractor::OnEraseBackground)
00111 EVT_MOTION (wxVTKRenderWindowInteractor::OnMotion)
00112
00113
00114 EVT_LEFT_DOWN (wxVTKRenderWindowInteractor::OnButtonDown)
00115 EVT_MIDDLE_DOWN (wxVTKRenderWindowInteractor::OnButtonDown)
00116 EVT_RIGHT_DOWN (wxVTKRenderWindowInteractor::OnButtonDown)
00117 EVT_LEFT_UP (wxVTKRenderWindowInteractor::OnButtonUp)
00118 EVT_MIDDLE_UP (wxVTKRenderWindowInteractor::OnButtonUp)
00119 EVT_RIGHT_UP (wxVTKRenderWindowInteractor::OnButtonUp)
00120 #if !(VTK_MAJOR_VERSION == 3 && VTK_MINOR_VERSION == 1)
00121 EVT_ENTER_WINDOW(wxVTKRenderWindowInteractor::OnEnter)
00122 EVT_LEAVE_WINDOW(wxVTKRenderWindowInteractor::OnLeave)
00123 EVT_MOUSEWHEEL (wxVTKRenderWindowInteractor::OnMouseWheel)
00124
00125
00126
00127
00128 EVT_CHAR (wxVTKRenderWindowInteractor::OnKeyDown)
00129 EVT_KEY_UP (wxVTKRenderWindowInteractor::OnKeyUp)
00130 #endif
00131 EVT_TIMER (ID_wxVTKRenderWindowInteractor_TIMER, wxVTKRenderWindowInteractor::OnTimer)
00132 EVT_SIZE (wxVTKRenderWindowInteractor::OnSize)
00133 END_EVENT_TABLE()
00134
00135
00136 #if defined(__WXGTK__) && defined(USE_WXGLCANVAS)
00137 wxVTKRenderWindowInteractor::wxVTKRenderWindowInteractor() : vtkRenderWindowInteractor(), wxGLCanvas()
00138 #else
00139 wxVTKRenderWindowInteractor::wxVTKRenderWindowInteractor() : vtkRenderWindowInteractor(), wxWindow()
00140 #endif
00141 , timer(this, ID_wxVTKRenderWindowInteractor_TIMER)
00142 , ActiveButton(wxEVT_NULL)
00143 , RenderAllowed(0)
00144 , Stereo(0)
00145 , Handle(0)
00146 , Created(true)
00147 , RenderWhenDisabled(1)
00148 , UseCaptureMouse(0)
00149 {
00150
00151 this->RenderWindow = NULL;
00152 this->SetRenderWindow(vtkRenderWindow::New());
00153 this->RenderWindow->Delete();
00154
00155
00156 }
00157
00158 wxVTKRenderWindowInteractor::wxVTKRenderWindowInteractor(wxWindow *parent,
00159 wxWindowID id,
00160 const wxPoint &pos,
00161 const wxSize &size,
00162 long style,
00163 const wxString &name)
00164 #if defined(__WXGTK__) && defined(USE_WXGLCANVAS)
00165 : vtkRenderWindowInteractor(), wxGLCanvas(parent, id, pos, size, style, name)
00166 #else
00167 : vtkRenderWindowInteractor(), wxWindow(parent, id, pos, size, style, name)
00168 #endif //__WXGTK__
00169 , timer(this, ID_wxVTKRenderWindowInteractor_TIMER)
00170 , ActiveButton(wxEVT_NULL)
00171 , RenderAllowed(0)
00172 , Stereo(0)
00173 , Handle(0)
00174 , Created(true)
00175 , RenderWhenDisabled(1)
00176 , UseCaptureMouse(0)
00177 {
00178
00179 this->RenderWindow = NULL;
00180 this->SetRenderWindow(vtkRenderWindow::New());
00181 this->RenderWindow->Delete();
00182
00183
00184 }
00185
00186 wxVTKRenderWindowInteractor::~wxVTKRenderWindowInteractor()
00187 {
00188
00189 SetRenderWindow(NULL);
00190 SetReferenceCount(0);
00191 }
00192
00193 wxVTKRenderWindowInteractor * wxVTKRenderWindowInteractor::New()
00194 {
00195
00196 return new wxVTKRenderWindowInteractor;
00197 }
00198
00199 void wxVTKRenderWindowInteractor::Initialize()
00200 {
00201 int *size = RenderWindow->GetSize();
00202
00203 Enable();
00204
00205
00206
00207 Size[0] = size[0];
00208 Size[1] = size[1];
00209
00210
00211 Initialized = 1;
00212 }
00213
00214 void wxVTKRenderWindowInteractor::Enable()
00215 {
00216
00217 if (Enabled)
00218 return;
00219
00220
00221 Enabled = 1;
00222 #if defined(__WXGTK__) && defined(USE_WXGLCANVAS)
00223 SetCurrent();
00224 #endif
00225 Modified();
00226 }
00227
00228 bool wxVTKRenderWindowInteractor::Enable(bool enable)
00229 {
00230 #if defined(__WXGTK__) && defined(USE_WXGLCANVAS)
00231 return wxGLCanvas::Enable(enable);
00232 #else
00233 return wxWindow::Enable(enable);
00234 #endif
00235 }
00236
00237 void wxVTKRenderWindowInteractor::Disable()
00238 {
00239
00240 if (!Enabled)
00241 return;
00242
00243
00244 Enabled = 0;
00245 Modified();
00246 }
00247
00248 void wxVTKRenderWindowInteractor::Start()
00249 {
00250
00251 vtkErrorMacro( << "wxVTKRenderWindowInteractor::Start() "
00252 "interactor cannot control event loop.");
00253 }
00254
00255 void wxVTKRenderWindowInteractor::UpdateSize(int x, int y)
00256 {
00257 if( RenderWindow )
00258 {
00259
00260 if ( x != Size[0] || y != Size[1] )
00261 {
00262
00263 Size[0] = x;
00264 Size[1] = y;
00265
00266 RenderWindow->SetSize(x, y);
00267 }
00268 }
00269 }
00270
00271 int wxVTKRenderWindowInteractor::CreateTimer(int WXUNUSED(timertype))
00272 {
00273
00274 if (!timer.Start(10, TRUE))
00275 assert(false);
00276
00277 return 1;
00278
00279 }
00280
00281 int wxVTKRenderWindowInteractor::DestroyTimer()
00282 {
00283
00284 return 1;
00285 }
00286
00287 void wxVTKRenderWindowInteractor::OnTimer(wxTimerEvent& WXUNUSED(event))
00288 {
00289 if (!Enabled)
00290 return;
00291
00292 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
00293
00294 InvokeEvent(vtkCommand::TimerEvent, NULL);
00295 #else
00296
00297 InteractorStyle->OnTimer();
00298 #endif
00299 }
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310 long wxVTKRenderWindowInteractor::GetHandleHack()
00311 {
00312
00313 long handle_tmp = 0;
00314
00315
00316
00317
00318 #if defined(__WXMSW__) || defined(__WXMAC__)
00319 handle_tmp = (long)this->GetHandle();
00320 #endif //__WXMSW__
00321
00322
00323 #ifdef __WXCOCOA__
00324
00325 wxTopLevelWindow* toplevel = dynamic_cast<wxTopLevelWindow*>(
00326 wxGetTopLevelParent( this ) );
00327 if (toplevel != NULL )
00328 {
00329 handle_tmp = (long)toplevel->GetNSWindow();
00330 }
00331
00332
00333
00334 #endif //__WXCOCOA__
00335
00336
00337 #if defined(__WXGTK__) || defined(__WXX11__)
00338 return (long)GetXWindow(this);
00339 #endif
00340
00341
00342
00343
00344
00345 return handle_tmp;
00346 }
00347
00348 void wxVTKRenderWindowInteractor::OnPaint(wxPaintEvent& WXUNUSED(event))
00349 {
00350
00351
00352 wxPaintDC pDC(this);
00353
00354
00355 if(!Handle)
00356 {
00357 Handle = GetHandleHack();
00358 RenderWindow->SetWindowId(reinterpret_cast<void *>(Handle));
00359 #ifdef __WXMSW__
00360 RenderWindow->SetParentId(reinterpret_cast<void *>(this->GetParent()->GetHWND()));
00361 #endif //__WXMSW__
00362 }
00363
00364
00365
00366 Render();
00367
00368 #if defined(__WXGTK__) && defined(USE_WXGLCANVAS)
00369
00370 #else
00371
00372 #endif //__WXGTK__
00373
00374 }
00375
00376 void wxVTKRenderWindowInteractor::OnEraseBackground(wxEraseEvent &event)
00377 {
00378
00379
00380 event.Skip(false);
00381 }
00382
00383 void wxVTKRenderWindowInteractor::OnSize(wxSizeEvent& WXUNUSED(event))
00384 {
00385 int w, h;
00386 GetClientSize(&w, &h);
00387 UpdateSize(w, h);
00388
00389 if (!Enabled)
00390 {
00391 return;
00392 }
00393
00394 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
00395 InvokeEvent(vtkCommand::ConfigureEvent, NULL);
00396 #endif
00397
00398
00399 }
00400
00401 void wxVTKRenderWindowInteractor::OnMotion(wxMouseEvent &event)
00402 {
00403 if (!Enabled)
00404 {
00405 return;
00406 }
00407
00408 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
00409 SetEventInformationFlipY(event.GetX(), event.GetY(),
00410 event.ControlDown(), event.ShiftDown(), '\0', 0, NULL);
00411
00412 InvokeEvent(vtkCommand::MouseMoveEvent, NULL);
00413 #else
00414 InteractorStyle->OnMouseMove(event.ControlDown(), event.ShiftDown(),
00415 event.GetX(), Size[1] - event.GetY() - 1);
00416 #endif
00417 }
00418
00419 #if !(VTK_MAJOR_VERSION == 3 && VTK_MINOR_VERSION == 1)
00420 void wxVTKRenderWindowInteractor::OnEnter(wxMouseEvent &event)
00421 {
00422 if (!Enabled)
00423 {
00424 return;
00425 }
00426
00427 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
00428
00429 SetEventInformationFlipY(event.GetX(), event.GetY(),
00430 event.ControlDown(), event.ShiftDown(), '\0', 0, NULL);
00431
00432 InvokeEvent(vtkCommand::EnterEvent, NULL);
00433 #else
00434
00435 InteractorStyle->OnEnter(event.ControlDown(), event.ShiftDown(),
00436 event.GetX(), Size[1] - event.GetY() - 1);
00437 #endif
00438 }
00439
00440 void wxVTKRenderWindowInteractor::OnLeave(wxMouseEvent &event)
00441 {
00442 if (!Enabled)
00443 {
00444 return;
00445 }
00446
00447 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
00448
00449 SetEventInformationFlipY(event.GetX(), event.GetY(),
00450 event.ControlDown(), event.ShiftDown(), '\0', 0, NULL);
00451
00452 InvokeEvent(vtkCommand::LeaveEvent, NULL);
00453 #else
00454
00455 InteractorStyle->OnLeave(event.ControlDown(), event.ShiftDown(),
00456 event.GetX(), Size[1] - event.GetY() - 1);
00457 #endif
00458 }
00459
00460 void wxVTKRenderWindowInteractor::OnKeyDown(wxKeyEvent &event)
00461 {
00462 if (!Enabled)
00463 {
00464 return;
00465 }
00466
00467 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
00468
00469 int keycode = event.GetKeyCode();
00470 char key = '\0';
00471 if (keycode < 256)
00472 {
00473
00474 key = (char)keycode;
00475 }
00476
00477 SetEventInformationFlipY(event.GetX(), event.GetY(),
00478 event.ControlDown(), event.ShiftDown(), key, 0, NULL);
00479
00480 InvokeEvent(vtkCommand::KeyPressEvent, NULL);
00481 InvokeEvent(vtkCommand::CharEvent, NULL);
00482 #else
00483 InteractorStyle->OnKeyDown(event.ControlDown(), event.ShiftDown(),
00484 event.GetKeyCode(), 1);
00485 #endif
00486 event.Skip();
00487 }
00488
00489 void wxVTKRenderWindowInteractor::OnKeyUp(wxKeyEvent &event)
00490 {
00491 if (!Enabled)
00492 {
00493 return;
00494 }
00495
00496 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
00497
00498 int keycode = event.GetKeyCode();
00499 char key = '\0';
00500 if (keycode < 256)
00501 {
00502
00503 key = (char)keycode;
00504 }
00505
00506 SetEventInformationFlipY(event.GetX(), event.GetY(),
00507 event.ControlDown(), event.ShiftDown(), key, 0, NULL);
00508 InvokeEvent(vtkCommand::KeyReleaseEvent, NULL);
00509 #else
00510 InteractorStyle->OnKeyUp(event.ControlDown(), event.ShiftDown(),
00511 event.GetKeyCode(), 1);
00512 #endif
00513 event.Skip();
00514 }
00515 #endif
00516 //---------------------------------------------------------------------------
00517 void wxVTKRenderWindowInteractor::OnButtonDown(wxMouseEvent &event)
00518 {
00519 if (!Enabled || (ActiveButton != wxEVT_NULL))
00520 {
00521 return;
00522 }
00523 ActiveButton = event.GetEventType();
00524
00525 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
00526 SetEventInformationFlipY(event.GetX(), event.GetY(),
00527 event.ControlDown(), event.ShiftDown(), '\0', 0, NULL);
00528 #endif
00529
00530 if(event.RightDown())
00531 {
00532 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
00533
00534 InvokeEvent(vtkCommand::RightButtonPressEvent, NULL);
00535 #else
00536
00537 InteractorStyle->OnRightButtonDown(event.ControlDown(), event.ShiftDown(),
00538 event.GetX(), Size[1] - event.GetY() - 1);
00539 #endif
00540 }
00541 else if(event.LeftDown())
00542 {
00543 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
00544
00545 InvokeEvent(vtkCommand::LeftButtonPressEvent, NULL);
00546 #else
00547
00548 InteractorStyle->OnLeftButtonDown(event.ControlDown(), event.ShiftDown(),
00549 event.GetX(), Size[1] - event.GetY() - 1);
00550 #endif
00551 }
00552 else if(event.MiddleDown())
00553 {
00554 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
00555
00556 InvokeEvent(vtkCommand::MiddleButtonPressEvent, NULL);
00557 #else
00558
00559 InteractorStyle->OnMiddleButtonDown(event.ControlDown(), event.ShiftDown(),
00560 event.GetX(), Size[1] - event.GetY() - 1);
00561 #endif
00562 }
00563
00564
00565
00566
00567 if ((ActiveButton != wxEVT_NULL) && WX_USE_X_CAPTURE && UseCaptureMouse)
00568 {
00569 CaptureMouse();
00570 }
00571 }
00572
00573 void wxVTKRenderWindowInteractor::OnButtonUp(wxMouseEvent &event)
00574 {
00575
00576
00577
00578
00579 if (!Enabled || (ActiveButton != (event.GetEventType()-1)))
00580 {
00581 return;
00582 }
00583
00584 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
00585 SetEventInformationFlipY(event.GetX(), event.GetY(),
00586 event.ControlDown(), event.ShiftDown(), '\0', 0, NULL);
00587 #endif
00588
00589 if(ActiveButton == wxEVT_RIGHT_DOWN)
00590 {
00591 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
00592
00593 InvokeEvent(vtkCommand::RightButtonReleaseEvent, NULL);
00594 #else
00595
00596 InteractorStyle->OnRightButtonUp(event.ControlDown(), event.ShiftDown(),
00597 event.GetX(), Size[1] - event.GetY() - 1);
00598 #endif
00599 }
00600 else if(ActiveButton == wxEVT_LEFT_DOWN)
00601 {
00602 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
00603
00604 InvokeEvent(vtkCommand::LeftButtonReleaseEvent, NULL);
00605 #else
00606
00607 InteractorStyle->OnLeftButtonUp(event.ControlDown(), event.ShiftDown(),
00608 event.GetX(), Size[1] - event.GetY() - 1);
00609 #endif
00610 }
00611 else if(ActiveButton == wxEVT_MIDDLE_DOWN)
00612 {
00613 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 0)
00614
00615 InvokeEvent(vtkCommand::MiddleButtonReleaseEvent, NULL);
00616 #else
00617
00618 InteractorStyle->OnMiddleButtonUp(event.ControlDown(), event.ShiftDown(),
00619 event.GetX(), Size[1] - event.GetY() - 1);
00620 #endif
00621 }
00622
00623 if ((ActiveButton != wxEVT_NULL) && WX_USE_X_CAPTURE && UseCaptureMouse)
00624 {
00625 ReleaseMouse();
00626 }
00627 ActiveButton = wxEVT_NULL;
00628 }
00629
00630 void wxVTKRenderWindowInteractor::OnMouseWheel(wxMouseEvent& event)
00631 {
00632
00633 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 2)
00634
00635
00636
00637 SetEventInformationFlipY(event.GetWheelRotation() / event.GetWheelDelta(), 0,
00638 event.ControlDown(), event.ShiftDown(), '\0', 0, NULL);
00639 if(event.GetWheelRotation() > 0)
00640 {
00641
00642
00643
00644 }
00645 else
00646 {
00647
00648
00649
00650 }
00651 #endif
00652
00653 }
00654
00655
00656 void wxVTKRenderWindowInteractor::Render()
00657 {
00658 RenderAllowed = 1;
00659 if (!RenderWhenDisabled)
00660 {
00661
00662
00663 wxWindow *topParent = wxGetTopLevelParent(this);
00664 if (topParent)
00665 {
00666
00667
00668 RenderAllowed = topParent->IsEnabled();
00669 }
00670 }
00671
00672 if (RenderAllowed)
00673 {
00674 if(Handle && (Handle == GetHandleHack()) )
00675 {
00676 RenderWindow->Render();
00677 }
00678 #if VTK_MAJOR_VERSION == 5 || (VTK_MAJOR_VERSION == 4 && VTK_MINOR_VERSION > 2)
00679 else if(GetHandleHack())
00680 {
00681
00682
00683
00684 Handle = GetHandleHack();
00685 RenderWindow->SetNextWindowId(reinterpret_cast<void *>(Handle));
00686 RenderWindow->WindowRemap();
00687 RenderWindow->Render();
00688 }
00689 #endif
00690 }
00691 }
00692
00693 void wxVTKRenderWindowInteractor::SetRenderWhenDisabled(int newValue)
00694 {
00695
00696
00697
00698
00699
00700
00701
00702
00703
00704
00705
00706
00707
00708
00709
00710
00711 RenderWhenDisabled = (bool)newValue;
00712 }
00713
00714
00715
00716
00717
00718 void wxVTKRenderWindowInteractor::SetStereo(int capable)
00719 {
00720 if (Stereo != capable)
00721 {
00722 Stereo = capable;
00723 RenderWindow->StereoCapableWindowOn();
00724 RenderWindow->SetStereoTypeToCrystalEyes();
00725 Modified();
00726 }
00727 }
00728
00729
00730
00731
00732 void wxVTKRenderWindowInteractor::PrintSelf(ostream& os, vtkIndent indent)
00733 {
00734 this->Superclass::PrintSelf(os, indent);
00735 }
00736
00737
00738 void wxVTKRenderWindowInteractor::Refresh(bool eraseBackground , const wxRect* rect )
00739 {
00740
00741 }
00742
00743
00744 #if defined(_WIN32)
00745 const char * wxVTKRenderWindowInteractor::GetClassName() const
00746 {
00747 return "wxVTKRenderWindowInteractor";
00748 }
00749 #endif //_WIN32
00750
00751
00752
00753 }
00754
00755
00756