OpenImageDialog.cxx
Go to the documentation of this file.00001
00002 #include "OpenImageDialog.h"
00003 #include "creaWx.h"
00004
00005 #if defined(__GNUC__)
00006
00007
00008 #include <dlfcn.h>
00009 #endif
00010
00011 typedef vtkImageData* (*GETIMAGEDATADIALOG)();
00012
00013 namespace creaMaracasVisuKernel{
00014 OpenImageDialog::OpenImageDialog(bool usegimmick)
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
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
00074
00075
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
00089 reader->Delete();
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110 }
00111
00112 }
00113 }
00114
00115
00116 OpenImageDialog::~OpenImageDialog()
00117 {
00118 img = NULL;
00119 }
00120
00121 vtkImageData* OpenImageDialog::getImageData(){
00122 return img;
00123 }
00124 std::string OpenImageDialog::getFilename(){
00125 return _filename;
00126 }
00127 }