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("creaImageIO.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 ("libcreaImageIO.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[6];
75 //unsigned short* ptr1, *ptr2;
77 new wxFileDialog( 0, _T("Read Image"),wxEmptyString,wxEmptyString, _T("*.mhd"));
79 if (FD->ShowModal()==wxID_OK)
81 std::string path= crea::wx2std(FD->GetPath());
82 vtkMetaImageReader* reader = vtkMetaImageReader::New();
83 reader->SetFileName(path.c_str());
86 img = vtkImageData::New();
87 img->DeepCopy(reader->GetOutput());
88 //reader->GetOutput()->Delete();
90 /*std::cout<<"image reference count "<<img->GetReferenceCount()<<std::endl;
91 reader->GetOutput()->GetSpacing(spacing);
92 img->SetSpacing(spacing);
93 reader->GetOutput()->GetExtent(extint);
94 img->SetExtent(extint);
95 img->SetScalarType(reader->GetOutput()->GetScalarType());
96 img->AllocateScalars();
97 std::cout<<"image reference count "<<img->GetReferenceCount()<<std::endl;
98 for (i=extint[0];i <= extint[1];i++){
99 for (j=extint[2];j<=extint[3];j++){
100 for (k=extint[4];k<=extint[5];k++){
102 ptr1=(unsigned short*) reader->GetOutput()->GetScalarPointer(i,j,k);
103 ptr2=(unsigned short*)img->GetScalarPointer(i,j,k);
109 /*std::cout<<"image reference count "<<img->GetReferenceCount()<<std::endl;*/
115 //-------------------------------------------------------------------
116 OpenImageDialog::~OpenImageDialog()
121 vtkImageData* OpenImageDialog::getImageData(){
124 std::string OpenImageDialog::getFilename(){