X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=bbtk%2Fsrc%2FbbcreaImageIOImagesChooserDialogBox.xml;h=5c753905a3a44195ae37c4f18a2fe032d3afcc4e;hb=239bc68ced8df17fbab55fa97c826e2cb20aec76;hp=d6c28ced88f2b6d443ea49e99adcdf1f34341982;hpb=ed24dfaafd7ac321df590440e262f42c45acecbc;p=creaImageIO.git diff --git a/bbtk/src/bbcreaImageIOImagesChooserDialogBox.xml b/bbtk/src/bbcreaImageIOImagesChooserDialogBox.xml index d6c28ce..5c75390 100644 --- a/bbtk/src/bbcreaImageIOImagesChooserDialogBox.xml +++ b/bbtk/src/bbcreaImageIOImagesChooserDialogBox.xml @@ -1,3 +1,30 @@ + + @@ -23,16 +50,87 @@ typedef std::vector OutputImagesType; - + +
-      creaImageIO::WxSimpleDlg dlg(0,crea::std2wx(bbGetInputTitle()));
-      dlg.ShowModal();
-      bbSetOutputOut( dlg.getImagesSelected());
+        creaImageIO::WxSimpleDlg dlg(0,crea::std2wx(bbGetInputTitle()),"localdatabase_Descriptor.dscp","Local Database"); 
+		dlg.ShowModal(); 
+		if (dlg.getImagesSelected().size()!=0){ 
+		  if(dlg.getImagesSelected().size() ==1)
+		  {
+			bbSetOutputOut( dlg.getImagesSelected()[0] );  
+		  }
+		  else
+		  {
+			  // FCY: it will be a big problem if we have several kind of data in the same folder.
+			  vtkImageData *out;
+			  // creation of a huge vtkImageData!!!!
+			  vtkImageData* first = dlg.getImagesSelected()[0];
+			  out  = vtkImageData::New();
+			  out->SetScalarType(first->GetScalarType());
+			  out->SetNumberOfScalarComponents(first->GetNumberOfScalarComponents());
+			  int ext[6];
+			  first->GetWholeExtent(ext); 
+			  if(ext[5] == 0)
+			  {
+			    ext[5] = dlg.getImagesSelected().size()-1;
+			  }
+			  else
+			  {
+				ext[5] = ext[5] * dlg.getImagesSelected().size()-1; // to deal with multiframes 
+			  }
+			  out->SetExtent(ext);
+			  int dim[3];
+			  double spac[3];
+			  first->GetDimensions(dim);
+			  first->GetSpacing(spac);
+ 			  if (spac[0]==spac[1])
+                          {
+                               spac[2]=spac[0];  
+		          }
+		          out->SetSpacing(spac);
+			  out->SetDimensions(dim[0], dim[1], dlg.getImagesSelected().size() );
+			  out->AllocateScalars();
+			  out->Update();
+			  unsigned long imsize = dim[0] * dim[1];
+			  imsize = imsize * dim[2];  // deal with multiframes here
+			  // differents formats char , short, etc...
+			  // differents components 1..3  ex. jpg ->RGB 3
+			  imsize = imsize * first->GetScalarSize() * first->GetNumberOfScalarComponents();
+
+  		        int slice,sizeImageVector=dlg.getImagesSelected().size();
+                        for (slice=0 ; sliceGetScalarPointer(0,0,slice), img->GetScalarPointer(0,0,0), imsize);
+				//img->Delete();
+			 }	
+
+//EED Notworking the iteration over the pointer vtkImageData
+//		      int slice=0;
+//		      std::vector::iterator it;
+//		      for (it=dlg.getImagesSelected().begin(); it!=dlg.getImagesSelected().end(); ++it) 
+//			  {
+//				  memcpy(out->GetScalarPointer(0,0,slice), (*it)->GetScalarPointer(0,0,0), imsize);
+//				  slice++;
+//			  }	
+//		       //for (it=dlg.getImagesSelected().begin(); it!=dlg.getImagesSelected().end(); ++it) 
+//			//  {
+// 			//	(*it)->Delete();
+//			//  }
+
+
+			 bbSetOutputOut(out);
+		  }
+		} else { 
+	      bbSetOutputOut( NULL );  
+		} 
+        bbSetOutputOutImages( dlg.getImagesSelected());