wxMaracasMultipleVolumeRendererView.cxx

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   wxMaracas
00004   Module:    $RCSfile: wxMaracasMultipleVolumeRendererView.cxx,v $
00005   Language:  C++
00006   Date:      $Date: 2009/07/20 10:06:12 $
00007   Version:   $Revision: 1.2 $
00008 
00009   Copyright: (c) 2002, 2003
00010   License:
00011 
00012      This software is distributed WITHOUT ANY WARRANTY; without even
00013      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00014      PURPOSE.  See the above copyright notice for more information.
00015 
00016 =========================================================================*/
00017 
00018 
00019 
00020 // EOF - wxMaracasMPR.cxx
00021 
00022 #include "wxMaracasMultipleVolumeRendererView.h"
00023 
00024 
00025 #include <wx/colordlg.h>
00026 #include <wx/bmpbuttn.h>
00027 
00028 #include <OpenImage.xpm>
00029 #include <Color.xpm>
00030 
00031 wxMaracasMultipleVolumeRendererView* wxMaracasMultipleVolumeRendererView::instance=NULL;
00032 
00033 wxMaracasMultipleVolumeRendererView::wxMaracasMultipleVolumeRendererView( wxWindow* parent,std::string path)
00034 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize){
00035 
00036         wxauimanager = new wxAuiManager(this);
00037 
00038         _path = path;
00039 
00040         volmanager = new wxMaracasMultipleVolumeRendererManager();
00041         std::string iconsdir = path;
00042         iconsdir+="/data/Icons";
00043         this->_toolb = new ToolBarMultipleVolumeRenderer(this,iconsdir);
00044         wxAuiPaneInfo paneinfo;
00045         wxauimanager->AddPane(_toolb,paneinfo.ToolbarPane().Top());
00046 
00047         wxauimanager->Update(); 
00048 
00049 }
00050 wxMaracasMultipleVolumeRendererView::~wxMaracasMultipleVolumeRendererView( ){
00051 
00052         delete _toolb;
00053 
00054 }
00055 
00056 std::string wxMaracasMultipleVolumeRendererView::getPath(){
00057         return _path;
00058 }
00059 
00060 wxMaracasMultipleVolumeRendererView* wxMaracasMultipleVolumeRendererView::getInstance(wxWindow* parent,std::string path){
00061         if(instance==NULL){
00062                 instance = new wxMaracasMultipleVolumeRendererView(parent,path);
00063         }
00064         return instance;
00065 }
00066 
00067 wxMaracasMultipleVolumeRendererView* wxMaracasMultipleVolumeRendererView::getInstance(){
00068         return instance;
00069 }
00070 
00071 void wxMaracasMultipleVolumeRendererView::setRenderer(vtkRenderer*  renderer){
00072         volmanager->setRenderer(renderer);
00073 }
00074 
00075 void wxMaracasMultipleVolumeRendererView::addRemoveActor(int id, bool addremove){
00076         volmanager->addRemoveActor(id, addremove);
00077 }
00078 
00079 void wxMaracasMultipleVolumeRendererView::onLoadImageFile(){
00080 
00081         wxString mhd(_T("mhd"));        
00082 
00083         wxFileDialog* fildial = new wxFileDialog(this, wxString(_T("Select a MHD file")),wxString(_T("")),
00084                 wxString(_T("")),wxString(_T("MHD files (*.mhd)|*.mhd")) );
00085 
00086         if(fildial->ShowModal()==wxID_OK){
00087         wxString filename = fildial->GetFilename();
00088                 wxString pathfile(fildial->GetDirectory() + _T("/") + filename);
00089                 if(filename.EndsWith(mhd)){
00090                         loadVolume(pathfile,filename);
00091                 }
00092         }
00093         delete fildial;
00094 
00095 }
00096 
00097 void wxMaracasMultipleVolumeRendererView::addVolumeViewPanel(wxMaracasMultipleVolumeRendererPanel* irmview, std::string dataname){
00098 
00099         wxString s(dataname.c_str(),wxConvUTF8 );
00100         wxAuiPaneInfo paneinfo;
00101         wxauimanager->AddPane(irmview, paneinfo.DefaultPane().Centre().DestroyOnClose().Caption(s));
00102         wxauimanager->Update();
00103 
00104 
00105 }
00106         
00107 void wxMaracasMultipleVolumeRendererView::addVolume(vtkImageData* img, std::string dataname){
00108 
00109         try{
00110                 int id = volmanager->addVolume(img,dataname);           
00111                 if(id!=-1){
00112                         wxMaracasMultipleVolumeRendererPanel* controlpan = new wxMaracasMultipleVolumeRendererPanel(this, id,img);
00113                         addVolumeViewPanel(controlpan, dataname);
00114                         controlpan->updateVolume();
00115                 }
00116         }catch(char* str){
00117                 std::cout << "Exception : " << str << '\n';
00118                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
00119                 diag->ShowModal();
00120         }
00121 }
00122 
00123 void wxMaracasMultipleVolumeRendererView::loadVolume(wxString filename, wxString dataname){
00124 
00125         std::string s = std::string(filename.mb_str());
00126         vtkImageData* img = volmanager->getImageData(s);
00127         if(img!=NULL){
00128                 s = std::string(dataname.mb_str());
00129                 addVolume(img, s);
00130         }
00131     
00132 }
00133 
00134 void wxMaracasMultipleVolumeRendererView::deleteVolume(int volid){
00135         volmanager->deleteActor(volid);
00136 }
00137 
00138 void wxMaracasMultipleVolumeRendererView::SetValuesColorPointsFunction(int volid, std::vector<double> greylevelcolors,std::vector<double> red,std::vector<double> green,std::vector<double> blue){
00139         volmanager->setVolumeColor(volid, greylevelcolors, red, green, blue);
00140 }
00141 void wxMaracasMultipleVolumeRendererView::SetValuesPointsFunction(int volid, std::vector<double> greylevel, std::vector<double> values){
00142         volmanager->setVolumeOpacity(volid, greylevel, values);
00143 }
00144 
00145 vtkPiecewiseFunction* wxMaracasMultipleVolumeRendererView::GetTransferFunction(int volumeid){
00146         return volmanager->GetTransferFunction(volumeid);
00147 }
00148 vtkColorTransferFunction* wxMaracasMultipleVolumeRendererView::GetColorFunction(int volumeid){
00149     return volmanager->GetColorFunction(volumeid);
00150 }
00155 ToolBarMultipleVolumeRenderer::ToolBarMultipleVolumeRenderer(wxWindow * parent,std::string iconsdir)
00156 : wxToolBar(parent, -1, wxDefaultPosition, wxDefaultSize)
00157 {
00158 
00159 
00160         std::string iconfil = iconsdir;
00161 
00162         //iconfil+= "/OpenImage.png";
00163         //wxBitmap* bitmap0 = new wxBitmap(wxString(iconfil.c_str(),wxConvUTF8), wxBITMAP_TYPE_PNG);
00164         wxBitmap bitmap0(OpenImage_xpm);
00165         this->AddTool(1, wxString(_T("test")),bitmap0);
00166 
00167         /*iconfil+= "/Open.png";
00168         wxBitmap* bitmap2 = new wxBitmap(wxString(iconfil.c_str(),wxConvUTF8), wxBITMAP_TYPE_PNG);
00169         this->AddTool(2, wxString(_T("test")),*bitmap2);        */
00170 
00171         /*iconfil = iconsdir;
00172         iconfil+= "/Open.png";
00173         wxBitmap* bitmap30 = new wxBitmap(wxString(iconfil.c_str(),wxConvUTF8), wxBITMAP_TYPE_PNG);
00174         this->AddTool(30, wxString(_T("test")),*bitmap30);*/
00175 
00176         this->Realize();
00177 
00178         _evthand = new ToolBarEventHandlerMultipleVolumeRenderer();
00179         this->SetEventHandler(_evthand);
00180 
00181 }
00182 
00183 ToolBarMultipleVolumeRenderer::~ToolBarMultipleVolumeRenderer(void){
00184 }
00185 
00186 ToolBarEventHandlerMultipleVolumeRenderer::ToolBarEventHandlerMultipleVolumeRenderer()
00187 : wxEvtHandler(){
00188 }
00189 ToolBarEventHandlerMultipleVolumeRenderer::~ToolBarEventHandlerMultipleVolumeRenderer(){
00190 }
00191 
00192 void ToolBarEventHandlerMultipleVolumeRenderer::onLoadImageFile(wxCommandEvent& event){
00193         wxMaracasMultipleVolumeRendererView::getInstance()->onLoadImageFile();
00194 }
00195 
00196 
00197 
00198 BEGIN_EVENT_TABLE(ToolBarEventHandlerMultipleVolumeRenderer, wxEvtHandler)
00199         EVT_MENU(1, ToolBarEventHandlerMultipleVolumeRenderer::onLoadImageFile)
00200 END_EVENT_TABLE()
00201 
00202 

Generated on Wed Jul 29 16:35:30 2009 for creaMaracasVisu_lib by  doxygen 1.5.3