wxMaracasMultipleVolumeRendererPanel.cxx

Go to the documentation of this file.
00001 #include "wxMaracasMultipleVolumeRendererPanel.h"
00002 #include "wxMaracasMultipleVolumeRendererView.h"
00003 #include "wxMaracas_N_ViewersWidget.h"
00004 #include "wxMaracasDialog_NViewers.h"
00005 #include "wxMaracasRendererView.h"
00006 
00007 #include <wx/colordlg.h>
00008 
00009 #include "vtkImageData.h"
00010 #include "vtkRenderer.h"
00011 
00012 #include <OpenImage.xpm>
00013 #include <Add.xpm>
00014 #include "Color.xpm"
00015 #include <vector>
00016 //#include <vtkImageCast.h>
00024 wxMaracasMultipleVolumeRendererPanel::wxMaracasMultipleVolumeRendererPanel(wxWindow* parent,int propid, vtkImageData* img, bool _isComplexBox)
00025 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize)
00026 {
00027         _propid = propid;
00028         isComplexBox = _isComplexBox;
00029         
00030         createControls(img);
00031 }
00032 
00036 wxMaracasMultipleVolumeRendererPanel::~wxMaracasMultipleVolumeRendererPanel(){  
00037         
00038         //if(isComplexBox)
00039                 //((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->deleteVolume(_propid);
00040         //else
00041                 //wxMaracasMultipleVolumeRendererView::getInstance()->deleteVolume(_propid);
00042         delete mwxwidget;
00043 }
00044 
00048 void wxMaracasMultipleVolumeRendererPanel::createControls(vtkImageData* img){
00049 
00050         wxFlexGridSizer* sizerirmprop = new wxFlexGridSizer(3);
00051         
00052         if(!isComplexBox)
00053         {
00054                 wxStaticText* label = new wxStaticText(this, -1, wxString(_T("")));     
00055                 wxStaticText* label2 = new wxStaticText(this, -1, wxString(_T("")));
00056 
00057 
00058                 checkbox = new  wxCheckBox(this,-1,wxString(_T("Show Actor")));
00059                 Connect(checkbox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange);     
00060                 checkbox->SetValue(true);       
00061 
00062                 wxString choices[] = {_T("Composite"), _T("MIP")};
00063                 _radiobox = new wxRadioBox(this, -1, wxString(_T("Function")), wxDefaultPosition, wxDefaultSize, 2, choices);
00064                 Connect(_radiobox->GetId(), wxEVT_COMMAND_RADIOBOX_SELECTED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onRadioBoxSelectFunction);
00065 
00066                 sizerirmprop->Add(checkbox,wxFIXED_MINSIZE);
00067                 sizerirmprop->AddSpacer(5);
00068                 sizerirmprop->Add(_radiobox,wxFIXED_MINSIZE);
00069                 //sizerirmprop->Add(label2,wxFIXED_MINSIZE);
00070         }
00071         //wxBitmap bitmap(Color_xpm);
00072         //_colorchoose = new wxBitmapButton(this, -1, bitmap,wxDefaultPosition,wxSize(30,30));  
00073         //Connect(_colorchoose->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onColorChange);                    
00074 
00075         mwxwidget = new HistogramDialogComboBox(this);
00076         mwxwidget->setImageData(img);
00077     //mwxwidget->PushEventHandler(this);
00078         Connect(mwxwidget->GetId(), wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onColorChange);
00079         sizerirmprop->Add(mwxwidget,wxFIXED_MINSIZE);   
00080 
00081         wxBitmap bitmap0(Add_xpm);
00082         _viewimage = new wxBitmapButton(this, -1, bitmap0, wxDefaultPosition, wxSize(30,30));   
00083         Connect(_viewimage->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onViewImage);                  
00084         sizerirmprop->Add(_viewimage,wxFIXED_MINSIZE);  
00085 
00086         //std::string iconsdir = wxMaracasMultipleVolumeRendererView::getInstance()->getPath();
00087         //iconsdir+="/data/Icons/Add.xmp";
00088         //wxBitmap* bitmap = new wxBitmap(wxString(iconsdir.c_str(),wxConvUTF8), wxBITMAP_TYPE_XPM);
00089 
00090         this->SetSizer(sizerirmprop, true);             
00091         this->SetAutoLayout( true );
00092     
00093         //_frame = new wxFrame(this, 10, _T("Configure Transfer Functions"));   
00094 
00095         /*wxButton* button1 = new wxButton(_frame,20,_T("OK"));
00096         Connect(button1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onOK);                            
00097         wxButton* button2 = new wxButton(_frame,30,_T("Cancel") );
00098         Connect(button2->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onCancel);                                
00099         wxButton* button3 = new wxButton(_frame,40,_T("Update"));
00100         Connect(button3->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onUpdate);                                */
00101 
00102         /*mwxwidget->erasePointsTransferenceFunction();
00103         double range[2];
00104         img->GetScalarRange(range);
00105         double max = range[1];
00106 
00107         
00108         //X
00109         mwxwidget->addPointToTransferenceFunction(max * 0/2,0.0);
00110         mwxwidget->addPointToTransferenceFunction(max * 1/2,100.0);
00111         mwxwidget->addPointToTransferenceFunction(max * 2/2,100.0);
00112 
00113         mwxwidget->addColorPoint(max*0/4,(int)(0.0*255),(int)(0.0*255),(int)(0.0*255));
00114         mwxwidget->addColorPoint(max*1/4,(int)(1.0*255),(int)(0.0*255),(int)(0.0*255));
00115         mwxwidget->addColorPoint(max*2/4,(int)(0.0*255),(int)(0.0*255),(int)(1.0*255));
00116         mwxwidget->addColorPoint(max*3/4,(int)(0.0*255),(int)(1.0*255),(int)(0.0*255));
00117         mwxwidget->addColorPoint(max*4/4,(int)(0.0*255),(int)(0.0*255),(int)(0.2*255)); */
00118 
00119         /*wxBoxSizer* boxSizer0 = new wxBoxSizer(wxHORIZONTAL);
00120         boxSizer0->Add(mwxwidget, 4, wxGROW);
00121 
00122         wxBoxSizer* boxSizer = new wxBoxSizer(wxHORIZONTAL);
00123         boxSizer->AddSpacer(40);
00124         boxSizer->Add(button1, wxCENTER);
00125         boxSizer->AddSpacer(40);
00126         boxSizer->Add(button2, wxCENTER);
00127         boxSizer->AddSpacer(40);
00128         boxSizer->Add(button3, wxCENTER);
00129 
00130         wxBoxSizer* boxsizer2 = new wxBoxSizer(wxVERTICAL);
00131         boxsizer2->Add(boxSizer0,1,wxEXPAND);   
00132         boxsizer2->Add(boxSizer,0,wxCENTER);    
00133     
00134         _frame->SetAutoLayout(true);
00135 
00136 
00137     _frame->SetSizer(boxsizer2);
00138 
00139         _frame->Refresh();
00140         _frame->Update();*/     
00141         //mwxwidget->SetFunctions(wxMaracasMultipleVolumeRendererView::getInstance()->GetTransferFunction(getPropId()),
00142         //                                              wxMaracasMultipleVolumeRendererView::getInstance()->GetColorFunction(getPropId()));
00143         mwxwidget->Refresh();   
00144 }
00145 
00149 void wxMaracasMultipleVolumeRendererPanel::onOK(wxCommandEvent& event){
00150     updateVolume();
00151         //_frame->Show(false);
00152 }
00153 
00157 void wxMaracasMultipleVolumeRendererPanel::onCancel(wxCommandEvent& event){
00158         //_frame->Show(false);
00159 }
00160 
00164 void wxMaracasMultipleVolumeRendererPanel::onUpdate(wxCommandEvent& event){
00165         updateVolume();    
00166 }
00167 
00171 void wxMaracasMultipleVolumeRendererPanel::updateVolume(){
00172         std::vector<double> greylevelcolors;
00173         std::vector<double> red;
00174         std::vector<double> green;
00175         std::vector<double> blue;
00176 
00177         std::vector<double> greylevel;
00178         std::vector<double> values;
00179 
00180     mwxwidget->GetValuesColorPointsFunction(greylevelcolors, red, green, blue);
00181         mwxwidget->GetValuesPointsFunction(greylevel, values);
00182 
00183         if(this->isComplexBox)
00184         {
00185                 ( (wxMaracasRendererView::getInstance())->getTabbedPanel(this->_propid) )->SetValuesColorPointsFunction(this->_propid,greylevelcolors, red, green, blue);
00186                 ( (wxMaracasRendererView::getInstance())->getTabbedPanel(this->_propid) )->SetValuesPointsFunction(this->_propid, greylevel, values);
00187         }
00188         else
00189         {       
00190                 wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesColorPointsFunction(this->_propid, greylevelcolors, red, green, blue);
00191                 wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesPointsFunction(this->_propid, greylevel, values);
00192         }
00193 }
00194 
00198 void wxMaracasMultipleVolumeRendererPanel::onColorChange(wxCommandEvent& event){        
00199 
00200         //if(mwxwidget->ShowModal()==wxID_OK){
00201         updateVolume();
00202         //      mwxwidget->Show(false);
00203         //}     
00204 }
00205 
00209 void wxMaracasMultipleVolumeRendererPanel::onViewImage(wxCommandEvent& event)
00210 {       
00211         vtkImageData* img;
00212         std::vector<int> type;
00213         type.push_back(6);
00214 
00215         wxFrame* frame = new wxFrame(this, -1, wxString(_T("Volume Visualization")));
00216         frame->SetSize(wxDefaultSize);
00217 
00218         if(this->isComplexBox)
00219         {
00220                 img = (wxMaracasRendererView::getInstance())->getTabbedPanel(_propid)->getVolImage();   
00221         }
00222         else
00223         {       
00224                 img = wxMaracasMultipleVolumeRendererView::getInstance()->getVolumeRenderManager()->getImageData();
00225         }
00226 
00227         wxMaracas_N_ViewersWidget* viewer = new wxMaracas_N_ViewersWidget(frame, img, &type);
00228         frame->Show();
00229 }
00230 
00234 void wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange(wxCommandEvent& event){     
00235         if(this->isComplexBox)
00236                 ( (wxMaracasRendererView::getInstance())->getTabbedPanel(this->_propid) )->addRemoveActorV(this->getPropId(), checkbox->GetValue());
00237         else
00238                 wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());    
00239 }
00240 
00244 int wxMaracasMultipleVolumeRendererPanel::getPropId(){
00245         return _propid;
00246 }
00247 
00248 void wxMaracasMultipleVolumeRendererPanel::onRadioBoxSelectFunction(wxCommandEvent& event){     
00249         
00250         wxMaracasMultipleVolumeRendererView::getInstance()->changeCompositeMIPFunction(this->getPropId(), _radiobox->GetSelection());   
00251 }
00252 
00256 HistogramDialogComboBox* wxMaracasMultipleVolumeRendererPanel::getMwxwidget()
00257 {
00258         return mwxwidget;
00259 }
00260 

Generated on 18 Mar 2010 for creaMaracasVisu_lib by  doxygen 1.6.1