+wxPanel* HistogramDialog::getPanExtraControls(){
+ wxBoxSizer* sizer0 = new wxBoxSizer(wxVERTICAL);
+ _panextracontrols = new wxPanel(this);
+
+ _panextracontrols->SetSizer(sizer0);
+ _panextracontrols->SetAutoLayout(true);
+
+ return _panextracontrols;
+}
+/**
+** Set to true in the constructor
+**/
+void HistogramDialog::setInfoPanExtraControls(std::vector<HistogramDialogComboBoxItem*> comboitems){
+ _comboitems = comboitems;
+ if(_panextracontrols!=NULL){
+ _panextracontrols->Show(false);
+ for(int i=0; i < comboitems.size();i++){
+
+ wxBitmap bitmap = comboitems[i]->GetBitmap();
+
+
+ _panextracontrols->GetSizer()->Add(getBitmapButtonDelete(bitmap),wxSizerFlags().Center());
+ _panextracontrols->GetSizer()->AddSpacer(5);
+
+ }
+
+ wxButton* button = new wxButton(_panextracontrols,wxID_ANY);
+ button->SetToolTip(wxString("Add the current color to the list of predefined",wxConvUTF8));
+ button->SetLabel(wxString(_T("Add")));
+ Connect(button->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&HistogramDialog::OnEditColorsCombo);
+ _panextracontrols->GetSizer()->Add(button);
+ _panextracontrols->Layout();
+ _panextracontrols->Refresh();
+ _panextracontrols->Show(true);
+ this->Layout();
+ this->Refresh();
+
+ }
+}
+wxSizer* HistogramDialog::getBitmapButtonDelete(wxBitmap bitmap){
+ //wxCheckBox* checkbox = new wxCheckBox(_panextracontrols,wxID_ANY,_T(""));
+ wxBitmap bitmap0(Delete_xpm);
+ wxBitmapButton* deletebutton = new wxBitmapButton(_panextracontrols,wxID_ANY,bitmap0,wxDefaultPosition,wxSize(20,20));
+ deletebutton->SetToolTip(wxString("Delete the color from the list",wxConvUTF8));
+ Connect(deletebutton->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&HistogramDialog::OnDeleteColor);
+ _deletebuttonsvector.push_back(deletebutton);
+
+ //wxBitmap bitmap0(OpenImage_xpm);
+ wxBitmapButton* button = new wxBitmapButton(_panextracontrols,wxID_ANY,bitmap,wxDefaultPosition,wxSize(30,30));
+ button->SetToolTip(wxString("Load the current color configuration.",wxConvUTF8));
+ bitmapbuttonsvect.push_back(button);
+ Connect(button->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&HistogramDialog::OnEditColorsCombo);
+ /*char c[10];
+ wxString s;
+ s.Printf(_T("%d"),i);*/
+
+ //button->SetBitmapLabel(comboitems[i]->GetBitmap());
+ // wxStaticBitmap* button = new wxStaticBitmap(_panextracontrols,i,comboitems[i]->GetBitmap(),wxDefaultPosition,wxSize(30,30));
+ wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);
+ sizer->Add(button,wxSizerFlags().Center());
+ sizer->AddSpacer(5);
+ sizer->Add(deletebutton,wxSizerFlags().Center());
+ return sizer;
+}
+void HistogramDialog::OnDeleteColor(wxCommandEvent& event){
+ for(int i = 0; i < _deletebuttonsvector.size();i++){
+ if(event.GetId()==_deletebuttonsvector[i]->GetId()){
+ _currentcolorselectedbitmap = -1;
+ //this->eraseColorPoints();
+ //this->erasePointsTransferenceFunction();
+ HistogramDialogComboBoxItem* temp;
+ temp = _comboitems[i];
+ _deletebuttonsvector[i]->Hide();
+ bitmapbuttonsvect[i]->Hide();
+ delete temp;
+ //Remove buttons
+ _panextracontrols->GetSizer()->Remove(i*2);
+ //Remove Space
+ _panextracontrols->GetSizer()->Remove(i*2);
+ for(int k = i; k < _comboitems.size()-1;k++){
+ _comboitems[k] = _comboitems[k+1];
+ _deletebuttonsvector[k] = _deletebuttonsvector[k+1];
+ bitmapbuttonsvect[k] = bitmapbuttonsvect[k+1];
+ }
+ _comboitems.pop_back();
+ _deletebuttonsvector.pop_back();
+ bitmapbuttonsvect.pop_back();
+ }
+ }
+ _panextracontrols->Layout();
+}
+void HistogramDialog::OnEditColorsCombo(wxCommandEvent& event){
+ bool loadconfig = false;
+ UpdateCurrentComboElement();
+ for(int i = 0; i < bitmapbuttonsvect.size();i++){
+ if(event.GetId()==bitmapbuttonsvect[i]->GetId()){
+ if(i<_comboitems.size()){
+ _currentcolorselectedbitmap = i;
+ loadconfig = true;
+ HistogramDialogComboBoxItem* currentconfig = _comboitems[i];
+ std::vector<double> greyvect = currentconfig->getGreyVector();
+ std::vector<double> _redvect = currentconfig->getRedVector();
+ std::vector<double> _greenvect = currentconfig->getGreenVector();
+ std::vector<double> _bluevect= currentconfig->getBlueVector();
+ this->eraseColorPoints();
+ this->erasePointsTransferenceFunction();
+ for(int i = 0; i < currentconfig->getGreyVector().size();i++){
+ double greyv = currentconfig->getGreyVector()[i];
+ double red = currentconfig->getRedVector()[i];
+ double green = currentconfig->getGreenVector()[i];
+ double blue = currentconfig->getBlueVector()[i];
+
+ this->addColorPoint(greyv*_maxgreyvalue, red*255.0, green*255.0, blue*255.0);
+ }
+ for(int i = 0; i < currentconfig->getGreyVectorTransfer().size();i++){
+ double greyv = currentconfig->getGreyVectorTransfer()[i];
+ double value = currentconfig->getValueVector()[i];
+ std::cout<<"void HistogramDialog::OnEditColorsCombo(wxCommandEvent& event){"<<greyv<<" "<<value<<std::endl;
+ this->addPointToTransferenceFunction(greyv*_maxgreyvalue, value*100);
+ }
+ }
+ }
+ }
+ if(!loadconfig){
+ AddNewBitmapButton();
+ }
+
+ _panextracontrols->Layout();
+ this->Layout();
+ this->Refresh();
+}
+void HistogramDialog::UpdateCurrentComboElement(){
+ if(_currentcolorselectedbitmap >= 0 && _currentcolorselectedbitmap < _comboitems.size()){
+ setCurrentColorConfigurationIntoButton();
+ }
+}
+void HistogramDialog::AddNewBitmapButton(){
+ this->eraseColorPoints();
+ this->erasePointsTransferenceFunction();
+ HistogramDialogComboBoxItem* boxitem = new HistogramDialogComboBoxItem();
+ wxBitmap bitmap = boxitem->GetBitmap();
+ wxSizer* sizer = getBitmapButtonDelete(bitmap);
+ _panextracontrols->GetSizer()->Insert(_comboitems.size()*2,sizer,wxSizerFlags().Center());
+ _panextracontrols->GetSizer()->InsertSpacer(_comboitems.size()*2+1,5);
+ _comboitems.push_back(boxitem);
+ _currentcolorselectedbitmap = _comboitems.size()-1;
+}
+void HistogramDialog::setCurrentColorConfigurationIntoButton(){
+
+ std::vector<double> greylevel;
+ std::vector<double> red;
+ std::vector<double> green;
+ std::vector<double> blue;
+ std::vector<double> red0;
+ std::vector<double> green0;
+ std::vector<double> blue0;
+ GetValuesColorPointsFunction(greylevel,red,green,blue);
+
+ for(int i = 0;i< greylevel.size();i++){
+ greylevel[i] = greylevel[i]/_maxgreyvalue;
+ /*std::cout<<"HistogramDialog::setCurrentColorConfigurationIntoButton(){red"<<red[i]<<std::endl;
+ std::cout<<"HistogramDialog::setCurrentColorConfigurationIntoButton(){green"<<green[i]<<std::endl;
+ std::cout<<"HistogramDialog::setCurrentColorConfigurationIntoButton(){blue"<<blue[i]<<std::endl;*/
+ red0.push_back(red[i]);
+ green0.push_back(green[i]);
+ blue0.push_back(blue[i]);
+ /*std::cout<<"HistogramDialog::setCurrentColorConfigurationIntoButton(){red"<<red0[i]<<std::endl;
+ std::cout<<"HistogramDialog::setCurrentColorConfigurationIntoButton(){green"<<green0[i]<<std::endl;
+ std::cout<<"HistogramDialog::setCurrentColorConfigurationIntoButton(){blue"<<blue0[i]<<std::endl;*/
+ }
+
+ std::vector<double> greylevel1;
+ std::vector<double> value;
+ this->GetValuesPointsFunction(greylevel1,value);
+
+ for(int i = 0;i< greylevel1.size();i++){
+ greylevel1[i] = greylevel1[i]/_maxgreyvalue;
+ value[i] = value[i];
+ std::cout<<"void HistogramDialog::setCurrentColorConfigurationIntoButton(){"<<greylevel1[i]<<std::endl;
+ std::cout<<"void HistogramDialog::setCurrentColorConfigurationIntoButton(){"<<value[i]<<std::endl;
+ }
+ if(_currentcolorselectedbitmap >= 0 && _currentcolorselectedbitmap < _comboitems.size()){
+ _comboitems[_currentcolorselectedbitmap]->SetColors(greylevel,red0,green0,blue0);
+ _comboitems[_currentcolorselectedbitmap]->SetTransferFunction(greylevel1,value);
+ bitmapbuttonsvect[_currentcolorselectedbitmap]->SetBitmapLabel(_comboitems[_currentcolorselectedbitmap]->GetBitmap());
+ }
+}
+
+wxSizer* HistogramDialog::getControls(bool extracontrols){
+
+ wxSizer* sizer = new wxBoxSizer(wxVERTICAL);
+
+ wxBitmap bitmap0(OpenImage_xpm);
+ wxBitmapButton* opendata = new wxBitmapButton(this, -1, bitmap0,wxDefaultPosition,wxSize(30,30));
+ Connect(opendata->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&HistogramDialog::OnLoadData);
+ sizer->Add(opendata,wxSizerFlags().Center());
+ sizer->AddSpacer(5);
+
+
+
+ wxBitmap bitmap1(Save_xpm);
+ wxBitmapButton* savedata = new wxBitmapButton(this, -1, bitmap1,wxDefaultPosition,wxSize(30,30));
+ Connect(savedata->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&HistogramDialog::OnSaveData);
+ sizer->Add(savedata,wxSizerFlags().Center());
+ sizer->AddSpacer(5);
+
+ if(extracontrols){
+ sizer->Add(getPanExtraControls(),wxSizerFlags().Center());
+ }
+ //sizer->Add(getBitmapCombo(),wxSizerFlags().Center());
+
+
+
+ return sizer;
+
+
+}