X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FInterface_ManagerContour_NDimensions%2FwxContourMainFrame.h;h=cceebd807b59ba75a1b6c77df7d56832b4181a2a;hb=d8ae77db08ab2e951c0e984c20fc47b615744abb;hp=04969ffa281375eb1e19ad06e21d66fe80412089;hpb=192dfdf774a06066eff90e9c50916723c8592706;p=creaContours.git diff --git a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.h b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.h index 04969ff..cceebd8 100644 --- a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.h +++ b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.h @@ -1,3 +1,28 @@ +/*# --------------------------------------------------------------------- +# +# 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. +# ------------------------------------------------------------------------ */ + #ifndef __wxContourMainFrame_h_INCLUDED_H__ #define __wxContourMainFrame_h_INCLUDED_H__ @@ -21,31 +46,63 @@ //------------------------------------------------------------------------------------------------------------ #include "wx/aui/aui.h" -#include "ContourThing.h" -#include "AxeThing.h" -#include "ImageSourceThing.h" -#include "ImageSectionThing.h" -#include "InstantMembersNameList.h" -#include "OutlineGroup.h" -#include "SomeEnvironment.h" -#include "ContourWorkspace.h" -#include "ContourWrap_ViewControl.h" -#include "Instant.h" - -#include "OutlineModelManager.h" +#include "interfMainPanel.h" +#include "KernelManagerContour.h" + +//#include "wxVtkBaseView_SceneManager.h" #include "wxInstantChooserPanel.h" -#include "wxContour_ButtonsBar.h" -#include "wxContour_ControlPanel.h" #include "wxContourViewPanel.h" -#include "wxContour_Grid.h" -#include "wxContour_DrawToolsPanel.h" -#include "wxContour_OperationsToolsPanel.h" -#include "wxContour_AutomaticFormsToolsPanel.h" -#include "wxContour_StandardToolsPanel.h" -#include "wxContour_EdtionToolsPanel.h" -#include "wxContour_ListViewPanel.h" -#include "wxVtkBaseView_SceneManager.h" +//#include "ContourWorkspace.h" +#include "ContourExtractData.h" +#include "PerformingOperation.h" + +#include "manualLineControler.h" +#include "manualContourModelLine.h" +#include "manualViewLine.h" + +#include "ThresholdImageView.h" +#include "ThresholdImageViewPanel.h" +#include "ColorLayerImageView.h" +#include "ColorLayerImageViewPanel.h" + + +//ITK +#include "itkImage.h" +#include "itkGeodesicActiveContourLevelSetImageFilter.h" + +#include "itkCurvatureAnisotropicDiffusionImageFilter.h" +#include "itkGradientMagnitudeRecursiveGaussianImageFilter.h" +#include "itkSigmoidImageFilter.h" +#include "itkFastMarchingImageFilter.h" +#include "itkRescaleIntensityImageFilter.h" +#include "itkBinaryThresholdImageFilter.h" +#include "itkZeroCrossingImageFilter.h" +#include "itkCastImageFilter.h" + +//EED10JUIN2011 #include "itkImageFileWriter.h" + +#include "itkImageToVTKImageFilter.h" +#include "itkVTKImageToImageFilter.h" + +//VTK +#include +#include +#include "vtkContourFilter.h" +#include "vtkMarchingContourFilter.h" +#include "vtkPolyDataConnectivityFilter.h" +#include "vtkCleanPolyData.h" +#include "vtkImageReslice.h" +#include "vtkMetaImageWriter.h" +#include "vtkImageData.h" +#include "vtkTransform.h" +#include "vtkCamera.h" +#include "vtkImageActor.h" +#include +#include +#include + +//#include "vtkMetaImageReader.h" //------------------------------------------------------------------------------------------------------------ // Events declaration @@ -60,7 +117,7 @@ //------------------------------------------------------------------------------------------------------------ // Class definition //------------------------------------------------------------------------------------------------------------ - +class interfMainPanel; class wxContourMainFrame : public wxPanel { public: @@ -68,118 +125,313 @@ class wxContourMainFrame : public wxPanel { //------------------------------------------------------------------------------------------------------------ // Constructors & Destructors //------------------------------------------------------------------------------------------------------------ - + wxContourMainFrame(wxWindow* parent, wxWindowID id,const wxString& title,const wxPoint& pos,const wxSize& size,long style = wxDEFAULT_FRAME_STYLE | wxSUNKEN_BORDER); + wxContourMainFrame(wxWindow* parent, wxWindowID id,const wxString& title,const wxPoint& pos,const wxSize& size,std::vector images, long style = wxDEFAULT_FRAME_STYLE | wxSUNKEN_BORDER,std::string datadir="C:/Creatis/creaContoursBin/RelWithDebInfo/"); ~wxContourMainFrame(); //------------------------------------------------------------------------------------------------------------ // Creational and initialization methods //------------------------------------------------------------------------------------------------------------ - bool configurePanels(wxAuiNotebook * theNoteBook ); - void setNotebook( wxAuiNotebook * theNoteBook ); + void setVectImages(std::vector imgs); + + bool configurePanels( ); + + bool addNewPanel(wxPanel* panel); wxAuiNotebook * createNotebook(); void createInstantChooserPanel(wxAuiNotebook * parent); void createViewPanel(wxAuiNotebook * parent); - + void createInstantChooserPanel(wxWindow * parent); void createViewPanel(wxWindow * parent); - - void setViewPanel( wxContourViewPanel * theViewPanel ); void setInstantChooserPanel( wxInstantChooserPanel * theInstantChooserPanel ); - void setButtonsBar( wxContour_ButtonsBar * theButtonsBar ); - - void setGrid( wxContour_Grid * theGridPanel ); - - void setDrawToolsPanel( wxContour_DrawToolsPanel * theDrawToolsPanel ); - - void setOperationsToolsPanel( wxContour_OperationsToolsPanel * theDrawToolsPanel ); - - void setAutomaticFormsPanel( wxContour_AutomaticFormsToolsPanel * theAutoFormsPanel ); + void getMaskValue(vtkImageData ** mask,vtkImageData ** value,int typeContourGroup, int selection, int minZ, int maxZ); - void setStandardToolsPanel( wxContour_StandardToolsPanel * theStandardToolsPanel ); + void SaveImageResult(std::string directory,std::string namefile, vtkImageData* mask,vtkImageData* value); - void setEditionToolsPanel( wxContour_EdtionToolsPanel * theEditionToolsPanel ); - - void setListViewPanel( wxContour_ListViewPanel * theListViewPanel ); + void ShowToolsPanel(bool show); ////------------------------------------------------------------------------------------------------------------ //// Methods for capturing events ////------------------------------------------------------------------------------------------------------------ - + ////------------------------------------------------------------------------------------------------------------ //// Model management methods ////------------------------------------------------------------------------------------------------------------ - + //------------------------------------------------------------------------------------------------------------ // Attributes getters and setters //------------------------------------------------------------------------------------------------------------ + static wxContourMainFrame* getInstance(wxWindow* parent, wxWindowID id,const wxString& title,const wxPoint& pos,const wxSize& size,std::vector images, long style = wxDEFAULT_FRAME_STYLE | wxSUNKEN_BORDER, std::string datadir="C:/Creatis/creaContoursBin/RelWithDebInfo/"); + static wxContourMainFrame* getInstance(); + static void resetInstance(); //------------------------------------------------------------------------------------------------------------ // Other functional methods //------------------------------------------------------------------------------------------------------------ + /* + ** This method returns the vector of images selected by the user + ** return value std::vector + */ + std::vector getVectImages(); + + /** + ** This methods connect the event in the class interfMainPanel with the world of the appli + **/ + void onCreateContourSpline( ); + void onCreateContourRectangle( ); + void onCreateContourCircle( ); + void onCreateContourLine( ); + void onCreateContourPoints( ); + void onCreateContourPolygon( ); + void onCreateContourBullEye(wxPanel* pan); + ///////////////////////////////// + void onDeleteContour(); + void deleteContours( std::vector keyNamesVector ); + void deleteContour( std::string theKeyName ); + void onDeleteContoursActSlice(); + void onDeleteAllContours(); + void deleteAllContours(); + void setConceptValue( std::string name, int value ); + ConceptDataWrap* getLastConceptData(); + bool getIfConceptCheckedAt( std::string name, int pos ); + void changeInstant(); + int getNamesWrappingSize(); + std::string getNameWrapping(int i); + void updateInstantOutlines(); + void updateInstantImageData(); + void updateInstantAxes(); + void onChangeDeep(int val); +/////////////////////////// + void onCopy(); + void onPaste(); + void onUndo(); + void onRedo(); + void createCopyContourOf ( std::string anExistingKName, std::vector &instantNoTouchData, bool append ); + void createMirrorContourOf ( std::string anExistingKName, std::vector &instantNoTouchData, bool append ); +///////////////////////7 + void onLoad(); + void onSave(); + void onImport(); + void onTest(); + void openContours( FILE *pFile, FILE *pFileData, bool staticContour ); + void RefreshInterface(); + vtkImageData* getImageData(); + void onSegmentationOneSlice(int isovalue,int sampling,int method); + void onSegmentationOneSliceITK(wxString distance, wxString sigma, wxString alfa, wxString beta, wxString propagation, wxString iterations, wxString inflation); + void SegmentationOneSlice( int x, int y, int z, int isovalue, int sampling, int method ); + void SegmentationOneSliceITK(int x, int y, int z, wxString distance, wxString sigma, wxString alfa, wxString beta, wxString propagation, wxString iterations, wxString inflation); + void Mirror( int x, int y, int z, int isovalue, int sampling, int method ); + int GetImageDataSizeZ(); + void GetImageDataRange(double *range); + void onSegmentationAllSlice(int minZ,int maxZ,int isovalue,int sampling,int method); + + //AD + void referenceLine(); + void refLineHide(); + void refLineShow(); + void refLineChangeWidth(int width); + + //AD + void onMirror(); + + //EED + void FlipContours(int typeContourFlip, int flipDirection); + void FlipSelectedContours(int flipDirection); + void FlipActualSliceContours(int flipDirection); + void FlipAllContours(int flipDirection); + void FlipLstOfContours(std::vector lstNameThings, int flipDirection); + +//==================================================================================================== + + void showAxis(bool show); + void onRigidPressed(); + void onWidthOfContour(double width); + int getColorWindow(); + int getWindowLevel(); + void onBrigthnessColorWindowLevel(int colorwindow,int windowlevel); + void onInterpolation(bool interpolate); + void onBeforeAfterContour(bool before, bool after); + void onChangeInstant(std::string name,int actual); + void resetAppend(); + void onSpreadAdd(); + void onSpreadAddAll(); + void onSpreadGo(int type); + void getInstantVector(std::vector& tempVector); + std::vector getOutlinesName(int slide); + + // + // + // @param typeContourGroup - int The operation id (AND,OR,XOR,ALL=3) + // + void onInformationContourLabels(int typeContourGroup,int selection,int minimumZ,int maximumZ,int grayRangeMin, int grayRangeMax); + void onSaveResults(std::string directory,std::string namefile, std::string filename, + int typeContourGroup, int selection, int minZ, int maxZ, bool XYZValues, bool contourImage, bool statistics); + void SaveValuesXYZ(std::string directory,std::string namefile, int typeContourGroup); + void onChangeInstantInstantPanel(std::string name,int value, int minshow, int maxshow); + void onSnakePressed(); + void saveFileWithContoursAutomatique(); + void ShowResultImages(int typeContourGroup, int selection, int minZ, int maxZ ); + wxPanel *getMaskImageViewPanel(wxWindow *parent); + void SetContourGroup(int contourGroup); + wxPanel *getThresholdImageViewPanel(wxWindow *parent); + wxPanel *getColorLayerImageViewPanel(wxWindow *parent); + +//CMRU 17-08-09----------------------------------------------------------------------------------------------- + + /** + * Associates the String parameter with the contour + * @param label Label entered by the user + * @param manualBaseModel Currently selected contour + */ + void onPrintLabel (wxString label, manualBaseModel* manualModel); -private: - //------------------------------------------------------------------------------------------------------------ - // Private methods - //------------------------------------------------------------------------------------------------------------ + /** + * Calculates the size of the contour received as a parameter. Uses the measure of a pixel in millimeters. + * @param manualBaseModel Currently selected contour + */ + void onInsertCalculation(manualBaseModel* manualModel); - - //------------------------------------------------------------------------------------------------------------ - // Attributtes - //------------------------------------------------------------------------------------------------------------ + /** + * Assigns and returns the value of a pixel in millimeters + @ param value Measure of the pixel in millimeters + */ + double onePixelSize(double value); - wxAuiManager m_mgr; - /* - wxArrayString m_perspectives; - wxMenu* m_perspectives_menu; + /** + * Returns the type of the currently selected contour */ - long m_notebook_style; - long m_notebook_theme; + int getType(); - wxContourViewPanel * _theViewPanel; + /** + * Returns the size in pixels of the currently selected contour + */ + double getContourSizeInPixels(); - OutlineModelManager * _modelManager; + /** + * Returns the currently selected contour. If no contour is selected returns NULL + */ + manualBaseModel* getContour(); - wxInstantChooserPanel * _instantPanel; + /** + * Returns the Path of the data persistence file + */ + std::string GetFileLocation(); - wxContour_ButtonsBar * _buttonsBar; + /** + * Assign a new path to the data persistence file + @ param newFileLocation New path of the file + */ + void SetFileLocation(std::string newFileLocation); +//------------------------------------------------------------------------------------------------------------ - wxContour_Grid * _gridPanel; + void SetScalarRange(int grayRangeMin, int grayRangeMax); - wxContour_DrawToolsPanel * _drawToolsPanel; + std::string GetStringTypeImage( vtkImageData* image); - wxContour_OperationsToolsPanel * _operationsToolsPanel; +//------------------------------------------------------------------------------------------------------------ - wxContour_AutomaticFormsToolsPanel * _autoFormsPanel; + void SetXY(int x,int y); - wxContour_StandardToolsPanel *_standardToolsPanel; - wxContour_EdtionToolsPanel * _editionToolsPanel; +private: + //------------------------------------------------------------------------------------------------------------ + // Private methods + //------------------------------------------------------------------------------------------------------------ - wxContour_ListViewPanel * _listViewPanel; - wxVtkBaseView_SceneManager * _sceneManager; + //------------------------------------------------------------------------------------------------------------ + // Attributtes + //------------------------------------------------------------------------------------------------------------ + + int _contourGroup; + static wxContourMainFrame *instance; + KernelManagerContour *kernelManager; + interfMainPanel *_pannew; + PerformingOperation *_performingOperation; + std::string _datadir; + wxContourViewPanel *_theViewPanel; + wxInstantChooserPanel *_instantPanel; + + //AD: 03-09: This attributes represents the reference line that is going to be used for the mirroring + manualLineControler *_refLineControl; + manualContourModelLine *_refLineModel; + manualViewLine *_refLineView; + + wxAuiManager m_mgr; + wxAuiNotebook *notebook; + long m_notebook_style; + long m_notebook_theme; + int _numberOfVariablesStatistics; + + // Contour Image Mask + ThresholdImageView *_viewMaskImage; + ThresholdImageViewPanel *_viewMaskImagePanel; + + // Threshold Image + ThresholdImageView *_viewThresholdImage; + ThresholdImageViewPanel *_viewThresholdImagePanel; + + // Color Layer Image + ColorLayerImageViewPanel *_viewColorLayerImagePanel; + std::vector _images; + bool _actorPresent; + + // temporary variables readding .roi file + int _tmpReadFileImageDim[3]; + double _tmpReadFileImageSpac[3]; + int _tmpReadFileTypeOfTransformation; + void readDimSpc(FILE *pFile, bool interactiveOption); - Instant * _actualInstant; /*DECLARE_CLASS(wxContourMainFrame) // any class wishing to process wxWindows events must use this macro DECLARE_EVENT_TABLE()*/ - bool _creatingContoursActive; + bool _creatingContoursActive; +////////JCP 21 - 11 - 08 + void createContour( int typeContour ); + //manualContourModel * factoryManualContourModel(int typeContour); + manualBaseModel * factoryManualContourModel(wxPanel* panel); + ContourExtractData *_contourextractdata; + + void saveState(); + void loadState(std::string filename); + +// void loadContours( FILE *pFile, bool staticContour ); + + void saveFileWithContours( std::string filename ); + void onLoadContours(std::string fileNameContourROI, bool interactiveInterface); + void SetZForAllContours(int pz); + + int inredo; + int inundo; + std::string stundoredo; + static char COPY; + +//CMRU 17-08-09----------------------------------------------------------------------------------------------- + wxWindow *infoWin2; + wxPanel *calibrationPanel; + wxPanel *calibrationPanelError; + double _onePixelSize; + std::string _imageLocation; + std::string _fileLocation; +//------------------------------------------------------------------------------------------------------------ + + wxFrame *_frameShowResultImages; }; -#endif +#endif