X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FpPlotter%2FHistogramDialogComboBox.cxx;h=4730763c14a87ca48b1c1c69414c7d7a683c04eb;hb=24937478048aca664712bb708240bff79879e0d9;hp=6c8dcd3ed31f210f6e140c88829beee1d50b005c;hpb=67508e2c541ebe1a7ab4f3a401fcb8bb53984fc8;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialogComboBox.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialogComboBox.cxx index 6c8dcd3..4730763 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialogComboBox.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialogComboBox.cxx @@ -11,62 +11,151 @@ HistogramDialogComboBox::HistogramDialogComboBox(wxWindow* parent) : wxPanel(parent) { + _img = NULL; + _bitmapcombo = NULL; + _slidercolor = NULL; + _sliderwindowlevel = NULL; + colorBar_Bitmap = NULL; + _bitmapsizer = NULL; this->SetSizer(getBitmapCombo()); - _img = NULL; - _currentitem = -1; - _maxgreyvalue=0; + _img = NULL; + _currentitem = -1; + _maxgreyvalue = 0; +printf("EED HistogramDialogComboBox\n"); +#ifdef LINUX + std::string currentpath = crea::System::GetExecutablePath(); + currentpath.append("/data/"); + crea::System::createDirectory(currentpath.c_str()); +#endif } -HistogramDialogComboBox::~HistogramDialogComboBox(){ - - +HistogramDialogComboBox::~HistogramDialogComboBox() +{ } -void HistogramDialogComboBox::SetColors(std::vector greyvect, std::vector redvect, std::vector greenvect, std::vector bluevect){ - _greyvect=greyvect; - _redvect=redvect; - _greenvect=greenvect; - _bluevect=bluevect; - +void HistogramDialogComboBox::SetColors(std::vector greyvect, std::vector redvect, std::vector greenvect, std::vector bluevect) +{ + _greyvect = greyvect; + _redvect = redvect; + _greenvect = greenvect; + _bluevect = bluevect; } +wxSizer* HistogramDialogComboBox::getBitmapCombo() +{ + //_bitmapsizer = new wxBoxSizer(wxVERTICAL); + _bitmapsizer = new wxBoxSizer(wxVERTICAL); -wxSizer* HistogramDialogComboBox::getBitmapCombo(){ - _bitmapsizer = new wxBoxSizer(wxHORIZONTAL); - + wxBoxSizer* comboeditsizer = new wxBoxSizer(wxHORIZONTAL); _bitmapcombo = getBitmapComboElements(); wxBitmap bitmap1(Edit_xpm); 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; - } -void HistogramDialogComboBox::setImageData(vtkImageData* img){ - _maxgreyvalue = img->GetScalarRange()[1]; - _img = img; + +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; } -void HistogramDialogComboBox::OnEditBitmapCombo(wxCommandEvent& event){ - + +double HistogramDialogComboBox::GetWindowLevel() +{ + double val(0.0); + if(_sliderwindowlevel != NULL) + val= _sliderwindowlevel->GetValue(); + return val; // JPR +} + +double HistogramDialogComboBox::GetColorLevel() +{ + double val(0.0); + if(_slidercolor != NULL) + val = _slidercolor->GetValue(); + return val; // JPR +} + +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){ - + if(dialog->ShowModal()==wxID_OK) + { dialog->UpdateCurrentComboElement(); _bitmapsitems = dialog->getComboBoxItems(); - - std::string currentpath = crea::System::GetDllAppPath("bbcreaMaracasVisu"); + //std::string currentpath = crea::System::GetDllAppPath("bbcreaMaracasVisu"); // JPR + std::string dllLastName; + std::string currentpath; + #ifdef WIN32 + dllLastName = "bbcreaMaracasVisu"; + currentpath = crea::System::GetDllAppPath(dllLastName); + #endif + #ifdef LINUX + currentpath = crea::System::GetExecutablePath(); + currentpath.append("/data/"); + #endif currentpath.append(FILENAME); std::vector redvect,greenvect,bluevect; @@ -87,29 +176,27 @@ void HistogramDialogComboBox::OnEditBitmapCombo(wxCommandEvent& event){ } dialog->Destroy(); } - - - } -void HistogramDialogComboBox::saveCurrentConfiguration(std::vector& itembitmaps,std::string filename){ +void HistogramDialogComboBox::saveCurrentConfiguration(std::vector& itembitmaps,std::string filename) +{ std::ofstream file; file.open( (const char*) (filename.c_str()) ); double gv=-1,red=-1,gr=-1,bl=-1; int in=-1; - - if(file.is_open()) { file << "" << std::endl; - for(int i = 0; i < itembitmaps.size();i++){ + for(int i = 0; i < itembitmaps.size();i++) + { HistogramDialogComboBoxItem* item = itembitmaps[i]; std::vector vecttransfer = item->getGreyVectorTransfer(); std::vector value = item->getValueVector(); file << " "<< std::endl; - for(int j = 0; j < vecttransfer.size();j++){ + for(int j = 0; j < vecttransfer.size();j++) + { if(j==0){ file << " "<< std::endl; } @@ -140,61 +227,66 @@ void HistogramDialogComboBox::saveCurrentConfiguration(std::vector" << std::endl; } } - file << " "<< std::endl; - } - file << "" << std::endl; - + file << "" << std::endl; } file.close(); - } -wxBitmapComboBox* HistogramDialogComboBox::getBitmapComboElements(){ - std::string currentpath = crea::System::GetDllAppPath("bbcreaMaracasVisu"); +wxBitmapComboBox* HistogramDialogComboBox::getBitmapComboElements() +{ + std::string currentpath = ""; +#ifdef WIN32 + currentpath = crea::System::GetDllAppPath("bbcreaMaracasVisu"); +#endif +#ifdef LINUX + currentpath = crea::System::GetExecutablePath(); + currentpath.append("/data/"); +#endif currentpath.append(FILENAME); + + std::cout<<"current file name " < bitmapsitems; OnLoadComboBoxData(bitmapsitems, currentpath); _bitmapsitems = bitmapsitems; wxString* choices; choices = new wxString[bitmapsitems.size()]; - for(int i = 0; i < bitmapsitems.size();i++){ + for(int i = 0; i < bitmapsitems.size();i++) + { choices[i] = _T(""); } wxBitmapComboBox* bitmapcombo = new wxBitmapComboBox(this, -1, _T(""), wxDefaultPosition, wxDefaultSize, bitmapsitems.size(),choices); bitmapcombo->SetSize(65,30); Connect(bitmapcombo->GetId(), wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction)&HistogramDialogComboBox::OnBitmapComboItemSelected); - - for(int i = 0; i < bitmapsitems.size(); i++){ + for(int i = 0; i < bitmapsitems.size(); i++) + { bitmapcombo->SetItemBitmap(i, bitmapsitems[i]->GetBitmap()); } - - return bitmapcombo; } -void HistogramDialogComboBox::OnBitmapComboItemSelected(wxCommandEvent& event){ - - if(_bitmapcombo!=NULL){ + +void HistogramDialogComboBox::OnBitmapComboItemSelected(wxCommandEvent& event) +{ + if(_bitmapcombo!=NULL) + { _currentitem = event.GetInt(); - if(_bitmapsitems.size()>_currentitem){ + if(_bitmapsitems.size()>_currentitem) + { HistogramDialogComboBoxItem* currentconfig = _bitmapsitems[_currentitem]; _greyvect = currentconfig->getGreyVector(); _redvect = currentconfig->getRedVector(); _greenvect = currentconfig->getGreenVector(); _bluevect= currentconfig->getBlueVector(); - _greyvecttransfer = currentconfig->getGreyVectorTransfer(); _value = currentconfig->getValueVector(); wxCommandEvent newevent(wxEVT_COMMAND_COMBOBOX_SELECTED,this->GetId()); ProcessEvent(newevent); - } - + } } - } void HistogramDialogComboBox::OnLoadComboBoxData(std::vector& itembitmaps, std::string filename) @@ -226,86 +318,82 @@ void HistogramDialogComboBox::OnLoadComboBoxData(std::vector")!=-1)) - { - item = new HistogramDialogComboBoxItem(); - }else if((int)(line.find(""))!=-1){ - int pos1=line.find(">"); - int pos2=line.find("<",pos1+1); - std::string x=line.substr(pos1+1,pos2-pos1-1); - gvtransfer=atof(x.c_str()); - greyvecttransfunct.push_back(gvtransfer); - }else if((int)(line.find(""))!=-1){ - int pos1=line.find(">"); - int pos2=line.find("<",pos1+1); - std::string x=line.substr(pos1+1,pos2-pos1-1); - intensity=atof(x.c_str()); - value.push_back(intensity); - } - else if( (int)(line.find(""))!=-1) - { - int pos1=line.find(">"); - int pos2=line.find("<",pos1+1); - std::string x=line.substr(pos1+1,pos2-pos1-1); - gv=atof(x.c_str()); - greyvect.push_back(gv); - } - else if( (int)(line.find(""))!=-1) - { - int pos1=line.find(">"); - int pos2=line.find("<",pos1+1); - std::string x=line.substr(pos1+1,pos2-pos1-1); - red=atof(x.c_str()); - redvect.push_back(red); - } - else if( (int)(line.find(""))!=-1) - { - int pos1=line.find(">"); - int pos2=line.find("<",pos1+1); - std::string x=line.substr(pos1+1,pos2-pos1-1); - gr=atof(x.c_str()); - greenvect.push_back(gr); - } - else if( (int)(line.find(""))!=-1 ) - { - int pos1=line.find(">"); - int pos2=line.find("<",pos1+1); - std::string x=line.substr(pos1+1,pos2-pos1-1); - bl=atof(x.c_str()); - bluevect.push_back(bl); + { + item = new HistogramDialogComboBoxItem(); + }else if((int)(line.find(""))!=-1) { + int pos1=line.find(">"); + int pos2=line.find("<",pos1+1); + std::string x=line.substr(pos1+1,pos2-pos1-1); + gvtransfer=atof(x.c_str()); + greyvecttransfunct.push_back(gvtransfer); + }else if((int)(line.find(""))!=-1) { + int pos1=line.find(">"); + int pos2=line.find("<",pos1+1); + std::string x=line.substr(pos1+1,pos2-pos1-1); + intensity=atof(x.c_str()); + value.push_back(intensity); + } + else if( (int)(line.find(""))!=-1) + { + int pos1=line.find(">"); + int pos2=line.find("<",pos1+1); + std::string x=line.substr(pos1+1,pos2-pos1-1); + gv=atof(x.c_str()); + greyvect.push_back(gv); + } + else if( (int)(line.find(""))!=-1) + { + int pos1=line.find(">"); + int pos2=line.find("<",pos1+1); + std::string x=line.substr(pos1+1,pos2-pos1-1); + red=atof(x.c_str()); + redvect.push_back(red); + } + else if( (int)(line.find(""))!=-1) + { + int pos1=line.find(">"); + int pos2=line.find("<",pos1+1); + std::string x=line.substr(pos1+1,pos2-pos1-1); + gr=atof(x.c_str()); + greenvect.push_back(gr); + } + else if( (int)(line.find(""))!=-1 ) + { + int pos1=line.find(">"); + int pos2=line.find("<",pos1+1); + std::string x=line.substr(pos1+1,pos2-pos1-1); + bl=atof(x.c_str()); + bluevect.push_back(bl); - }else if( (int)(line.find(""))!=-1 ){ + }else if( (int)(line.find(""))!=-1 ) { - item->SetColors(greyvect,redvect,greenvect,bluevect); - item->SetTransferFunction(greyvecttransfunct,value); - for(int i = 0; i < greyvecttransfunct.size();i++){ + item->SetColors(greyvect,redvect,greenvect,bluevect); + item->SetTransferFunction(greyvecttransfunct,value); + /*for(int i = 0; i < greyvecttransfunct.size();i++){ std::cout<<"HistogramDialogComboBox::OnLoadComboBoxData("<& greylevel,std::vector& value) { - for(int i = 0; i < _greyvecttransfer.size();i++){ + 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 +415,11 @@ void HistogramDialogComboBox::GetValuesColorPointsFunction(std::vector& std::vector& red, std::vector& green, std::vector& blue) -{ - - for(int i = 0; i < _greyvect.size();i++){ +{ + 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 +}