2 #include "OpenImageDialog.h"
11 typedef vtkImageData* (*GETIMAGEDATADIALOG)();
13 namespace creaMaracasVisuKernel{
14 OpenImageDialog::OpenImageDialog(bool usegimmick)
18 bool gimmickfound = false;
22 HINSTANCE gimmickhandle;
23 gimmickhandle = LoadLibrary(TEXT("creaImageIO2.dll"));
24 std::cout<<"imagehandle "<<gimmickhandle<<std::endl;
25 if(gimmickhandle!=NULL){
27 GETIMAGEDATADIALOG getImageDataDialog;
29 getImageDataDialog = (GETIMAGEDATADIALOG)GetProcAddress(gimmickhandle, "getImageDataDialog");
31 std::cout<<"imagedatadialog "<<getImageDataDialog<<std::endl;
33 if(getImageDataDialog!=NULL){
34 img = getImageDataDialog();
37 if(!FreeLibrary(gimmickhandle)){
38 std::cout<<"Error while releasing the handle creaImageIO2.dll"<<std::endl;
43 GETIMAGEDATADIALOG getImageDataDialog;
46 gimmickhandle = dlopen ("libcreaImageIO2.so", RTLD_LAZY);
47 if (! gimmickhandle) {
49 std::cout<<erreur<<"imagehandle "<<gimmickhandle<<std::endl;
51 getImageDataDialog = (GETIMAGEDATADIALOG) dlsym (gimmickhandle, "getImageDataDialog");
52 if(!getImageDataDialog){
54 std::cout<<erreur<<"getImageDataDialog "<<getImageDataDialog<<std::endl;
56 img = (*getImageDataDialog)();
60 /*dlclose returns 0 on success, non-zero on error*/
61 closingerror = dlclose(gimmickhandle);
63 std::cout<<closingerror<<"error closing handle "<<gimmickhandle<<std::endl;
65 std::cout<<"handle released..."<<std::endl;
72 if(!gimmickfound || !usegimmick){
73 //int i, j, k, *extint;
74 //unsigned short* ptr1, *ptr2;
76 new wxFileDialog( 0, _T("Read Image"),wxEmptyString,wxEmptyString, _T("*.mhd"));
78 if (FD->ShowModal()==wxID_OK)
80 std::string path= crea::wx2std(FD->GetPath());
81 vtkMetaImageReader* reader = vtkMetaImageReader::New();
82 reader->SetFileName(path.c_str());
84 img = vtkImageData::New();
85 img->DeepCopy(reader->GetOutput());
87 /*img->SetSpacing(reader->GetOutput()->GetSpacing());
88 extint = reader->GetOutput()->GetExtent();
89 img->SetExtent(extint);
90 img->SetScalarType(reader->GetOutput()->GetScalarType());
91 img->SetDimensions(reader->GetOutput()->GetDimensions());
92 img->AllocateScalars();
93 for (i=extint[0];i <= extint[1];i++){
94 for (j=extint[2];j<=extint[3];j++){
95 for (k=extint[4];k<=extint[5];k++){
97 ptr1=(unsigned short*) reader->GetOutput()->GetScalarPointer(i,j,k);
98 ptr2=(unsigned short*)img->GetScalarPointer(i,j,k);
108 //-------------------------------------------------------------------
109 OpenImageDialog::~OpenImageDialog()
114 vtkImageData* OpenImageDialog::getImageData(){