1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <!--==========================================================================
3 STARTS THE DESCRIPTION OF THE BLACK BOX -->
4 <blackbox name="ImagesChooserDialogBox">
5 <!--========================================================================
6 THE BOX DOCUMENTATION -->
7 <author>cervenansky.frederic@creatis.insa-lyon.fr</author>
9 ImagesChooserDialogBox is a simple application to select file(s) or directory or data from Gimmick database and display them. It handles DICOM, jpg, tif, png, bmp and mhd.
11 <category>image;reader;dicom;</category>
13 <!--========================================================================
14 #include directives to be put in the .h generated
15 There must be one tag per file to include -->
16 <include>creaImageIOWxSimpleDlg.h</include>
17 <!--========================================================================
18 INPUTS/OUTPUTS DECLARATION -->
20 <input name="Title" type="std::string" description="Title of the dialog"/>
23 typedef std::vector<vtkImageData*> OutputImagesType;</PRE>
26 <output name="Out" type="vtkImageData*" description="The selected image"/>
27 <output name="OutImages" type="OutputImagesType" description="Vector of selected images"/>
29 <!--========================================================================
34 creaImageIO::WxSimpleDlg dlg(0,crea::std2wx(bbGetInputTitle()),"localdatabase_Descriptor.dscp","Local Database");
36 if (dlg.getImagesSelected().size()!=0){
37 if(dlg.getImagesSelected().size() ==1)
39 bbSetOutputOut( dlg.getImagesSelected()[0] );
43 // FCY: it will be a big problem if we have several kind of data in the same folder.
45 // creation of a huge vtkImageData!!!!
46 vtkImageData* first = dlg.getImagesSelected()[0];
47 out = vtkImageData::New();
48 out->SetScalarType(first->GetScalarType());
49 out->SetNumberOfScalarComponents(first->GetNumberOfScalarComponents());
51 first->GetWholeExtent(ext);
54 ext[5] = dlg.getImagesSelected().size()-1;
58 ext[5] = ext[5] * dlg.getImagesSelected().size()-1; // to deal with multiframes
63 first->GetDimensions(dim);
64 first->GetSpacing(spac);
65 out->SetSpacing(spac);
66 out->SetDimensions(dim[0], dim[1], dlg.getImagesSelected().size() );
67 out->AllocateScalars();
69 unsigned long imsize = dim[0] * dim[1];
70 imsize = imsize * dim[2] ; // deal with multiframes here
71 // differents formats char , short, etc...
72 // differents components 1..3 ex. jpg ->RGB 3
73 imsize = imsize * first->GetScalarSize() * first->GetNumberOfScalarComponents();
75 std::vector<vtkImageData*>::iterator it;
76 for (it=dlg.getImagesSelected().begin(); it!=dlg.getImagesSelected().end(); ++it)
78 memcpy(out->GetScalarPointer(0,0,slice), (*it)->GetScalarPointer(0,0,0), imsize);
81 //for (it=dlg.getImagesSelected().begin(); it!=dlg.getImagesSelected().end(); ++it)
88 bbSetOutputOut( NULL );
90 bbSetOutputOutImages( dlg.getImagesSelected());
94 <!--======================================================================
95 CONSTRUCTORS / DESTRUCTORS (OPTIONAL) -->