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 <!--========================================================================
83 creaImageIO::WxSimpleDlg dlg(0,crea::std2wx(bbGetInputTitle()),"localdatabase_Descriptor.dscp","Local Database");
84 dlg.SetAttrDicomTags( bbGetInputDicomTags() );
86 bbSetOutputDicomInfo( dlg.getDicomInfoImagesSelected() );
87 if (dlg.getImagesSelected().size()!=0){
88 bbSetOutputFileName( std::string( dlg.getInfoImage().mb_str() ) );
89 if(dlg.getImagesSelected().size() ==1)
91 bbSetOutputOut( dlg.getImagesSelected()[0] );
93 // FCY: it will be a big problem if we have several kind of data in the same folder.
94 // creation of a huge vtkImageData!!!!
95 vtkImageData* first = dlg.getImagesSelected()[0];
97 first->GetDimensions(dim);
100 out = vtkImageData::New();
101 out->SetScalarType(first->GetScalarType());
102 out->SetNumberOfScalarComponents(first->GetNumberOfScalarComponents());
104 first->GetWholeExtent(ext);
107 ext[5] = dlg.getImagesSelected().size()-1;
109 ext[5] = ext[5] * dlg.getImagesSelected().size()-1; // to deal with multiframes
113 first->GetDimensions(dim);
114 first->GetSpacing(spac);
115 if (spac[0]==spac[1])
119 out->SetSpacing(spac);
120 out->SetDimensions(dim[0], dim[1], dlg.getImagesSelected().size() );
121 out->AllocateScalars();
123 unsigned long imsize = dim[0] * dim[1];
124 imsize = imsize * dim[2]; // deal with multiframes here
125 // differents formats char , short, etc...
126 // differents components 1..3 ex. jpg ->RGB 3
127 imsize = imsize * first->GetScalarSize() * first->GetNumberOfScalarComponents();
128 int slice,sizeImageVector=dlg.getImagesSelected().size();
129 for (slice=0 ; slice<sizeImageVector ; slice++)
131 vtkImageData *img = dlg.getImagesSelected()[slice];
132 memcpy(out->GetScalarPointer(0,0,slice), img->GetScalarPointer(0,0,0), imsize);
136 //EED This is NOT working. The iteration over the pointer vtkImageData
138 // std::vector<vtkImageData*>::iterator it;
139 // for (it=dlg.getImagesSelected().begin(); it!=dlg.getImagesSelected().end(); ++it)
141 // memcpy(out->GetScalarPointer(0,0,slice), (*it)->GetScalarPointer(0,0,0), imsize);
144 // //for (it=dlg.getImagesSelected().begin(); it!=dlg.getImagesSelected().end(); ++it)
146 // // (*it)->Delete();
152 bbSetOutputOut(first);
156 bbSetOutputOut( NULL );
157 } // dlg.getImagesSelected().size()!=0
158 bbSetOutputOutImages( dlg.getImagesSelected());
159 printf("EED creaImageIOWxSimpleDlg 5 \n");
163 <!--======================================================================
164 CONSTRUCTORS / DESTRUCTORS (OPTIONAL) -->