X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FInterface_ManagerContour_NDimensions%2FwxContourViewPanel.cxx;h=c2b2b2be969d6d537dc81880df61b8afa1f59f1d;hb=6e3c929c883c405e0075fa8df10b12a935979367;hp=5a43e9c2e6448db4196d6396568624806f784e55;hpb=c80a486f463943ea0ce295ebca58fc10e956c38c;p=creaContours.git diff --git a/lib/Interface_ManagerContour_NDimensions/wxContourViewPanel.cxx b/lib/Interface_ManagerContour_NDimensions/wxContourViewPanel.cxx index 5a43e9c..c2b2b2b 100644 --- a/lib/Interface_ManagerContour_NDimensions/wxContourViewPanel.cxx +++ b/lib/Interface_ManagerContour_NDimensions/wxContourViewPanel.cxx @@ -4,12 +4,14 @@ //---------------------------------------------------------------------------------------------------------------- #include "wxContourViewPanel.h" - +#include "wxContourMainFrame.h" //---------------------------------------------------------------------------------------------------------------- // Other includes //---------------------------------------------------------------------------------------------------------------- #include "ConceptDataWrap.h" +//this should be eliminated at some point +//#include "wxContourEventHandler.h" //---------------------------------------------------------------------------------------------------------------- // Class implementation //---------------------------------------------------------------------------------------------------------------- @@ -25,10 +27,6 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHANGE ) //------------------------------------------------------------------------------------------------------------ // Constructors & Destructors //------------------------------------------------------------------------------------------------------------ - - wxContourViewPanel :: wxContourViewPanel ( vtkImageData * theShowingImage, wxWindow *parent, const wxPoint& pos, const wxSize& size,long style, int vertStart, int vertEnd, int horzStart, int horzEnd ) - //:wxScrolledWindow(parent, -1, pos, size, style) - :wxPanel(parent, -1, pos, size, style) /*{ showingVID = theShowingImage; @@ -88,6 +86,9 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHANGE ) SetBackgroundColour(wxColour(255,0,0)); }*/ + //:wxScrolledWindow(parent, -1, pos, size, style) + wxContourViewPanel :: wxContourViewPanel ( vtkImageData * theShowingImage, wxWindow *parent, const wxPoint& pos, const wxSize& size,long style, int vertStart, int vertEnd, int horzStart, int horzEnd ) + :wxPanel(parent, -1, pos, size, style) { theShowingImage->GetSpacing(last_spacing); @@ -99,6 +100,7 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHANGE ) createHorizontalBar(1,80); createVerticalBar(1,200); createViewPanel(); + _eventHandler = NULL; wxFlexGridSizer * panelSizer = new wxFlexGridSizer(1, 4, gapV, gapH); panelSizer -> AddGrowableCol(2); @@ -144,6 +146,9 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHANGE ) //theViewPanel->GetWindow(1)->SetSize(800,600); //outSizer->Fit( this ); + + initializeScenceManager(); + } @@ -152,6 +157,28 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHANGE ) } + void wxContourViewPanel::initializeScenceManager(){ + + //_theViewPanel = theViewPanel; + //_theViewPanel->setWxEventHandler( this ); + + double spc[3]; + this->getSpacing(spc); + _sceneManager = new wxVtkBaseView_SceneManager ( this->getWxVtkBaseView(), this, spc ); + + Connect( this->GetId(), wxINSTANT_CHANGE, (wxObjectEventFunction) (wxCommandEventFunction) &wxContourViewPanel::onChangeInstant ); + Connect( wxID_ANY, wxEVT_START_CREATE_MULT_ROI, (wxObjectEventFunction) (wxCommandEventFunction) &wxContourViewPanel::onCreateMultipleROI ); + Connect( wxID_ANY, wxEVT_START_CREATE_ROI, (wxObjectEventFunction) (wxCommandEventFunction) &wxContourViewPanel::onCreateROI ); + Connect( wxID_ANY, wxEVT_STOP_CREATE_ROI, (wxObjectEventFunction) (wxCommandEventFunction) &wxContourViewPanel::onStopCreateROI ); + Connect( wxID_ANY, wxEVT_CHANGED_DEEP, (wxObjectEventFunction) (wxCommandEventFunction) &wxContourViewPanel::onChangedDeep ); + Connect( wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &wxContourViewPanel :: onActionButtonPressed ); + + } + + wxVtkBaseView_SceneManager* wxContourViewPanel::getSceneManager(){ + return _sceneManager; + } + //------------------------------------------------------------------------------------------------------------ // Creational and initialization methods //------------------------------------------------------------------------------------------------------------ @@ -199,6 +226,11 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHANGE ) } //------------------------------------------------------------------------------------------------------------ + void wxContourViewPanel::changeImage(vtkImageData* img){ + + theViewPanel->SetImage(img); + + } wxVtkMPR2DView * wxContourViewPanel::GetwxVtkMPR2DView() { return (wxVtkMPR2DView *) (theViewPanel->GetwxVtkBaseView(1)); @@ -249,21 +281,30 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHANGE ) */ void wxContourViewPanel :: onActualChange_Bar_Horizontal(wxCommandEvent& event) { - int nxActual_h = getActualHorizontal(); + + int actual = getActualHorizontal(); - if (_eventHandler!=NULL) - { + wxContourMainFrame::getInstance()->onChangeInstant(_horizontalConceptName, actual); + + //JCP 26 - 11 - 08 + //int nxActual_h = getActualHorizontal(); + + + //if (_eventHandler!=NULL) + //{ //------------------------------------------------- // Sending the event of wxINSTANT_CHANGE //------------------------------------------------- - wxCommandEvent newevent(wxINSTANT_CHANGE,GetId()); + // wxCommandEvent newevent(wxINSTANT_CHANGE,GetId()); - ConceptDataWrap * cWrap = new ConceptDataWrap( _horizontalConceptName ); - cWrap->setActualValue( nxActual_h ); + // ConceptDataWrap * cWrap = new ConceptDataWrap( _horizontalConceptName ); + // cWrap->setActualValue( nxActual_h ); - newevent.SetClientData( (void *)cWrap ); - _eventHandler->ProcessEvent(newevent); - } + // newevent.SetClientData( (void *)cWrap ); + // _eventHandler->ProcessEvent(newevent); + + //} + //JCP 26 - 11 - 08 } /** * Handles the event wxEVT_TSBAR_START from the horizontal bar @@ -312,6 +353,10 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHANGE ) */ void wxContourViewPanel :: onActualChange_Bar_Vertical(wxCommandEvent& event) { + int actual = getActualVertical(); + wxContourMainFrame::getInstance()->onChangeInstant(_verticalConceptName, actual); + //JCP 26 - 11 - 08 + /* int nxActual_v = getActualVertical(); if (_eventHandler!=NULL) @@ -326,7 +371,8 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHANGE ) newevent.SetClientData( (void *)cWrap ); _eventHandler->ProcessEvent(newevent); - } + }*/ + //JCP 26 - 11 - 08 } /** * Handles the event wxEVT_TSBAR_START from the vertical bar @@ -415,7 +461,7 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHANGE ) */ int wxContourViewPanel :: getActualVertical() { - return _verticalBar->GetEnd(); + return _verticalBar->GetActual();//GetEnd(); } /** @@ -587,7 +633,134 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHANGE ) //EED 08/04/2008 // return theViewPanel->GetZ(1); return theViewPanel->GetZ(); + //return GetZ(); } + bool wxContourViewPanel::isEditableCControler(std::string theKeyName){ + return _sceneManager->isEditableCControler(theKeyName); + } + + void wxContourViewPanel::removeFromScene(std::string theKeyName){ + + _sceneManager->deleteCViewerCControler(theKeyName); + + + } + + void wxContourViewPanel::onChangeInstant(wxCommandEvent& event){ + ConceptDataWrap * dataConcept = NULL; + if ( GetId() == event.GetId() ) + { + dataConcept = (ConceptDataWrap *)event.GetClientData(); + int value = dataConcept->getActualValue(); + //_instantPanel->setConceptValue( dataConcept->getName(), value ); + wxContourMainFrame::getInstance()->setConceptValue( dataConcept->getName(), value ); + } + else + { + dataConcept = wxContourMainFrame::getInstance()->getLastConceptData(); + if( dataConcept->getName().compare( getVerticalConceptName() ) == 0) + { + setActualVertical( dataConcept->getActualValue()); + //_theViewPanel->setVerticalConcept( dataConcept->getName(), dataConcept->getMinShowedValue()/*dataConcept->getMinValue()*/, /*dataConcept->getMaxValue()*/ dataConcept->getMaxShowedValue(), dataConcept->getMinShowedValue(), dataConcept->getMaxShowedValue(), dataConcept->getActualValue()); + } + else if( dataConcept->getName().compare( getHorizontalConceptName() ) == 0|| wxContourMainFrame::getInstance()->getIfConceptCheckedAt( dataConcept->getName(), 0 ) ) + { + setHorizontalConcept( dataConcept->getName(), dataConcept->getMinShowedValue()/*dataConcept->getMinValue()*/, /*dataConcept->getMaxValue()*/ dataConcept->getMaxShowedValue(), dataConcept->getMinShowedValue(), dataConcept->getMaxShowedValue(), dataConcept->getActualValue()); + } + } + wxContourMainFrame::getInstance()->changeInstant(); + } + void wxContourViewPanel::onCreateMultipleROI (wxCommandEvent& event){ + } + void wxContourViewPanel::onCreateROI (wxCommandEvent& event){ + } + void wxContourViewPanel::onStopCreateROI (wxCommandEvent& event){ + } + void wxContourViewPanel::onChangedDeep (wxCommandEvent& event){ + double val = getCurrentDeep(); + setActualVertical( (int)val ); + wxContourMainFrame::getInstance()->onChangeDeep((int)val); + //_instantPanel->setConceptValue( "Axe Depth", (int)val ); + +// changeInstant(); + } + void wxContourViewPanel::onActionButtonPressed(wxCommandEvent& event){ + } + + void wxContourViewPanel::removeSceneContours(){ + _sceneManager->removeSceneContours(); + } + + void wxContourViewPanel::addNameWrapperToScene(){ + int size = wxContourMainFrame::getInstance()->getNamesWrappingSize(); + for(int i = 0; i < size;i++){ + std::string name = wxContourMainFrame::getInstance()->getNameWrapping(i); + _sceneManager->addToScene(name, true, true, true, false, false ); + } + } + + std::vector wxContourViewPanel::getSelectedObjects(){ + return _sceneManager->getSelectedObjects(); + } + + void wxContourViewPanel::RefreshInterface(){ + getWxVtkBaseView()->Refresh(); + } + vtkImageData* wxContourViewPanel::getImageData(){ + return _sceneManager->GetImageData(); + } + + void wxContourViewPanel::configureViewControlTo(std::string theName,manualContourModel* manModelContour,double* spc,int typeofcontour){ + _sceneManager->configureViewControlTo(theName, manModelContour, spc, typeofcontour); + } + + int wxContourViewPanel::GetImageDataSizeZ(){ + return _sceneManager->GetImageDataSizeZ(); + } + + void wxContourViewPanel::GetImageDataRange(double *range){ + _sceneManager->GetImageDataRange(range); + } + + void wxContourViewPanel::SetWidthContour(double width ){ + _sceneManager->SetWidthContour( width ); + } + + int wxContourViewPanel::getColorWindow(){ + wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)getWxVtkBaseView(); + vtkImageViewer2 *imageviewer = wxvtk2dbaseview->_imageViewer2XYZ->GetVtkImageViewer2(); + int colorwindow = (int)imageviewer->GetWindowLevel()->GetLevel(); + return colorwindow; + } + + int wxContourViewPanel::getWindowLevel(){ + wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)getWxVtkBaseView(); + vtkImageViewer2 *imageviewer = wxvtk2dbaseview->_imageViewer2XYZ->GetVtkImageViewer2(); + int windowlevel = (int)imageviewer->GetWindowLevel()->GetWindow(); + return windowlevel; + } + + void wxContourViewPanel::onBrigthnessColorWindowLevel(int colorwindow,int windowlevel){ + wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)getWxVtkBaseView(); + vtkImageViewer2 *imageviewer = wxvtk2dbaseview->_imageViewer2XYZ->GetVtkImageViewer2(); + imageviewer->SetColorWindow(colorwindow); + imageviewer->SetColorLevel(windowlevel); + } + + void wxContourViewPanel::onInterpolation(bool interpolate){ + wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)getWxVtkBaseView(); + vtkImageViewer2 *imageviewer = wxvtk2dbaseview->_imageViewer2XYZ->GetVtkImageViewer2(); + + if (interpolate){ + imageviewer->GetImageActor()->InterpolateOn(); + } else { + imageviewer->GetImageActor()->InterpolateOff(); + } + } + + void wxContourViewPanel::GetPointsOfActualContour( std::vector *vecX, std::vector *vecY, std::vector *vecZ ){ + _sceneManager->GetPointsOfActualContour(vecX, vecY, vecZ); + } \ No newline at end of file