From: Juan Prieto Date: Thu, 25 Mar 2010 08:50:32 +0000 (+0000) Subject: OpenImageDialog free the loaded library, viewers create marimagedata in viewer_widget X-Git-Tag: CREATOOLS.2-0-3~47 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=acfa60fa044ebc12067c4daba555d18c7d66b2d5;p=creaMaracasVisu.git OpenImageDialog free the loaded library, viewers create marimagedata in viewer_widget --- diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/OpenImageDialog.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/OpenImageDialog.cxx index 88ebdd3..354c473 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/OpenImageDialog.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/OpenImageDialog.cxx @@ -2,56 +2,116 @@ #include "OpenImageDialog.h" #include "creaWx.h" +#if defined(__GNUC__) +// GCC compiler +// dlopen, dlsym, etc. + #include +#endif + typedef vtkImageData* (*GETIMAGEDATADIALOG)(); namespace creaMaracasVisuKernel{ - OpenImageDialog::OpenImageDialog() + OpenImageDialog::OpenImageDialog(bool usegimmick) { - img = NULL; - bool gimmicknotfound = true; + img = NULL; + + bool gimmickfound = false; - #ifdef WIN32 - HINSTANCE gimmickhandle; - gimmickhandle = LoadLibrary(TEXT("creaImageIO2.dll")); - std::cout<<"imagehandle "<ShowModal()==wxID_OK) { std::string path= crea::wx2std(FD->GetPath()); - - vtkMetaImageReader *reader = vtkMetaImageReader::New(); + vtkMetaImageReader* reader = vtkMetaImageReader::New(); reader->SetFileName(path.c_str()); - img = reader->GetOutput(); + reader->Update(); + img = vtkImageData::New(); + img->DeepCopy(reader->GetOutput()); + reader->Delete(); + /*img->SetSpacing(reader->GetOutput()->GetSpacing()); + extint = reader->GetOutput()->GetExtent(); + img->SetExtent(extint); + img->SetScalarType(reader->GetOutput()->GetScalarType()); + img->SetDimensions(reader->GetOutput()->GetDimensions()); + img->AllocateScalars(); + for (i=extint[0];i <= extint[1];i++){ + for (j=extint[2];j<=extint[3];j++){ + for (k=extint[4];k<=extint[5];k++){ + + ptr1=(unsigned short*) reader->GetOutput()->GetScalarPointer(i,j,k); + ptr2=(unsigned short*)img->GetScalarPointer(i,j,k); + *ptr2 = *ptr1; + } + } + }*/ } + //delete FD; } } //------------------------------------------------------------------- OpenImageDialog::~OpenImageDialog() { + img = NULL; } - vtkImageData* OpenImageDialog::getImageData(){ + vtkImageData* OpenImageDialog::getImageData(){ return img; } } diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/OpenImageDialog.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/OpenImageDialog.h index a720dfe..7ae3fd3 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/OpenImageDialog.h +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/OpenImageDialog.h @@ -10,14 +10,14 @@ namespace creaMaracasVisuKernel{ class creaMaracasVisu_EXPORT OpenImageDialog { public: - OpenImageDialog(); + OpenImageDialog(bool usegimmick = true); ~OpenImageDialog(); vtkImageData* getImageData(); protected: private: - vtkImageData* img; + vtkImageData* img; }; } diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialogComboBox.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialogComboBox.cxx index 6640003..f358647 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialogComboBox.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialogComboBox.cxx @@ -223,8 +223,13 @@ void HistogramDialogComboBox::saveCurrentConfiguration(std::vector bitmapsitems; OnLoadComboBoxData(bitmapsitems, currentpath); diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialogComboBox.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialogComboBox.h index ff63d22..ee5b947 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialogComboBox.h +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialogComboBox.h @@ -20,8 +20,11 @@ #include #include "vtkImageData.h" - -#define FILENAME "/Data/colorsfunction.txt" +#ifdef WIN32 +#define FILENAME "/data/colorsfunction.txt" +#else +#define FILENAME "~/.creaMaracasVisu/data/colorsfunction.txt" +#endif class HistogramDialogComboBox : public wxPanel diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3D.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3D.cxx index fb2f9b0..8b8cf8b 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3D.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3D.cxx @@ -54,18 +54,18 @@ void wxMaracasSurfaceRenderingProp3D::createControls(){ checkbox = new wxCheckBox(this,-1,wxString(_T("Show Actor"))); Connect(checkbox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onCheckBoxChange); checkbox->SetValue(true); - checkboxsizer->Add(checkbox,wxFIXED_MINSIZE); + checkboxsizer->Add(checkbox,1, wxGROW); if(wxMaracasSurfaceRendering::getInstance()->interactorSet()){ checkboxsurface = new wxCheckBox(this,-1,wxString(_T("Surface Box"))); Connect(checkboxsurface->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onCheckBoxSurfaceChange); checkboxsurface->SetValue(true); - checkboxsizer->Add(checkboxsurface,wxFIXED_MINSIZE); + checkboxsizer->Add(checkboxsurface,1, wxGROW); } - sizersurfprop->Add(checkboxsizer,wxFIXED_MINSIZE); + sizersurfprop->Add(checkboxsizer,1, wxGROW); } //this->addControl(checkbox); @@ -74,7 +74,7 @@ void wxMaracasSurfaceRenderingProp3D::createControls(){ wxBitmap bitmap(Color_xpm); _colorchoose = new wxBitmapButton(this, -1, bitmap,wxDefaultPosition,wxSize(30,30)); Connect(_colorchoose->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onColorChange); - sizerbut->Add(_colorchoose,wxFIXED_MINSIZE); + sizerbut->Add(_colorchoose,1, wxGROW); /* wxBitmap bitmap1(Add_xpm); @@ -82,7 +82,7 @@ void wxMaracasSurfaceRenderingProp3D::createControls(){ Connect(_viewimage->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onViewImage); sizerbut->Add(_viewimage,wxFIXED_MINSIZE); */ - sizersurfprop->Add(sizerbut,wxFIXED_MINSIZE); + sizersurfprop->Add(sizerbut,1, wxGROW); //sizercolor->Add(checkbox,wxFIXED_MINSIZE); //sizercolor->Add(_colorchoose,wxFIXED_MINSIZE); //this->addControl(sizercolor); @@ -91,10 +91,10 @@ void wxMaracasSurfaceRenderingProp3D::createControls(){ opacity = new wxSlider(this, -1,100,0,100,wxDefaultPosition,wxDefaultSize,wxSL_HORIZONTAL|wxSL_LABELS); Connect(opacity->GetId(), wxEVT_SCROLL_CHANGED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onOpacityRelease); wxFlexGridSizer* sizeropacity = new wxFlexGridSizer(1,1,1); - sizeropacity->Add(label,wxFIXED_MINSIZE); - sizeropacity->Add(opacity,wxFIXED_MINSIZE); + sizeropacity->Add(label,1, wxGROW); + sizeropacity->Add(opacity,1, wxGROW); - sizersurfprop->Add(sizeropacity,wxFIXED_MINSIZE); + sizersurfprop->Add(sizeropacity,1, wxGROW); this->addControl(sizersurfprop); diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3DMHD.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3DMHD.cxx index 860cef7..a364a49 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3DMHD.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3DMHD.cxx @@ -29,10 +29,10 @@ void wxMaracasSurfaceRenderingProp3DMHD::createControls(int maxisovalue){ wxFlexGridSizer* sizer = new wxFlexGridSizer(1,1,1); wxStaticText* label = new wxStaticText(this, -1, wxString(_T("IsoValue"))); - sizer->Add(label, wxFIXED_MINSIZE); + sizer->Add(label, 1, wxGROW); //this->addControl(label); isovalue = new wxSlider(this, -1,maxisovalue,0,maxisovalue,wxDefaultPosition,wxDefaultSize,wxSL_HORIZONTAL|wxSL_LABELS); - sizer->Add(isovalue, wxFIXED_MINSIZE); + sizer->Add(isovalue, 1, wxGROW); //this->addControl(isovalue); this->addControl(sizer); diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_N_ViewersWidget.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_N_ViewersWidget.cxx index 16e0ddf..ee3c4e0 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_N_ViewersWidget.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_N_ViewersWidget.cxx @@ -3,8 +3,8 @@ Program: wxMaracas Module: $RCSfile: wxMaracas_N_ViewersWidget.cxx,v $ Language: C++ - Date: $Date: 2010/02/04 10:54:49 $ - Version: $Revision: 1.14 $ + Date: $Date: 2010/03/25 08:50:32 $ + Version: $Revision: 1.15 $ Copyright: (c) 2002, 2003 License: @@ -165,9 +165,9 @@ delete mvtkmprbasedata; } - marImageData *marimagedata = new marImageData( imagedata ); + /*marImageData *marimagedata = new marImageData( imagedata ); mvtkmprbasedata = new vtkMPRBaseData(); - mvtkmprbasedata->SetMarImageData(marimagedata); + mvtkmprbasedata->SetMarImageData(marimagedata);*/ if(_currentwxw != NULL){ _currentwxw->Show(false); @@ -179,15 +179,15 @@ //std::cout<<"size "<size()<size()==1) { - wxwindow1 = new wxMaracas_ViewerWidget(this, imagedata, (*nTypeView)[0],mvtkmprbasedata); + wxwindow1 = new wxMaracas_ViewerWidget(this, imagedata, (*nTypeView)[0]); wxwindow1->ConfigureVTK(); wxwindow = wxwindow1; }else if (nTypeView->size()==2) { wxSplitterWindow *spliter = new wxSplitterWindow( this , -1); spliter->SetMinimumPaneSize(1); - wxwindow1 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[0],mvtkmprbasedata); - wxwindow2 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[1],mvtkmprbasedata); + wxwindow1 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[0]); + wxwindow2 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[1]); wxwindow1->ConfigureVTK(); wxwindow2->ConfigureVTK(); spliter -> SplitVertically( wxwindow1 , wxwindow2 ); @@ -198,9 +198,9 @@ wxSplitterWindow *spliterA = new wxSplitterWindow( spliter , -1); spliter->SetMinimumPaneSize(1); spliterA->SetMinimumPaneSize(1); - wxwindow1 = new wxMaracas_ViewerWidget(spliter , imagedata, (*nTypeView)[0],mvtkmprbasedata); - wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1],mvtkmprbasedata); - wxwindow3 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[2],mvtkmprbasedata); + wxwindow1 = new wxMaracas_ViewerWidget(spliter , imagedata, (*nTypeView)[0]); + wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1]); + wxwindow3 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[2]); wxwindow1->ConfigureVTK(); wxwindow2->ConfigureVTK(); wxwindow3->ConfigureVTK(); @@ -214,10 +214,10 @@ spliter->SetMinimumPaneSize(1); spliterA->SetMinimumPaneSize(1); spliterB->SetMinimumPaneSize(1); - wxwindow1 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[0],mvtkmprbasedata); - wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1],mvtkmprbasedata); - wxwindow3 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[2],mvtkmprbasedata); - wxwindow4 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[3],mvtkmprbasedata); + wxwindow1 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[0]); + wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1]); + wxwindow3 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[2]); + wxwindow4 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[3]); wxwindow1->ConfigureVTK(); wxwindow2->ConfigureVTK(); wxwindow3->ConfigureVTK(); @@ -248,7 +248,7 @@ //----------------------------------------------------------------------------------- void wxMaracas_N_ViewersWidget::SetImage( vtkImageData *image ) - { + { if (wxwindow1!=NULL) { wxwindow1->SetImage(image); } if (wxwindow2!=NULL) { wxwindow2->SetImage(image); } if (wxwindow3!=NULL) { wxwindow3->SetImage(image); } diff --git a/lib/maracasVisuLib/src/kernel/marImageData.cpp b/lib/maracasVisuLib/src/kernel/marImageData.cpp index d8738e7..47f1481 100644 --- a/lib/maracasVisuLib/src/kernel/marImageData.cpp +++ b/lib/maracasVisuLib/src/kernel/marImageData.cpp @@ -91,7 +91,11 @@ void marImageData::removeImageData(int index) { if(index < _imagedataLST.size()){ - //vtkImageData* img = _imagedataLST[index]; + /*vtkImageData* img = _imagedataLST[index]; + if(img->GetReferenceCount()>1){ + img->SetReferenceCount(img->GetReferenceCount()-1); + //img->Delete(); + }*/ for(int i = index; i < _imagedataLST.size()-1; i++){ _imagedataLST[i] = _imagedataLST[i+1]; }