2 # ---------------------------------------------------------------------
4 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
6 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
7 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
8 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
10 # This software is governed by the CeCILL-B license under French law and
11 # abiding by the rules of distribution of free software. You can use,
12 # modify and/ or redistribute the software under the terms of the CeCILL-B
13 # license as circulated by CEA, CNRS and INRIA at the following URL
14 # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
15 # or in the file LICENSE.txt.
17 # As a counterpart to the access to the source code and rights to copy,
18 # modify and redistribute granted by the license, users are provided only
19 # with a limited warranty and the software's author, the holder of the
20 # economic rights, and the successive licensors have only limited
23 # The fact that you are presently reading this means that you have had
24 # knowledge of the CeCILL-B license and that you accept its terms.
25 # ------------------------------------------------------------------------
28 <?xml version="1.0" encoding="iso-8859-1"?>
29 <!--==========================================================================
30 STARTS THE DESCRIPTION OF THE BLACK BOX -->
31 <blackbox name="ImagesChooserDialogBox">
32 <!--========================================================================
33 THE BOX DOCUMENTATION -->
34 <author>cervenansky.frederic@creatis.insa-lyon.fr</author>
36 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.
38 <category>image;reader;dicom;</category>
40 <!--========================================================================
41 #include directives to be put in the .h generated
42 There must be one tag per file to include -->
43 <include>creaImageIOWxSimpleDlg.h</include>
44 <!--========================================================================
45 INPUTS/OUTPUTS DECLARATION -->
47 <input name="Title" type="std::string" description="Title of the dialog"/>
53 typedef std::vector<std::string> VectorStringType;</PRE>
55 <input name="DicomTags" type="VectorStringType" description="Dicom Tags (vector of Dicom tags ex: D0028_0030 D0020_0037)"/>
59 typedef std::vector<vtkImageData*> OutputImagesType;</PRE>
61 <output name="Out" type="vtkImageData*" description="The selected image"/>
62 <output name="OutImages" type="OutputImagesType" description="Vector of selected images"/>
66 typedef std::map<std::string, std::string> MapInfoDicom;</PRE>
71 typedef std::vector< MapInfoDicom > VectorMapInfoDicom;</PRE>
74 <output name="DicomInfo" type="VectorMapInfoDicom" description="vector of maps of Dicom tags"/>
75 <output name="FileName" type="std::string" description="Selected file name"/>
77 <!--========================================================================
85 creaImageIO::WxSimpleDlg dlg(0,crea::std2wx(bbGetInputTitle()),"localdatabase_Descriptor.dscp","Local Database");
86 dlg.SetAttrDicomTags( bbGetInputDicomTags() );
88 bbSetOutputDicomInfo( dlg.getDicomInfoImagesSelected() );
89 if (dlg.getImagesSelected().size()!=0)
91 bbSetOutputFileName( std::string( dlg.getInfoImage().mb_str() ) );
92 bbSetOutputOut( dlg.getVolumeSelected() );
95 if(dlg.getImagesSelected().size() ==1)
97 bbSetOutputOut( dlg.getImagesSelected()[0] );
99 // FCY: it will be a big problem if we have several kind of data in the same folder.
100 // creation of a huge vtkImageData!!!!
101 vtkImageData* first = dlg.getImagesSelected()[0];
103 first->GetDimensions(dim);
106 out = vtkImageData::New();
107 out->SetScalarType(first->GetScalarType());
108 out->SetNumberOfScalarComponents(first->GetNumberOfScalarComponents());
110 first->GetWholeExtent(ext);
113 ext[5] = dlg.getImagesSelected().size()-1;
115 ext[5] = ext[5] * dlg.getImagesSelected().size()-1; // to deal with multiframes
119 first->GetDimensions(dim);
120 first->GetSpacing(spac);
121 if (spac[0]==spac[1])
125 out->SetSpacing(spac);
126 out->SetDimensions(dim[0], dim[1], dlg.getImagesSelected().size() );
127 out->AllocateScalars();
129 unsigned long imsize = dim[0] * dim[1];
130 imsize = imsize * dim[2]; // deal with multiframes here
131 // differents formats char , short, etc...
132 // differents components 1..3 ex. jpg ->RGB 3
133 imsize = imsize * first->GetScalarSize() * first->GetNumberOfScalarComponents();
134 int slice,sizeImageVector=dlg.getImagesSelected().size();
135 for (slice=0 ; slice<sizeImageVector ; slice++)
137 vtkImageData *img = dlg.getImagesSelected()[slice];
138 memcpy(out->GetScalarPointer(0,0,slice), img->GetScalarPointer(0,0,0), imsize);
142 //EED This is NOT working. The iteration over the pointer vtkImageData
144 // std::vector<vtkImageData*>::iterator it;
145 // for (it=dlg.getImagesSelected().begin(); it!=dlg.getImagesSelected().end(); ++it)
147 // memcpy(out->GetScalarPointer(0,0,slice), (*it)->GetScalarPointer(0,0,0), imsize);
150 // //for (it=dlg.getImagesSelected().begin(); it!=dlg.getImagesSelected().end(); ++it)
152 // // (*it)->Delete();
158 bbSetOutputOut(first);
164 bbSetOutputOut( NULL );
165 } // dlg.getImagesSelected().size()!=0
169 bbSetOutputOutImages( dlg.getImagesSelected());
170 printf("EED creaImageIOWxSimpleDlg 5 \n");
174 <!--======================================================================
175 CONSTRUCTORS / DESTRUCTORS (OPTIONAL) -->