]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialog.h
#2482 creaMaracasVisu Bug New High - ColorLayer refresh missing. The MPR is not...
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / pPlotter / HistogramDialog.h
index a23cd3b2e528ec92db0ddab3627b1ca28fde85a9..5ac1e398857d340b6fcbdf0fe47cb760a1c4d54b 100644 (file)
@@ -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 __HISTOGRAMSDIALOG__
 #define __HISTOGRAMSDIALOG__
  #include <vtkColorTransferFunction.h>
  #include <vtkVolumeRayCastMapper.h>
  #include <vtkVolume.h>
- #include "../wxMPRWidget.h"
+ //#include "../wxMPRWidget.h"
+
+#include "HistogramDialogComboBoxItem.h"
+#include <wx/checkbox.h>
+#include <wx/statbmp.h>
 
 class HistogramDialog:public wxDialog
 {
@@ -33,7 +62,12 @@ public:
        /*
         Constructor
        */
-       HistogramDialog(wxWindow *parent,wxString title,vtkImageData* imageData,int type);
+       HistogramDialog(wxWindow *parent,wxString title,vtkImageData* imageData,bool extracontrols=false);
+       /*
+        Constructor
+       */
+       HistogramDialog(wxWindow *parent,wxString title,bool extracontrols=false);
+       ~HistogramDialog();
        /*
         Methods
        */
@@ -109,8 +143,8 @@ public:
        void setTF(vtkPiecewiseFunction* tf);
        void setVolumeMapper(vtkVolumeRayCastMapper* volMapper);
        void setVolume(vtkVolume* vol);
-       void setMPR3Dview(wxVtkMPR3DView *wxvtkmpr3Dview1);
-       void setClipping3DView(wxVtkClipping3DView *wxvtkclipping3Dview1);
+       //void setMPR3Dview(wxVtkMPR3DView *wxvtkmpr3Dview1);
+       //void setClipping3DView(wxVtkClipping3DView *wxvtkclipping3Dview1);
 
        //--------------------
        // plotter Information
@@ -125,51 +159,111 @@ public:
        void OnLoadData(wxCommandEvent& event);
        void OnRefreshBtn(wxCommandEvent& event);
        
+
+       /**
+       **      Initialize the histogram 
+       */
+       void initializeHistogram(vtkImageData* img);
+       /**
+       **      Returns two vectors, the grey level of the point and its value, the value is between [0,1]
+       **/
+       void GetValuesPointsFunction(std::vector<double>& greylevel,std::vector<double>& value);
+
+       /**
+       **      Returns two vectors, the grey level of the point and its value, the red, green
+       **      and blue value is between [0,1]
+       **/
+       void GetValuesColorPointsFunction(std::vector<double>& greylevel,
+                                                                       std::vector<double>& red,
+                                                                       std::vector<double>& green,
+                                                                       std::vector<double>& blue);
+       void SetFunctions(vtkPiecewiseFunction* _opac, vtkColorTransferFunction* _color);
+
+       /**
+       ** Set to true in the constructor
+       **/
+       void setInfoPanExtraControls(std::vector<HistogramDialogComboBoxItem*> comboitems);
+       
+
+       /**
+       *
+       */
+       void OnEditColorsCombo(wxCommandEvent& event);
+       void OnDeleteColor(wxCommandEvent& event);
+
+       std::vector<HistogramDialogComboBoxItem*> getComboBoxItems(){return _comboitems;}
+
+       void UpdateCurrentComboElement();
+       
 private:
        /*
        Histogram Widget
        */
        HistogramWidget*  histogramW;
-
+/**
+**     
+**/
        /*
         ok Button
        */
-       wxButton                *okBtn;
+       //wxButton                      *okBtn;
+       wxBitmapButton          *okBtn;
        /*
         cancel Button
        */
-       wxButton                *cancelBtn;
+       //wxButton                      *cancelBtn;
+       wxBitmapButton          *cancelBtn;
        /*
         save Button
        */
-       wxButton                *saveDataBtn;   
+       wxButton                                *saveDataBtn;   
        /*
        Load Button
        */
-       wxButton                *loadDataBtn;
+       wxButton                                *loadDataBtn;
        /*
        Refresh Button
        */
-       wxButton                *refreshBtn;
+       wxButton                                *refreshBtn;
 
+       wxPanel                         *_panextracontrols;
        
        
        // the user had pressed refresh
        bool refreshed;
        
-       vtkColorTransferFunction                        *_ctfun;
+       vtkColorTransferFunction                *_ctfun;
        vtkPiecewiseFunction                            *_tfun;
-       vtkVolumeRayCastMapper                          *volumeMapper; 
+       vtkVolumeRayCastMapper                  *volumeMapper; 
        vtkVolume                                                       *newvol;
 
        //things to refresh
-       wxVtkMPR3DView                                          *wxvtkmpr3Dview;
-       wxVtkClipping3DView                                     *wxvtkclipping3Dview;
+       //wxVtkMPR3DView                                        *wxvtkmpr3Dview;
+       //wxVtkClipping3DView                   *wxvtkclipping3Dview;
+
+       
+       wxSizer* getControls(bool extracontrols = false);
+
        
        
 //     DECLARE_CLASS(HistogramDialog);
        // any class wishing to process wxWindows events must use this macro
        //DECLARE_EVENT_TABLE()
+
+       void initializeHistogramDialog(bool extracontrols);
+
+        wxPanel* getPanExtraControls();
+
+        std::vector<wxBitmapButton*> bitmapbuttonsvect;
+        std::vector<HistogramDialogComboBoxItem*> _comboitems;
+
+        void setCurrentColorConfigurationIntoButton();
+        void AddNewBitmapButton();
+        wxSizer* getBitmapButtonDelete(wxBitmap bitmap);
+        std::vector<wxBitmapButton*> _deletebuttonsvector;
+
+        int _maxgreyvalue;
+        int _currentcolorselectedbitmap;
 };
 
 #endif