X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fwxvtk%2Fsrc%2FbbwxvtkViewer3D.cxx;h=41e76ab2e2b0a92e3b479e84962af7fd683480aa;hb=1e2df7fb6ae571ce1cf72e6af1715f0e34675cbf;hp=0cab9e8175a27b9ab1bd7c7582b5569dcfc53ec7;hpb=6415d635327ce5d9058a45cc6f350551af2adff5;p=bbtk.git diff --git a/packages/wxvtk/src/bbwxvtkViewer3D.cxx b/packages/wxvtk/src/bbwxvtkViewer3D.cxx index 0cab9e8..41e76ab 100644 --- a/packages/wxvtk/src/bbwxvtkViewer3D.cxx +++ b/packages/wxvtk/src/bbwxvtkViewer3D.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxvtkViewer3D.cxx,v $ Language: C++ - Date: $Date: 2008/03/03 13:14:27 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/11/25 11:17:28 $ + Version: $Revision: 1.11 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -28,7 +28,6 @@ #include "bbwxvtkPackage.h" #include "vtkCamera.h" -#include "vtkInteractorStyleTrackballCamera.h" @@ -37,7 +36,7 @@ namespace bbwxvtk BBTK_ADD_BLACK_BOX_TO_PACKAGE(wxvtk,Viewer3D); //------------------------------------------------------------------------- - Viewer3DWidget::Viewer3DWidget(Viewer3D* box, wxWindow *parent) + Viewer3DWidget::Viewer3DWidget(Viewer3D* box, wxWindow *parent, bool stereo) : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL), mBox(box) @@ -49,10 +48,19 @@ namespace bbwxvtk renderer = vtkRenderer::New(); renderwindow = vtkRenderWindow::New(); + renderwindow->AddRenderer(renderer); + + if (stereo==true){ + renderwindow->SetStereoCapableWindow(1); + //renderwindow->SetStereoTypeToCrystalEyes(); + renderwindow->SetStereoTypeToRedBlue(); + renderwindow->SetStereoRender(1); + } + wxvtkrenderwindowinteractor->SetRenderWindow(renderwindow); - vtkInteractorStyleTrackballCamera *interactorstyle = vtkInteractorStyleTrackballCamera ::New(); + interactorstyle = vtkInteractorStyleTrackballCamera ::New(); interactorstyle->SetInteractor ( wxvtkrenderwindowinteractor ); wxvtkrenderwindowinteractor->SetInteractorStyle( interactorstyle ); @@ -65,7 +73,8 @@ namespace bbwxvtk // camera->SetParallelScale( spx*(x2-x1)/2.0 ); renderer->ResetCamera(x1,x2,y1,y2,z1,z2); - + renderer->SetBackground(0.1, 0.1, 0.2); + wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); sizer->Add( wxvtkrenderwindowinteractor , 1, wxEXPAND, 0); panel->SetSizer(sizer); @@ -78,14 +87,19 @@ namespace bbwxvtk //------------------------------------------------------------------------- Viewer3DWidget::~Viewer3DWidget() { - wxvtkrenderwindowinteractor->Delete(); + renderwindow->Delete(); + renderer->Delete(); + interactorstyle->Delete(); + delete wxvtkrenderwindowinteractor; } //------------------------------------------------------------------------- //------------------------------------------------------------------------- void Viewer3DWidget::Update() { + wxvtkrenderwindowinteractor->Update(); wxvtkrenderwindowinteractor->Render(); + renderer->ResetCameraClippingRange(); } //------------------------------------------------------------------------- @@ -103,13 +117,20 @@ namespace bbwxvtk } //------------------------------------------------------------------------- +void Viewer3DWidget::Refresh(bool eraseBackground , const wxRect* rect ) +{ +// wxPanel::Refresh(false,rect); +} + + + //-------------------------------------------------------------------------- //------------------------------------------------------------------------- //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- - BBTK_USER_BLACK_BOX_IMPLEMENTATION(Viewer3D,bbtk::WxBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(Viewer3D,bbtk::WxBlackBox); void Viewer3D::bbUserConstructor() { @@ -118,14 +139,22 @@ namespace bbwxvtk bbSetInputIn3(NULL); bbSetInputIn4(NULL); bbSetInputIn5(NULL); + bbSetInputObs1(NULL); + bbSetInputObs2(NULL); + bbSetInputObs3(NULL); + bbSetInputObs4(NULL); + bbSetInputObs5(NULL); + bbSetInputStereo(false); bbSetOutputRenderer( NULL ); bbSetOutputInteractor( NULL ); + bbSetOutputWidget(NULL); } void Viewer3D::Process() { - ((Viewer3DWidget*)bbGetOutputWidget())->Update(); + Viewer3DWidget* w = (Viewer3DWidget*)bbGetOutputWidget(); + if (w) w->Update(); } @@ -134,36 +163,74 @@ namespace bbwxvtk * * */ - void Viewer3D::CreateWidget() + void Viewer3D::CreateWidget(wxWindow* parent) { bbtkDebugMessageInc("Core",9,"Viewer3D::CreateWidget()"<Update(); - bbSetOutputInteractor( w->GetInteractor() ); + + vtkRenderWindowInteractor *interactor = w->GetInteractor(); + if (interactor!=NULL) + { + if (bbGetInputObs1()!=NULL) + { + bbGetInputObs1()->SetInteractor(interactor); + bbGetInputObs1()->EnabledOn(); + } + if (bbGetInputObs2()!=NULL) + { + bbGetInputObs2()->SetInteractor(interactor); + bbGetInputObs2()->EnabledOn(); + } + if (bbGetInputObs3()!=NULL) + { + bbGetInputObs3()->SetInteractor(interactor); + bbGetInputObs3()->EnabledOn(); + } + if (bbGetInputObs4()!=NULL) + { + bbGetInputObs4()->SetInteractor(interactor); + bbGetInputObs4()->EnabledOn(); + } + if (bbGetInputObs5()!=NULL) + { + bbGetInputObs5()->SetInteractor(interactor); + bbGetInputObs5()->EnabledOn(); + } + bbSetOutputInteractor( w->GetInteractor() ); + } + vtkRenderer *renderer = w->GetRenderer(); if (renderer!=NULL) { - vtkRenderer *renderer = w->GetRenderer(); if (bbGetInputIn1()!=NULL) {renderer->AddActor( bbGetInputIn1() ); } if (bbGetInputIn2()!=NULL) {renderer->AddActor( bbGetInputIn2() ); } if (bbGetInputIn3()!=NULL) {renderer->AddActor( bbGetInputIn3() ); } if (bbGetInputIn4()!=NULL) {renderer->AddActor( bbGetInputIn4() ); } if (bbGetInputIn5()!=NULL) {renderer->AddActor( bbGetInputIn5() ); } renderer->ResetCamera(); - bbSetOutputRenderer( w->GetRenderer() ); - - - } - + bbSetOutputRenderer( renderer ); + } + bbSetOutputWidget(w); bbtkDebugDecTab("Core",9); } + // This callback is necessary to get actual processing of the view + // when window is shown + void Viewer3D::OnShowWidget() + { + Viewer3DWidget* w = (Viewer3DWidget*)bbGetOutputWidget(); + if (w) w->Update(); + } + }//namespace bbwxvtk