]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialogComboBox.cxx
*** empty log message ***
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / pPlotter / HistogramDialogComboBox.cxx
index 6c8dcd3ed31f210f6e140c88829beee1d50b005c..2809b4e7c5c17c6bd1a99a7fdb8bf7bf3fb0bb98 100644 (file)
 HistogramDialogComboBox::HistogramDialogComboBox(wxWindow* parent)
 : wxPanel(parent)
 {
+       _img = NULL;    
+       _bitmapcombo=NULL;
+       _slidercolor=NULL;
+       _sliderwindowlevel=NULL;        
+       colorBar_Bitmap=NULL;
+       _bitmapsizer=NULL;
 
        this->SetSizer(getBitmapCombo());
        _img = NULL;
@@ -18,10 +24,9 @@ HistogramDialogComboBox::HistogramDialogComboBox(wxWindow* parent)
        _maxgreyvalue=0;
 }
 
-HistogramDialogComboBox::~HistogramDialogComboBox(){
-       
-       
+HistogramDialogComboBox::~HistogramDialogComboBox(){   
 }
+
 void HistogramDialogComboBox::SetColors(std::vector<double> greyvect, std::vector<double> redvect, std::vector<double> greenvect, std::vector<double> bluevect){
 
        _greyvect=greyvect;
@@ -31,9 +36,13 @@ void HistogramDialogComboBox::SetColors(std::vector<double> greyvect, std::vecto
        
 }
 
-
 wxSizer* HistogramDialogComboBox::getBitmapCombo(){
-       _bitmapsizer = new wxBoxSizer(wxHORIZONTAL);
+       //_bitmapsizer = new wxBoxSizer(wxVERTICAL);
+       _bitmapsizer = new wxBoxSizer(wxVERTICAL);
+
+       
+
+       wxBoxSizer* comboeditsizer = new wxBoxSizer(wxHORIZONTAL);
 
        _bitmapcombo = getBitmapComboElements();
 
@@ -41,23 +50,87 @@ wxSizer* HistogramDialogComboBox::getBitmapCombo(){
        wxBitmapButton* edit = new wxBitmapButton(this, -1, bitmap1,wxDefaultPosition,wxSize(30,30));   
        Connect(edit->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&HistogramDialogComboBox::OnEditBitmapCombo);                       
        
-       _bitmapsizer->Add(_bitmapcombo,wxSizerFlags().Center().FixedMinSize());
-       _bitmapsizer->Add(edit,wxSizerFlags().Center());
+       comboeditsizer->Add(_bitmapcombo,wxSizerFlags().Center().FixedMinSize());
+       comboeditsizer->Add(edit,wxSizerFlags().Center());
+
+
+       _bitmapsizer->Add(comboeditsizer,wxSizerFlags().FixedMinSize().Center());
+       _bitmapsizer->AddSpacer(5);
+       _bitmapsizer->Add(getSlidersWlCo(),wxSizerFlags().Expand().Center());
 
        return _bitmapsizer;
        
 }
+wxSizer* HistogramDialogComboBox::getSlidersWlCo(){
+       wxBoxSizer* sizersliders = new wxBoxSizer(wxVERTICAL);
+
+       _slidercolor = new wxSlider(this, -1,1,0,1,wxDefaultPosition,wxDefaultSize,wxSL_LABELS);
+       _sliderwindowlevel = new wxSlider(this, -1,1,0,1,wxDefaultPosition,wxDefaultSize,wxSL_LABELS);
+
+       sizersliders->Add(_slidercolor,wxSizerFlags().Expand().Center());
+       sizersliders->Add(_sliderwindowlevel,wxSizerFlags().Expand().Center());
+
+    Connect(_slidercolor->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&HistogramDialogComboBox::OnColorLevelChanged);
+       Connect(_sliderwindowlevel->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&HistogramDialogComboBox::OnWindowLevelChanged);
+
+       return sizersliders;
+}
+
+double HistogramDialogComboBox::GetWindowLevel(){
+       if(_sliderwindowlevel != NULL){
+               return _sliderwindowlevel->GetValue();
+       }
+}
+
+double HistogramDialogComboBox::GetColorLevel(){
+    if(_slidercolor != NULL){
+               return _slidercolor->GetValue();
+       }    
+}
+
+void HistogramDialogComboBox::OnColorLevelChanged(wxCommandEvent& event){
+       _slidercolor->GetValue();
+
+       wxCommandEvent newevent(wxEVT_SCROLL_THUMBTRACK,this->GetId());
+       ProcessEvent(newevent);
+
+}
+void HistogramDialogComboBox::OnWindowLevelChanged(wxCommandEvent& event){
+       _sliderwindowlevel->GetValue();
+
+       wxCommandEvent newevent(wxEVT_SCROLL_THUMBTRACK,this->GetId());
+    ProcessEvent(newevent);
+
+}
+
 void HistogramDialogComboBox::setImageData(vtkImageData* img){
        _maxgreyvalue = img->GetScalarRange()[1];
        _img = img;
+
+       setSlidersValue();
+
 }
+
+void HistogramDialogComboBox::setSlidersValue(){
+       if(_img!=NULL){
+               if(_slidercolor!=NULL){
+                       _slidercolor->SetRange(_img->GetScalarRange()[0],_img->GetScalarRange()[1]);
+                       _slidercolor->SetValue((_img->GetScalarRange()[0]+_img->GetScalarRange()[1])/2);
+               }
+               if(_sliderwindowlevel!=NULL){
+                       _sliderwindowlevel->SetRange(_img->GetScalarRange()[0],_img->GetScalarRange()[1]);
+                       _sliderwindowlevel->SetValue((_img->GetScalarRange()[0]+_img->GetScalarRange()[1])/2);
+               }
+       }
+}
+
 void HistogramDialogComboBox::OnEditBitmapCombo(wxCommandEvent& event){
        
        if(_img!=NULL){
 
                bool createaddandremovecontrols = true;
                HistogramDialog* dialog = new HistogramDialog(this,_T("Color Configuration"),createaddandremovecontrols);
-        dialog->initializeHistogram(_img);             
+               dialog->initializeHistogram(_img);              
                dialog->setInfoPanExtraControls(_bitmapsitems);
 
                if(dialog->ShowModal()==wxID_OK){
@@ -87,10 +160,8 @@ void HistogramDialogComboBox::OnEditBitmapCombo(wxCommandEvent& event){
                }       
                dialog->Destroy();
        }
-       
-
-       
 }
+
 void HistogramDialogComboBox::saveCurrentConfiguration(std::vector<HistogramDialogComboBoxItem*>& itembitmaps,std::string filename){
 
        std::ofstream file;     
@@ -98,8 +169,6 @@ void HistogramDialogComboBox::saveCurrentConfiguration(std::vector<HistogramDial
        double gv=-1,red=-1,gr=-1,bl=-1;
        int in=-1;
 
-       
-
        if(file.is_open())
        {
                file << "<ComboBoxData>" << std::endl;
@@ -140,12 +209,9 @@ void HistogramDialogComboBox::saveCurrentConfiguration(std::vector<HistogramDial
                                        file << "       </Colors>" << std::endl;
                                }
                        }
-
                        file << "       </ComboBoxItem>"<< std::endl;           
-
                }
-               file << "</ComboBoxData>" << std::endl;
-               
+               file << "</ComboBoxData>" << std::endl; 
        }
        file.close();
 
@@ -167,13 +233,10 @@ wxBitmapComboBox* HistogramDialogComboBox::getBitmapComboElements(){
        bitmapcombo->SetSize(65,30);
 
        Connect(bitmapcombo->GetId(), wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction)&HistogramDialogComboBox::OnBitmapComboItemSelected);                     
-       
 
        for(int i = 0; i < bitmapsitems.size(); i++){
         bitmapcombo->SetItemBitmap(i, bitmapsitems[i]->GetBitmap());
        }
-
-       
        return  bitmapcombo;
 }
 void HistogramDialogComboBox::OnBitmapComboItemSelected(wxCommandEvent& event){
@@ -191,10 +254,8 @@ void HistogramDialogComboBox::OnBitmapComboItemSelected(wxCommandEvent& event){
                        _value  = currentconfig->getValueVector();
                        wxCommandEvent newevent(wxEVT_COMMAND_COMBOBOX_SELECTED,this->GetId());
             ProcessEvent(newevent);
-               }
-               
+               }       
        }
-       
 }
 
 void HistogramDialogComboBox::OnLoadComboBoxData(std::vector<HistogramDialogComboBoxItem*>& itembitmaps, std::string filename)
@@ -277,7 +338,7 @@ void HistogramDialogComboBox::OnLoadComboBoxData(std::vector<HistogramDialogComb
 
                                item->SetColors(greyvect,redvect,greenvect,bluevect);
                                item->SetTransferFunction(greyvecttransfunct,value);
-                               for(int i = 0; i < greyvecttransfunct.size();i++){
+                               /*for(int i = 0; i < greyvecttransfunct.size();i++){
                                        std::cout<<"HistogramDialogComboBox::OnLoadComboBoxData("<<greyvecttransfunct[i]<<std::endl;
                                        std::cout<<value[i]<<std::endl;
                                }
@@ -286,26 +347,22 @@ void HistogramDialogComboBox::OnLoadComboBoxData(std::vector<HistogramDialogComb
                                        std::cout<<redvect[i]<<std::endl;
                                        std::cout<<greenvect[i]<<std::endl;
                                        std::cout<<bluevect[i]<<std::endl;
-                               }
+                               }*/
                                
                                itembitmaps.push_back(item);
 
-
                                greyvecttransfunct.clear();
                                value.clear();
                                greyvect.clear();
                                redvect.clear();
                                greenvect.clear();
                                bluevect.clear();
-
                        }
-                       
                        line.clear();
                }
                file.close();                   
                //std::cout<<itembitmaps.size()<<std::endl;
-     } 
-       
+     }         
 }
 
 /**
@@ -315,9 +372,7 @@ void HistogramDialogComboBox::GetValuesPointsFunction(std::vector<double>& greyl
 {      
        for(int i = 0; i < _greyvecttransfer.size();i++){               
                greylevel.push_back(_greyvecttransfer[i]*_maxgreyvalue);
-               value.push_back(_value[i]);
-
-               
+               value.push_back(_value[i]);     
        }
 }
 
@@ -329,12 +384,11 @@ void HistogramDialogComboBox::GetValuesColorPointsFunction(std::vector<double>&
                                                                std::vector<double>& red,
                                                                std::vector<double>& green,
                                                                std::vector<double>& blue)
-{
-       
+{      
        for(int i = 0; i < _greyvect.size();i++){               
                greylevel.push_back(_greyvect[i]*_maxgreyvalue);
                red.push_back(_redvect[i]);
                green.push_back(_greenvect[i]);
                blue.push_back(_bluevect[i]);           
        }
-}
\ No newline at end of file
+}