]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererPanel.cxx
*** empty log message ***
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracasMultipleVolumeRendererPanel.cxx
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererPanel.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererPanel.cxx
new file mode 100644 (file)
index 0000000..3327a85
--- /dev/null
@@ -0,0 +1,124 @@
+#include "wxMaracasMultipleVolumeRendererPanel.h"
+
+#include <wx/colordlg.h>
+#include "wxMaracasMultipleVolumeRendererView.h"
+#include "Color.xpm"
+/**
+**     Implementation of viewProp3D
+**/
+
+wxMaracasMultipleVolumeRendererPanel::wxMaracasMultipleVolumeRendererPanel(wxWindow* parent,int propid, vtkImageData* img)
+: wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize)
+{
+       _propid = propid;
+       
+       createControls(img);
+}
+
+wxMaracasMultipleVolumeRendererPanel::~wxMaracasMultipleVolumeRendererPanel(){ 
+       //wxMaracasIRMView::getInstance()->addRemoveActor(_propid, false);
+       wxMaracasMultipleVolumeRendererView::getInstance()->deleteVolume(_propid);
+}
+
+void wxMaracasMultipleVolumeRendererPanel::createControls(vtkImageData* img){
+
+       wxFlexGridSizer* sizerirmprop = new wxFlexGridSizer(1,1,1);
+       
+       wxString choices[2];
+       choices[0] = wxString(_T("On"));
+       choices[1] = wxString(_T("Off"));
+       checkbox = new  wxCheckBox(this,-1,wxString(_T("Show Actor")));
+       Connect(checkbox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange);     
+       checkbox->SetValue(true);       
+
+       sizerirmprop->Add(checkbox,wxFIXED_MINSIZE);
+
+       //this->addControl(checkbox);   
+       
+       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);        
+
+       
+       this->SetSizer(sizerirmprop, true);             
+       this->SetAutoLayout( true );
+
+    
+
+       _frame = new wxFrame(this, 10, _T("Configure Transfer Functions"));     
+
+       wxButton* button1 = new wxButton(_frame,20,_T("OK"));
+       Connect(button1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onOK);                            
+       wxButton* button2 = new wxButton(_frame,30,_T("Cancel") );
+       Connect(button2->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onCancel);                                
+       wxButton* button3 = new wxButton(_frame,40,_T("Update"));
+       Connect(button3->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onUpdate);                                
+
+
+       mwxwidget = new HistogramWidget(_frame, -1);
+
+       mwxwidget->initializeHistogram(img);
+       mwxwidget->Refresh();
+
+       wxBoxSizer* boxSizer0 = new wxBoxSizer(wxHORIZONTAL);
+       boxSizer0->Add(mwxwidget, 4, wxGROW);
+
+       wxBoxSizer* boxSizer = new wxBoxSizer(wxHORIZONTAL);
+       boxSizer->AddSpacer(40);
+       boxSizer->Add(button1, wxCENTER);
+       boxSizer->AddSpacer(40);
+       boxSizer->Add(button2, wxCENTER);
+       boxSizer->AddSpacer(40);
+       boxSizer->Add(button3, wxCENTER);
+
+       wxBoxSizer* boxsizer2 = new wxBoxSizer(wxVERTICAL);
+       boxsizer2->Add(boxSizer0,1,wxEXPAND);   
+       boxsizer2->Add(boxSizer,0,wxCENTER);    
+    
+       _frame->SetAutoLayout(true);
+
+
+    _frame->SetSizer(boxsizer2);
+
+       _frame->Refresh();
+       _frame->Update();
+       
+}
+void wxMaracasMultipleVolumeRendererPanel::onOK(wxCommandEvent& event){
+    updateVolume();
+       _frame->Show(false);
+}
+void wxMaracasMultipleVolumeRendererPanel::onCancel(wxCommandEvent& event){
+       _frame->Show(false);
+}
+void wxMaracasMultipleVolumeRendererPanel::onUpdate(wxCommandEvent& event){
+       updateVolume();    
+}
+void wxMaracasMultipleVolumeRendererPanel::updateVolume(){
+       std::vector<double> greylevelcolors;
+       std::vector<double> red;
+       std::vector<double> green;
+       std::vector<double> blue;
+
+       std::vector<double> greylevel;
+       std::vector<double> values;
+
+    mwxwidget->GetValuesColorPointsFunction(greylevelcolors, red, green, blue);
+       mwxwidget->GetValuesPointsFunction(greylevel, values);
+
+
+       wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesColorPointsFunction(this->_propid, greylevelcolors, red, green, blue);
+       wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesPointsFunction(this->_propid, greylevel, values);
+
+}
+void wxMaracasMultipleVolumeRendererPanel::onColorChange(wxCommandEvent& event){
+    _frame->Show(true);    
+}
+void wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange(wxCommandEvent& event){    
+       wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());    
+}
+
+int wxMaracasMultipleVolumeRendererPanel::getPropId(){
+       return _propid;
+}
\ No newline at end of file