#include <OpenImageDialog.h>
Public Member Functions | |
OpenImageDialog (bool usegimmick=true) | |
~OpenImageDialog () | |
vtkImageData * | getImageData () |
std::string | getFilename () |
Private Attributes | |
vtkImageData * | img |
std::string | _filename |
Definition at line 11 of file OpenImageDialog.h.
creaMaracasVisuKernel::OpenImageDialog::OpenImageDialog | ( | bool | usegimmick = true |
) |
Definition at line 14 of file OpenImageDialog.cxx.
References _filename, and img.
00015 { 00016 img = NULL; 00017 _filename = ""; 00018 bool gimmickfound = false; 00019 00020 if(usegimmick){ 00021 #ifdef WIN32 00022 HINSTANCE gimmickhandle; 00023 gimmickhandle = LoadLibrary(TEXT("creaImageIO.dll")); 00024 std::cout<<"imagehandle "<<gimmickhandle<<std::endl; 00025 if(gimmickhandle!=NULL){ 00026 00027 GETIMAGEDATADIALOG getImageDataDialog; 00028 00029 getImageDataDialog = (GETIMAGEDATADIALOG)GetProcAddress(gimmickhandle, "getImageDataDialog"); 00030 00031 std::cout<<"imagedatadialog "<<getImageDataDialog<<std::endl; 00032 00033 if(getImageDataDialog!=NULL){ 00034 img = getImageDataDialog(); 00035 gimmickfound = true; 00036 } 00037 if(!FreeLibrary(gimmickhandle)){ 00038 std::cout<<"Error while releasing the handle creaImageIO2.dll"<<std::endl; 00039 } 00040 } 00041 #else 00042 void * gimmickhandle; 00043 GETIMAGEDATADIALOG getImageDataDialog; 00044 char * erreur; 00045 int closingerror; 00046 gimmickhandle = dlopen ("libcreaImageIO.so", RTLD_LAZY); 00047 if (! gimmickhandle) { 00048 erreur = dlerror (); 00049 std::cout<<erreur<<"imagehandle "<<gimmickhandle<<std::endl; 00050 }else{ 00051 getImageDataDialog = (GETIMAGEDATADIALOG) dlsym (gimmickhandle, "getImageDataDialog"); 00052 if(!getImageDataDialog){ 00053 erreur = dlerror (); 00054 std::cout<<erreur<<"getImageDataDialog "<<getImageDataDialog<<std::endl; 00055 }else{ 00056 img = (*getImageDataDialog)(); 00057 gimmickfound = true; 00058 00059 } 00060 /*dlclose returns 0 on success, non-zero on error*/ 00061 closingerror = dlclose(gimmickhandle); 00062 if(closingerror!=0){ 00063 std::cout<<closingerror<<"error closing handle "<<gimmickhandle<<std::endl; 00064 }else{ 00065 std::cout<<"handle released..."<<std::endl; 00066 } 00067 } 00068 00069 #endif 00070 } 00071 00072 if(!gimmickfound || !usegimmick){ 00073 //int i, j, k, extint[6]; 00074 //double spacing[3]; 00075 //unsigned short* ptr1, *ptr2; 00076 wxFileDialog* FD = 00077 new wxFileDialog( 0, _T("Read Image"),wxEmptyString,wxEmptyString, _T("*.mhd")); 00078 00079 if (FD->ShowModal()==wxID_OK) 00080 { 00081 std::string path= crea::wx2std(FD->GetPath()); 00082 vtkMetaImageReader* reader = vtkMetaImageReader::New(); 00083 reader->SetFileName(path.c_str()); 00084 reader->Update(); 00085 _filename = path; 00086 img = vtkImageData::New(); 00087 img->DeepCopy(reader->GetOutput()); 00088 //reader->GetOutput()->Delete(); 00089 reader->Delete(); 00090 /*std::cout<<"image reference count "<<img->GetReferenceCount()<<std::endl; 00091 reader->GetOutput()->GetSpacing(spacing); 00092 img->SetSpacing(spacing); 00093 reader->GetOutput()->GetExtent(extint); 00094 img->SetExtent(extint); 00095 img->SetScalarType(reader->GetOutput()->GetScalarType()); 00096 img->AllocateScalars(); 00097 std::cout<<"image reference count "<<img->GetReferenceCount()<<std::endl; 00098 for (i=extint[0];i <= extint[1];i++){ 00099 for (j=extint[2];j<=extint[3];j++){ 00100 for (k=extint[4];k<=extint[5];k++){ 00101 00102 ptr1=(unsigned short*) reader->GetOutput()->GetScalarPointer(i,j,k); 00103 ptr2=(unsigned short*)img->GetScalarPointer(i,j,k); 00104 *ptr2 = *ptr1; 00105 } 00106 } 00107 }*/ 00108 00109 /*std::cout<<"image reference count "<<img->GetReferenceCount()<<std::endl;*/ 00110 } 00111 //delete FD; 00112 } 00113 }
creaMaracasVisuKernel::OpenImageDialog::~OpenImageDialog | ( | ) |
Definition at line 116 of file OpenImageDialog.cxx.
References img.
00117 { 00118 img = NULL; 00119 }
std::string creaMaracasVisuKernel::OpenImageDialog::getFilename | ( | ) |
Definition at line 124 of file OpenImageDialog.cxx.
References _filename.
00124 { 00125 return _filename; 00126 }
vtkImageData * creaMaracasVisuKernel::OpenImageDialog::getImageData | ( | ) |
Definition at line 121 of file OpenImageDialog.cxx.
References img.
Referenced by ColorLayerImageViewPanel::onReadImage().
00121 { 00122 return img; 00123 }
std::string creaMaracasVisuKernel::OpenImageDialog::_filename [private] |
Definition at line 23 of file OpenImageDialog.h.
Referenced by getFilename(), and OpenImageDialog().
vtkImageData* creaMaracasVisuKernel::OpenImageDialog::img [private] |
Definition at line 22 of file OpenImageDialog.h.
Referenced by getImageData(), OpenImageDialog(), and ~OpenImageDialog().