]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramWidget.cxx
DFCH: Manual paint changes!
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / pPlotter / HistogramWidget.cxx
index affe13c876cbe3c28c0a631115771bc2ce2acfc8..d3dbfc46b1898b5599aa4500d64b48504cd3cb73 100644 (file)
@@ -8,6 +8,7 @@
  #include "HistogramWidget.h"
  #include  "vtkImageCast.h"
  #include  <math.h>
+
 // ----------------------------------------------------------------------------
 // WX headers inclusion.
 // For compilers that support precompilation, includes <wx/wx.h>.
@@ -15,8 +16,9 @@
 
        #ifndef WX_PRECOMP
        #include <wx/wx.h>
-       #endif
 
+       #endif
+#include <wx/bitmap.h>
 //----------------------------------------------------------------------------
 // Class implementation
 //----------------------------------------------------------------------------
@@ -41,15 +43,16 @@ HistogramWidget::HistogramWidget( wxWindow *parent, wxWindowID id, const wxPoint
        }
  */
        HistogramWidget::HistogramWidget( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, int flag,vtkImageData* imageData,int type):
-       wxPanel(parent,id,pos,size,flag)
+       wxPanel(parent,id,wxDefaultPosition,wxDefaultSize)
        {
                 SetBackgroundColour(wxColour(255,255,255));
                //histogram
                histogram= new pHistogram(imageData);
+
                
                //plotter
                plotter=new pPlotter(this, 400,350);
-
+               
                //is a plotter of histograms
                plotter->setType(2);
                //setting the popMenu
@@ -59,14 +62,55 @@ HistogramWidget::HistogramWidget( wxWindow *parent, wxWindowID id, const wxPoint
                idHistogram=-1;
                transferenceFunctionHasColor=true;
                transferenceFunctionHasPoints=true;
-               this->type=type;;
+               this->type=type;
                
+               this->SetAutoLayout(true);
+               this->Refresh();
+        
                //drawing
                drawHistogram();
                drawTransferenceFunction();
                
        }
 
+       HistogramWidget::HistogramWidget( wxWindow *parent, wxWindowID id)
+               : wxPanel(parent,id){
+
+
+                       SetBackgroundColour(wxColour(255,255,255));
+                       histogram = NULL;       
+                       
+                       
+                       //plotter
+                       plotter=new pPlotter(this, 400,350);
+                       
+                       //is a plotter of histograms
+                       plotter->setType(2);
+                       //setting the popMenu
+                       plotter->setPopUpMenu(true,true,true,true,true,true,false,false,false,false,false,false,false);
+                       histogramSize=0;
+                       idTransferenceFunction=-1;
+                       idHistogram=-1;
+                       transferenceFunctionHasColor=true;
+                       transferenceFunctionHasPoints=true;
+                       this->type=type;;
+                       this->SetAutoLayout(true);
+                       this->Refresh();
+               
+                               
+       }
+
+       
+       
+       void HistogramWidget::initializeHistogram(vtkImageData* img){
+               if(histogram ==NULL){
+                       histogram= new pHistogram(img);
+               }               
+               //draw
+               drawHistogram();
+               drawTransferenceFunction();
+       }
+
        HistogramWidget::~HistogramWidget()
        {
                delete histogram;
@@ -269,7 +313,7 @@ HistogramWidget::HistogramWidget( wxWindow *parent, wxWindowID id, const wxPoint
        {
                bool result=false;
                pGraphicalFunction* tf=plotter->getFunction(idTransferenceFunction);
-printf("EED %p HistogramWidget::addPointToTransferenceFunction tp%p x%f y%f %d\n",this, tf, x ,y, idTransferenceFunction);
+//printf("EED %p HistogramWidget::addPointToTransferenceFunction tp%p x%f y%f %d\n",this, tf, x ,y, idTransferenceFunction);
                if (tf!=NULL) { result=tf->AddPoint(x,y); }
                
                return result;
@@ -350,4 +394,21 @@ printf("EED %p HistogramWidget::addPointToTransferenceFunction tp%p x%f y%f %d\n
                this->type=type;
        }
 
+/**
+**     Returns two vectors, the grey level of the point and its value, the value is between [0,1]
+**/
+       void HistogramWidget::GetValuesPointsFunction(std::vector<double>& greylevel,std::vector<double>& value){
+               plotter->GetValuesPointsFunction(greylevel,value,histogramSize);
+       }
 
+/**
+**     Returns two vectors, the grey level of the point and its value, the red, green
+**     and blue value is between [0,1]
+**/
+       void HistogramWidget::GetValuesColorPointsFunction(std::vector<double>& greylevel,
+                                                               std::vector<double>& red,
+                                                               std::vector<double>& green,
+                                                               std::vector<double>& blue)
+       {
+               plotter->GetValuesColorPointsFunction(greylevel,red,green,blue);
+       }