From: Juan Prieto Date: Fri, 7 Aug 2009 14:55:08 +0000 (+0000) Subject: TransferFunctionfinish X-Git-Tag: EED.02Oct2009~8 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=f70f07396065237d1d4fabea4e9524ad4d9c7d13;p=creaMaracasVisu.git TransferFunctionfinish --- diff --git a/bbtk/src/bbmaracasvisuTransferFunctionView.cxx b/bbtk/src/bbmaracasvisuTransferFunctionView.cxx index fb08960..733b91d 100644 --- a/bbtk/src/bbmaracasvisuTransferFunctionView.cxx +++ b/bbtk/src/bbmaracasvisuTransferFunctionView.cxx @@ -24,8 +24,9 @@ void TransferFunctionView::Process() if(_currentimg != bbGetInputIn()){ _currentimg = bbGetInputIn(); - mwxwidget->initializeHistogram(_currentimg); - mwxwidget->Refresh(); + //mwxwidget->initializeHistogram(_currentimg); + mwxwidget->setImageData(_currentimg); + //mwxwidget->Refresh(); } mwxwidget->GetValuesPointsFunction(greylevel, value); @@ -35,12 +36,12 @@ void TransferFunctionView::Process() _tfun->RemoveAllPoints(); for(int i = 0; i < greylevel.size();i++){ _tfun->AddPoint(greylevel[i], value[i]); -// std::cout<<"transfer function "<RemoveAllPoints(); for(int i = 0; i < greylevelcolors.size();i++){ _ctfun->AddRGBPoint(greylevelcolors[i], red[i],green[i], blue[i]); -// std::cout<<"transfer color function "<Add( histogramW, 4, wxGROW); - upper_box->Add( getControls(),wxSizerFlags().Center() ); + upper_box->Add( getControls(extracontrols),wxSizerFlags().Center() ); //bottom Sizer wxBoxSizer *bottomBox = new wxBoxSizer( wxHORIZONTAL ); @@ -102,194 +110,224 @@ void HistogramDialog::initializeHistogramDialog(){ SetSizer( sizer ); SetBestSize(wxSize(600,600)); } +wxPanel* HistogramDialog::getPanExtraControls(){ + wxBoxSizer* sizer0 = new wxBoxSizer(wxVERTICAL); + _panextracontrols = new wxPanel(this); -wxSizer* HistogramDialog::getControls(){ - - 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); - - sizer->Add(getBitmapCombo(),wxSizerFlags().Center()); - - - - return sizer; - + _panextracontrols->SetSizer(sizer0); + _panextracontrols->SetAutoLayout(true); + return _panextracontrols; } +/** +** Set to true in the constructor +**/ +void HistogramDialog::setInfoPanExtraControls(std::vector comboitems){ + _comboitems = comboitems; + if(_panextracontrols!=NULL){ + _panextracontrols->Show(false); + for(int i=0; i < comboitems.size();i++){ -wxSizer* HistogramDialog::getBitmapCombo(){ - _bitmapsizer = new wxBoxSizer(wxHORIZONTAL); - - _bitmapcombo = getBitmapComboElements(); + 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("Add the current color to the list of predefined"); + 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(); - wxBitmap bitmap1(Edit_xpm); - wxBitmapButton* edit = new wxBitmapButton(this, -1, bitmap1,wxDefaultPosition,wxSize(30,30)); - Connect(edit->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&HistogramDialog::OnEditBitmapCombo); + } +} +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("Delete the color from the list"); + Connect(deletebutton->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&HistogramDialog::OnDeleteColor); + _deletebuttonsvector.push_back(deletebutton); - _bitmapsizer->Add(_bitmapcombo,wxSizerFlags().Center().FixedMinSize()); - _bitmapsizer->Add(edit,wxSizerFlags().Center()); - - return _bitmapsizer; + //wxBitmap bitmap0(OpenImage_xpm); + wxBitmapButton* button = new wxBitmapButton(_panextracontrols,wxID_ANY,bitmap,wxDefaultPosition,wxSize(30,30)); + button->SetToolTip("Load the current color configuration."); + 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::OnEditBitmapCombo(wxCommandEvent& event){ - - wxBitmapComboBox* tempbitmapcombo = _bitmapcombo; - - for(int i = 0; i < _bitmapsitems.size();i++){ - delete _bitmapsitems[i]; - } - _bitmapsitems.clear(); - - _bitmapcombo = getBitmapComboElements(); - if(_bitmapsizer->Replace(tempbitmapcombo,_bitmapcombo)){ - - - tempbitmapcombo->Destroy(); +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(); + } } - this->Layout(); + _panextracontrols->Layout(); } - -wxBitmapComboBox* HistogramDialog::getBitmapComboElements(){ - std::string currentpath = crea::System::GetDllAppPath("bbcreaMaracasVisu"); - currentpath.append(FILENAME); - - std::vector redvect,greenvect,bluevect; - std::vector greyvect; - - - std::vector bitmapsitems; - OnLoadComboBoxData(bitmapsitems, currentpath,greyvect, redvect,greenvect,bluevect); - _bitmapsitems = bitmapsitems; - wxString* choices; - choices = new wxString[bitmapsitems.size()]; - for(int i = 0; i < bitmapsitems.size();i++){ - choices[i] = _T(""); +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 greyvect = currentconfig->getGreyVector(); + std::vector _redvect = currentconfig->getRedVector(); + std::vector _greenvect = currentconfig->getGreenVector(); + std::vector _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){"<addPointToTransferenceFunction(greyv*_maxgreyvalue, value*100); + } + } + } } - wxBitmapComboBox* bitmapcombo = new wxBitmapComboBox(this, -1, _T(""), wxDefaultPosition, wxDefaultSize, bitmapsitems.size(),choices); - - Connect(bitmapcombo->GetId(), wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction)&HistogramDialog::OnBitmapComboItemSelected); - - - for(int i = 0; i < bitmapsitems.size(); i++){ - bitmapcombo->SetItemBitmap(i, bitmapsitems[i]->GetBitmap()); + if(!loadconfig){ + AddNewBitmapButton(); } - - return bitmapcombo; + _panextracontrols->Layout(); + this->Layout(); + this->Refresh(); } -void HistogramDialog::OnBitmapComboItemSelected(wxCommandEvent& event){ - if(_bitmapcombo!=NULL){ - int selecteditem = event.GetInt(); - if(_bitmapsitems.size()>selecteditem){ - HistogramDialogComboBoxItem* currentconfig = _bitmapsitems[selecteditem]; - this->eraseColorPoints(); - for(int i = 0; i < currentconfig->getGreyVector().size();i++){ - int greyv = currentconfig->getGreyVector()[i]*_maxgreyvalue; - int red = currentconfig->getRedVector()[i]; - int green = currentconfig->getGreenVector()[i]; - int blue = currentconfig->getBlueVector()[i]; - - this->addColorPoint(greyv, red, green, blue); - } - } - +void HistogramDialog::UpdateCurrentComboElement(){ + if(_currentcolorselectedbitmap >= 0 && _currentcolorselectedbitmap < _comboitems.size()){ + setCurrentColorConfigurationIntoButton(); } } -std::vector HistogramDialog::GetBitmapsList(std::vector greyvect, std::vector redvect, std::vector greenvect, std::vector bluevect){ - - std::vector bitmaps; - for(int i = 0; i < greyvect.size();i++){ - //bitmaps.push_back(); +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 greylevel; + std::vector red; + std::vector green; + std::vector blue; + std::vector red0; + std::vector green0; + std::vector blue0; + GetValuesColorPointsFunction(greylevel,red,green,blue); + + for(int i = 0;i< greylevel.size();i++){ + greylevel[i] = greylevel[i]/_maxgreyvalue; + /*std::cout<<"HistogramDialog::setCurrentColorConfigurationIntoButton(){red"< greylevel1; + std::vector 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(){"<= 0 && _currentcolorselectedbitmap < _comboitems.size()){ + _comboitems[_currentcolorselectedbitmap]->SetColors(greylevel,red0,green0,blue0); + _comboitems[_currentcolorselectedbitmap]->SetTransferFunction(greylevel1,value); + bitmapbuttonsvect[_currentcolorselectedbitmap]->SetBitmapLabel(_comboitems[_currentcolorselectedbitmap]->GetBitmap()); } } -void HistogramDialog::OnLoadComboBoxData(std::vector& itembitmaps, std::string filename, std::vector& greyvect, std::vector& redvect, std::vector& greenvect, std::vector& bluevect){ +wxSizer* HistogramDialog::getControls(bool extracontrols){ + + wxSizer* sizer = new wxBoxSizer(wxVERTICAL); - std::ifstream file; - file.open( (const char*) (filename.c_str()) ); - double gv=-1; - int in=-1,red=-1,gr=-1,bl=-1; - - std::cout<GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&HistogramDialog::OnLoadData); + sizer->Add(opendata,wxSizerFlags().Center()); + sizer->AddSpacer(5); - if( (int)(line.find("")!=-1)) - { - item = new HistogramDialogComboBoxItem(); - }else if( (int)(line.find("RGBgreyValue"))!=-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()); - - } - else if( (int)(line.find("red"))!=-1) - { - int pos1=line.find(">"); - int pos2=line.find("<",pos1+1); - std::string x=line.substr(pos1+1,pos2-pos1-1); - red=atoi(x.c_str()); - - } - else if( (int)(line.find("green"))!=-1) - { - int pos1=line.find(">"); - int pos2=line.find("<",pos1+1); - std::string x=line.substr(pos1+1,pos2-pos1-1); - gr=atoi(x.c_str()); - } - else if( (int)(line.find("blue"))!=-1 ) - { - int pos1=line.find(">"); - int pos2=line.find("<",pos1+1); - std::string x=line.substr(pos1+1,pos2-pos1-1); - bl=atoi(x.c_str()); - greyvect.push_back(gv); - redvect.push_back(red); - greenvect.push_back(gr); - bluevect.push_back(bl); - }else if( (int)(line.find(""))!=-1 ){ + - item->SetColors(greyvect,redvect,greenvect,bluevect); + 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); - itembitmaps.push_back(item); + if(extracontrols){ + sizer->Add(getPanExtraControls(),wxSizerFlags().Center()); + } + //sizer->Add(getBitmapCombo(),wxSizerFlags().Center()); + + + + return sizer; - greyvect.clear(); - redvect.clear(); - greenvect.clear(); - bluevect.clear(); - } - - line.clear(); - } - file.close(); - std::cout<GetScalarRange()[1]; histogramW->initializeHistogram(img); } diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialog.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialog.h index 011314d..8e9ece3 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialog.h +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialog.h @@ -26,12 +26,10 @@ #include #include #include "../wxMPRWidget.h" -#include "HistogramDialogComboBoxItem.h" - -#include - -#define FILENAME "/Data/colorsfunction.txt" +#include "HistogramDialogComboBoxItem.h" +#include +#include class HistogramDialog:public wxDialog { @@ -39,11 +37,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); + HistogramDialog(wxWindow *parent,wxString title,bool extracontrols=false); + ~HistogramDialog(); /* Methods */ @@ -134,7 +133,7 @@ public: void OnSaveData(wxCommandEvent& event); void OnLoadData(wxCommandEvent& event); void OnRefreshBtn(wxCommandEvent& event); - void OnEditBitmapCombo(wxCommandEvent& event); + /** ** Initialize the histogram @@ -155,7 +154,22 @@ public: std::vector& blue); void SetFunctions(vtkPiecewiseFunction* _opac, vtkColorTransferFunction* _color); - void OnBitmapComboItemSelected(wxCommandEvent& event); + /** + ** Set to true in the constructor + **/ + void setInfoPanExtraControls(std::vector comboitems); + + + /** + * + */ + void OnEditColorsCombo(wxCommandEvent& event); + void OnDeleteColor(wxCommandEvent& event); + + std::vector getComboBoxItems(){return _comboitems;} + + void UpdateCurrentComboElement(); + private: /* Histogram Widget @@ -164,7 +178,6 @@ private: /** ** **/ - double _maxgreyvalue; /* ok Button */ @@ -188,7 +201,8 @@ private: */ wxButton *refreshBtn; - wxSizer* _bitmapsizer; + wxPanel* _panextracontrols; + // the user had pressed refresh bool refreshed; @@ -202,18 +216,29 @@ private: wxVtkMPR3DView *wxvtkmpr3Dview; wxVtkClipping3DView *wxvtkclipping3Dview; - wxBitmapComboBox* _bitmapcombo; - std::vector _bitmapsitems; - wxSizer* getControls(); - wxSizer* getBitmapCombo(); - wxBitmapComboBox* getBitmapComboElements(); - void OnLoadComboBoxData(std::vector& itembitmaps, std::string filename,std::vector& greyvect, std::vector& redvect, std::vector& greenvect, std::vector& bluevect); - std::vector GetBitmapsList(std::vector greyvect, std::vector redvect, std::vector greenvect, std::vector bluevect); + + wxSizer* getControls(bool extracontrols = false); + + + // DECLARE_CLASS(HistogramDialog); // any class wishing to process wxWindows events must use this macro //DECLARE_EVENT_TABLE() - void initializeHistogramDialog(); + void initializeHistogramDialog(bool extracontrols); + + wxPanel* getPanExtraControls(); + + std::vector bitmapbuttonsvect; + std::vector _comboitems; + + void setCurrentColorConfigurationIntoButton(); + void AddNewBitmapButton(); + wxSizer* getBitmapButtonDelete(wxBitmap bitmap); + std::vector _deletebuttonsvector; + + int _maxgreyvalue; + int _currentcolorselectedbitmap; }; #endif diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramWidget.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramWidget.cxx index 51a30e7..d3dbfc4 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramWidget.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramWidget.cxx @@ -313,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; diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/mathplot.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/mathplot.cxx index 5a34b17..b6b1e48 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/mathplot.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/mathplot.cxx @@ -408,6 +408,7 @@ mpWindow::mpWindow( wxWindow *parent, wxWindowID id, const wxPoint &pos, const w m_lockaspect = FALSE; offsetX = offsetY = 0; offsetPixelX = offsetPixelY= 0; + _bitmap_functions=NULL; real_guideLine_X = -1; real_guideLine_Y = -1; diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pGraphicalFunction.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pGraphicalFunction.cxx index c02da99..5e3ce63 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pGraphicalFunction.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pGraphicalFunction.cxx @@ -48,6 +48,7 @@ pGraphicalFunction:: pGraphicalFunction(wxString name, int flags) offsetPixelY=0; xTraslation=0; mType=DEFAULT; + } /** diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pLogicalFunction.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pLogicalFunction.cxx index 3c8d925..5822083 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pLogicalFunction.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pLogicalFunction.cxx @@ -118,7 +118,11 @@ bool pLogicalFunction:: AddNewPoint(int x,int y) bool includedPoint = realPoints.Append(newPoint)!=NULL; if(includedPoint) { - bool order=orderPoints(); + bool order=true; + if(realPoints.size()>1){ + order=orderPoints(); + } + return order; } return includedPoint; @@ -141,8 +145,14 @@ bool pLogicalFunction::orderPoints() int nextX; // Used for validating 'leftToRigthDef' - pFunctionPoint* ordFirstPoint = (pFunctionPoint*)realPoints.GetFirst()-> GetData(); - pFunctionPoint* ordLastPoint = (pFunctionPoint*)(lastNodeIncluded->GetPrevious())-> GetData(); + pFunctionPoint* ordFirstPoint = NULL; + pFunctionPoint* ordLastPoint = NULL; + if(node!=NULL){ + ordFirstPoint = (pFunctionPoint*)realPoints.GetFirst()-> GetData(); + } + if(lastNodeIncluded->GetPrevious()!=NULL){ + ordLastPoint = (pFunctionPoint*)(lastNodeIncluded->GetPrevious())-> GetData(); + } // Normal drawing diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pPlotter.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pPlotter.cxx index 643743c..97015de 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pPlotter.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pPlotter.cxx @@ -100,7 +100,7 @@ END_EVENT_TABLE() { SetBackgroundColour(wxColour(255,255,255)); m_plot = new pPlotterWindow( this, -1, wxPoint(0,0), wxSize(nWidth,nHeight), wxSUNKEN_BORDER ); - + actualFunction =NULL; // Adding the axis layers to the plotter m_plot->AddLayer( new pPlotterScaleX() ); m_plot->AddLayer( new pPlotterScaleY() ); @@ -182,8 +182,9 @@ END_EVENT_TABLE() pPlotter :: ~pPlotter () - { - + { + + } //--------------------------------------------------------------------------------------------- diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererManagerData.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererManagerData.cxx index de064e3..fb0ef0a 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererManagerData.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererManagerData.cxx @@ -58,7 +58,7 @@ void wxMaracasMultipleVolumeRendererManagerData::setVolumeColor(std::vectorRemoveAllPoints(); for(int i = 0; i < greylevelcolors.size();i++){ _ctfun->AddRGBPoint(greylevelcolors[i], red[i],green[i], blue[i]); - // std::cout<<"transfer color function "<Update(); } @@ -71,7 +71,7 @@ void wxMaracasMultipleVolumeRendererManagerData::setVolumeOpacity(std::vectorRemoveAllPoints(); for(int i = 0; i < greylevel.size();i++){ _tfun->AddPoint(greylevel[i], value[i]); -// std::cout<<"transfer function "<Update(); } diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererPanel.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererPanel.cxx index 6337f76..de919ee 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererPanel.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererPanel.cxx @@ -35,10 +35,15 @@ void wxMaracasMultipleVolumeRendererPanel::createControls(vtkImageData* img){ sizerirmprop->Add(checkbox,wxFIXED_MINSIZE); - wxBitmap bitmap(Color_xpm); - _colorchoose = new wxBitmapButton(this, -1, bitmap,wxDefaultPosition,wxSize(30,30)); - Connect(_colorchoose->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onColorChange); - sizerirmprop->Add(_colorchoose,wxFIXED_MINSIZE); + //wxBitmap bitmap(Color_xpm); + //_colorchoose = new wxBitmapButton(this, -1, bitmap,wxDefaultPosition,wxSize(30,30)); + //Connect(_colorchoose->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onColorChange); + + mwxwidget = new HistogramDialogComboBox(this); + mwxwidget->setImageData(img); + //mwxwidget->PushEventHandler(this); + Connect(mwxwidget->GetId(), wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onColorChange); + sizerirmprop->Add(mwxwidget,wxFIXED_MINSIZE); this->SetSizer(sizerirmprop, true); @@ -56,17 +61,14 @@ void wxMaracasMultipleVolumeRendererPanel::createControls(vtkImageData* img){ Connect(button3->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onUpdate); */ - mwxwidget = new HistogramDialog(this, _T("Color Transfer Function")); - mwxwidget->initializeHistogram(img); + - mwxwidget->erasePointsTransferenceFunction(); + /*mwxwidget->erasePointsTransferenceFunction(); double range[2]; img->GetScalarRange(range); double max = range[1]; - /* - adding the poinst of the transference function - */ + //X mwxwidget->addPointToTransferenceFunction(max * 0/2,0.0); mwxwidget->addPointToTransferenceFunction(max * 1/2,100.0); @@ -76,7 +78,7 @@ void wxMaracasMultipleVolumeRendererPanel::createControls(vtkImageData* img){ mwxwidget->addColorPoint(max*1/4,(int)(1.0*255),(int)(0.0*255),(int)(0.0*255)); mwxwidget->addColorPoint(max*2/4,(int)(0.0*255),(int)(0.0*255),(int)(1.0*255)); mwxwidget->addColorPoint(max*3/4,(int)(0.0*255),(int)(1.0*255),(int)(0.0*255)); - mwxwidget->addColorPoint(max*4/4,(int)(0.0*255),(int)(0.0*255),(int)(0.2*255)); + mwxwidget->addColorPoint(max*4/4,(int)(0.0*255),(int)(0.0*255),(int)(0.2*255)); */ /*wxBoxSizer* boxSizer0 = new wxBoxSizer(wxHORIZONTAL); boxSizer0->Add(mwxwidget, 4, wxGROW); @@ -100,8 +102,8 @@ void wxMaracasMultipleVolumeRendererPanel::createControls(vtkImageData* img){ _frame->Refresh(); _frame->Update();*/ - mwxwidget->SetFunctions(wxMaracasMultipleVolumeRendererView::getInstance()->GetTransferFunction(getPropId()), - wxMaracasMultipleVolumeRendererView::getInstance()->GetColorFunction(getPropId())); + //mwxwidget->SetFunctions(wxMaracasMultipleVolumeRendererView::getInstance()->GetTransferFunction(getPropId()), + // wxMaracasMultipleVolumeRendererView::getInstance()->GetColorFunction(getPropId())); mwxwidget->Refresh(); } void wxMaracasMultipleVolumeRendererPanel::onOK(wxCommandEvent& event){ @@ -133,10 +135,10 @@ void wxMaracasMultipleVolumeRendererPanel::updateVolume(){ } void wxMaracasMultipleVolumeRendererPanel::onColorChange(wxCommandEvent& event){ - if(mwxwidget->ShowModal()==wxID_OK){ + //if(mwxwidget->ShowModal()==wxID_OK){ updateVolume(); - mwxwidget->Show(false); - } + // mwxwidget->Show(false); + //} } void wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange(wxCommandEvent& event){ wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue()); diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererPanel.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererPanel.h index 13d2405..ab4e331 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererPanel.h +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererPanel.h @@ -2,7 +2,7 @@ #define wxMaracasMultipleVolumeRendererPanel_H_ #include -#include "HistogramDialog.h" +#include "HistogramDialogComboBox.h" class wxMaracasMultipleVolumeRendererPanel : public wxPanel{ @@ -21,13 +21,13 @@ public: private: wxCheckBox* checkbox; - wxBitmapButton* _colorchoose; + //wxBitmapButton* _colorchoose; int _propid; bool first; - HistogramDialog* mwxwidget; + HistogramDialogComboBox* mwxwidget; //wxFrame* _frame; };