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