+/*# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+# pour la Sant�)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+# This software is governed by the CeCILL-B license under French law and
+# abiding by the rules of distribution of free software. You can use,
+# modify and/ or redistribute the software under the terms of the CeCILL-B
+# license as circulated by CEA, CNRS and INRIA at the following URL
+# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+# or in the file LICENSE.txt.
+#
+# As a counterpart to the access to the source code and rights to copy,
+# modify and redistribute granted by the license, users are provided only
+# with a limited warranty and the software's author, the holder of the
+# economic rights, and the successive licensors have only limited
+# liability.
+#
+# The fact that you are presently reading this means that you have had
+# knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------ */
+
//----------------------------------------------------------------------------------------------------------------
// Class definition include
wxVtkBaseView_SceneManager :: wxVtkBaseView_SceneManager( wxVtkBaseView * theWxBaseViewToManage, wxEvtHandler * theEventHandler, double * spc )
{
- _widthOfContour = 1.0;
_lastInteraction = NULL;
_lastInteractionName = "";
_eventHandler = theEventHandler;
_leftClickCount = 0;
_rigthClickCount = 0;
-
_contours_ViewControl = new std::map< std::string, ContourWrap_ViewControl * >();
_sceneContours_ViewControl = new std::map< std::string, ContourWrap_ViewControl * >();
_workingGroup = new std::map< std::string, ContourWrap_ViewControl * >();
-
_creatingMULT_ROI = false;
_editingROI = false;
_toIncludeAtInteractionGroup = false;
_waiting = false;
_creatingROI = false;
_drawingSelectionROI = false;
-
-
+ _showTextContour = true;
+ SetWidthContour(1.0);
_wxVtk_BaseView = theWxBaseViewToManage;
if( _wxVtk_BaseView!=NULL )
{
SetVtkInteractorStyleBaseView( theInteractorStyleBaseView );
}
configureSelectionROI( spc );
+ configureTextNumberOfContour();
}
+
//------------------------------------------------------------------------------------------------------------
wxVtkBaseView_SceneManager :: ~wxVtkBaseView_SceneManager()
{
{
_contours_ViewControl->erase( iter );
i++;
- }
+ } // for
_contours_ViewControl->clear();
delete _contours_ViewControl;
_workingGroup->clear();
wxCommandEvent cevent( theEventType );
cevent.SetString( wxString( text.c_str(), wxConvUTF8) );
_eventHandler->ProcessEvent( cevent );
- }
+ } // if
}
-
//------------------------------------------------------------------------------------------------------------
// Attributes getters and setters
//------------------------------------------------------------------------------------------------------------
{
_eventHandler = theEventHandler;
}
+
//------------------------------------------------------------------------------------------------------------
void wxVtkBaseView_SceneManager :: setWxVtkViewBase( wxVtkBaseView * theBaseView )
{
{
return _wxVtk_BaseView;
}
+
//------------------------------------------------------------------------------------------------------------
- void wxVtkBaseView_SceneManager :: configureViewControlTo( std::string theKeyName, manualBaseModel * manModelContour, double * spc,int typeContour)
+ void wxVtkBaseView_SceneManager::configureViewControlTo( std::string theKeyName, manualBaseModel * manModelContour, double * spc,int typeContour)
{
//setControlActiveStateOfALL( false );
_creatingROI = true;
_lastInteraction->getControler()->SetActive( false );
this->_vtkInteractorStyleBaseView->SetRefresh_waiting();
}
-
-
manualContourBaseControler *manContourControl;
manualViewBaseContour *manViewerContour;
-
// Creating the view manualViewContour and the manualContourControler
// NOTE: The model is created in the KernelManagerContour class, factoryManualContourModel method
if (typeContour==1)
manContourControl = new manualLineControler();
manViewerContour = new manualViewLine();
}
+
+ //Points
if (typeContour==7)
{
manContourControl = new manualContourControler();
manViewerContour = new manualViewPoints();
}
+ //Polygon
+ if (typeContour==10)
+ {
+ manContourControl = new manualContourControler();
+ manViewerContour = new manualViewContour();
+ }
+
_lastInteraction = insertWrap( theKeyName, manContourControl, manViewerContour );
//Configuring the relations between the contour members representation
manViewerContour->SetModel( manModelContour );
manViewerContour->SetWxVtkBaseView( _wxVtk_BaseView );
- manViewerContour->SetRange( 0.5 );
- manViewerContour->SetZ( 1000 );
+ manViewerContour->SetRange( _widthOfControlPoint );
+ manViewerContour->SetZ( -900 );
manViewerContour->SetSpacing(spc);
manViewerContour->RefreshContour();
addToScene( theKeyName );
}
- //------------------------------------------------------------------------------------------------------------
- void wxVtkBaseView_SceneManager :: configureSelectionROI( double * spc )
- {
+//------------------------------------------------------------------------------------------------------------
+void wxVtkBaseView_SceneManager :: configureSelectionROI( double * spc )
+{
_controlerSelectionROI = new manualRoiControler();
_viewerSelectionROI = new manualViewRoi();
_modelSelectionROI = new manualContourModel();
_viewerSelectionROI->SetModel( _modelSelectionROI );
_viewerSelectionROI->SetWxVtkBaseView( _wxVtk_BaseView );
_viewerSelectionROI->SetRange( 2 );
- _viewerSelectionROI->SetZ( 1000 );
+ _viewerSelectionROI->SetZ( -900 );
_viewerSelectionROI->SetColorNormalContour(0.6, 0.8, 0);
_viewerSelectionROI->SetSpacing( spc );
_controlerSelectionROI->SetModelView( _modelSelectionROI , _viewerSelectionROI );
((vtkInteractorStyleBaseView*)_wxVtk_BaseView->GetInteractorStyleBaseView())->AddInteractorStyleMaracas( _controlerSelectionROI );
_controlerSelectionROI->SetActive(false);
- }
+}
- //------------------------------------------------------------------------------------------------------------
- ContourWrap_ViewControl * wxVtkBaseView_SceneManager :: insertWrap( std::string theKeyName, manualContourBaseControler * manContourControl, manualViewBaseContour * manViewerContour )
+//------------------------------------------------------------------------------------------------------------
+void wxVtkBaseView_SceneManager::configureTextNumberOfContour()
+{
+ // Text Window Level
+ vtkTextActor *textActor = vtkTextActor::New();
+ textActor->SetDisplayPosition(10, 85);
+ textActor->SetInput("contours:--");
+ // Set coordinates to match the old vtkScaledTextActor default value
+ textActor->GetPosition2Coordinate()->SetCoordinateSystemToNormalizedViewport();
+ textActor->GetPosition2Coordinate()->SetValue( 0.2 , 0.2 );
+ vtkTextProperty *tprop = textActor->GetTextProperty();
+ tprop->SetFontSize(14);
+ tprop->SetFontFamilyToArial();
+ tprop->SetColor(1, 1, 0);
+ _wxVtk_BaseView->GetRenderer()->AddActor2D(textActor);
+ _numberOfContoursTextActor=textActor;
+}
+
+//------------------------------------------------------------------------------------------------------------
+void wxVtkBaseView_SceneManager::SetLabelNumberOfContours( std::string label )
+{
+ _numberOfContoursTextActor->SetInput( label.c_str() );
+}
+
+//------------------------------------------------------------------------------------------------------------
+ContourWrap_ViewControl * wxVtkBaseView_SceneManager :: insertWrap( std::string theKeyName, manualContourBaseControler * manContourControl, manualViewBaseContour * manViewerContour )
{
ContourWrap_ViewControl * newContourWrap = new ContourWrap_ViewControl(manContourControl, manViewerContour);
+ if(_contours_ViewControl == NULL)
+ {
+ _contours_ViewControl = new std::map< std::string, ContourWrap_ViewControl * >();
+ }
_contours_ViewControl->insert(std::pair <std::string, ContourWrap_ViewControl *> ( theKeyName, newContourWrap ));
return newContourWrap;
}
+
//------------------------------------------------------------------------------------------------------------
void wxVtkBaseView_SceneManager :: desconfigureViewControlOf( std::string theKeyName )
- {
-
+ {
}
+
//------------------------------------------------------------------------------------------------------------
void wxVtkBaseView_SceneManager :: removeWrap( std::string theKeyName )
{
this->_vtkInteractorStyleBaseView->SetRefresh_waiting();
this->_vtkInteractorStyleBaseView->EvaluateToRefresh();
}
+
//------------------------------------------------------------------------------------------------------------
ContourWrap_ViewControl * wxVtkBaseView_SceneManager :: getContourWrap_ViewControlOf ( std::string theName )
{
return iter->second;
//return iter->first;
}
+
//------------------------------------------------------------------------------------------------------------
ContourWrap_ViewControl * wxVtkBaseView_SceneManager :: getContourWrap_ViewControlOf ( std::string theName, std::map<std::string, ContourWrap_ViewControl *> * theMap )
{
iter = theMap->find( theName );
return iter->second;
}
+
//------------------------------------------------------------------------------------------------------------
manualContourBaseControler * wxVtkBaseView_SceneManager :: getControlerOf( std::string theName )
{
return getContourWrap_ViewControlOf ( theName )->getControler();
}
+
//------------------------------------------------------------------------------------------------------------
manualViewBaseContour * wxVtkBaseView_SceneManager :: getViewerOf( std::string theName )
{
return getContourWrap_ViewControlOf ( theName )->getViewer();
}
+
//------------------------------------------------------------------------------------------------------------
void wxVtkBaseView_SceneManager :: set_creatingMULT_ROI( bool condition )
{
_creatingMULT_ROI = condition;
}
+
//------------------------------------------------------------------------------------------------------------
void wxVtkBaseView_SceneManager :: set_editingROI( bool condition )
{
_editingROI = condition;
}
+
//------------------------------------------------------------------------------------------------------------
void wxVtkBaseView_SceneManager :: set_toIncludeAtInteractionGroup( bool condition )
{
_toIncludeAtInteractionGroup = condition;
}
+
//------------------------------------------------------------------------------------------------------------
void wxVtkBaseView_SceneManager :: set_waiting( bool condition )
{
_waiting = condition;
}
+
//------------------------------------------------------------------------------------------------------------
bool wxVtkBaseView_SceneManager :: get_creatingMULT_ROI( )
{
return _creatingMULT_ROI;
}
+
//------------------------------------------------------------------------------------------------------------
bool wxVtkBaseView_SceneManager :: get_editingROI( )
{
return _editingROI;
}
+
//------------------------------------------------------------------------------------------------------------
bool wxVtkBaseView_SceneManager :: get_toIncludeAtInteractionGroup( )
{
}
//------------------------------------------------------------------------------------------------------------
- void wxVtkBaseView_SceneManager :: removeSceneContours( )
+ void wxVtkBaseView_SceneManager::removeSceneContours()
{
std::map <std::string, ContourWrap_ViewControl *>::iterator iter = _sceneContours_ViewControl->begin();
int size = _sceneContours_ViewControl->size();
iter++;
}
_sceneContours_ViewControl->clear();
-
-
//Removing the selection rectangle to avoid showing when it's innecesary
_controlerSelectionROI->SetActive( false );
_viewerSelectionROI->RemoveCompleteContourActor();
if( !append )
{
removeSceneContours();
- }
+ } // if !append
+
_sceneContours_ViewControl->insert(std::pair <std::string, ContourWrap_ViewControl *> ( theKeyName, contourWRP ) );
- if ( visualization )
+
+ if ( visualization==true )
{
contourWRP->getViewer()->AddCompleteContourActor( ifShowCtrlPoints );
- }
+ } // if visualization
- if( control )
+ if( control==true )
{
((vtkInteractorStyleBaseView*)_wxVtk_BaseView->GetInteractorStyleBaseView())->AddInteractorStyleMaracas( contourWRP->getControler() );
- }
- if( ifActive )
+ } // if contour
+
+ if( !control )
+ {
+ contourWRP->getViewer()->SetColorNormalContour(1,0,0);
+ } else {
+ contourWRP->getViewer()->SetColorNormalContour(0,0,1);
+ } // if !contour
+
+ if( ifActive==true )
{
contourWRP->getControler()->SetActive( true );
contourWRP->getViewer()->RemoveTextActor();
- }
+ } // if ifActive
+
+ contourWRP->getViewer()->SetShowText(_showTextContour);
}
//------------------------------------------------------------------------------------------------------------
bool condition = true;
int X,Y;
- wxVTKRenderWindowInteractor *_wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
+ crea::wxVTKRenderWindowInteractor *_wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
_wxVTKiren->GetEventPosition( X , Y );
bool ctrlKey = _vtkInteractorStyleBaseView->GetInteractor()->GetControlKey() == 1;
size = selectionSize;
iter = _workingGroup->begin();
}
- }
- else
- {
+ } else {
_toIncludeAtInteractionGroup = false;
}
double sg = (double)(start) / CLOCKS_PER_SEC;
#endif
int tmpPx,tmpPy;
- wxVTKRenderWindowInteractor *wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
+ crea::wxVTKRenderWindowInteractor *wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
wxVTKiren->GetEventPosition( tmpPx , tmpPy );
fprintf(ff,"::%s (x,y) = (%i, %i) t(sg): %f\n \n",method.c_str(), tmpPx, tmpPy, sg);
fclose(ff);
//------------------------------------------------------------------------------------------------------------
void wxVtkBaseView_SceneManager::SetWidthContour(double width)
{
- _widthOfContour = width;
+ _widthOfContour = width;
+ _widthOfControlPoint = _widthOfContour*_widthOfContour/2;
manualViewBaseContour *cViewer;
ContourWrap_ViewControl *conwraviwcont;
- std::map <std::string, ContourWrap_ViewControl *>::iterator iter;;
-
- for (iter=_contours_ViewControl->begin(); iter!=_contours_ViewControl->end(); iter++ )
+ std::map <std::string, ContourWrap_ViewControl *>::iterator iter;
+
+ if (_contours_ViewControl!=NULL)
{
- conwraviwcont = iter->second;
- cViewer = conwraviwcont->getViewer();
- cViewer->SetWidthLine(_widthOfContour);
- }
+ for (iter=_contours_ViewControl->begin(); iter!=_contours_ViewControl->end(); iter++ )
+ {
+ conwraviwcont = iter->second;
+ cViewer = conwraviwcont->getViewer();
+ cViewer->SetShowText( false ); // EED 28Mars2011
+ cViewer->SetWidthLine( _widthOfContour );
+ cViewer->SetRange( _widthOfControlPoint );
+ } // for
+ } // if
+ }
+
+ void wxVtkBaseView_SceneManager::SetShowTextContour(bool show)
+ {
+ _showTextContour = show;
}
bool wxVtkBaseView_SceneManager::isEditableCControler(std::string theKeyName){
ContourWrap_ViewControl* ccon = getContourWrap_ViewControlOf(theKeyName);
- manualViewBaseContour * cViewer = ccon->getViewer();
- manualContourBaseControler * cControler = ccon->getControler();
+ manualViewBaseContour * cViewer = ccon->getViewer();
+ manualContourBaseControler * cControler = ccon->getControler();
removeFromScene(theKeyName);
removeWrap(theKeyName);
delete cViewer;
delete cControler;
}
-
\ No newline at end of file
+
+
+