]> Creatis software - creaImageIO.git/blob - bbtk/src/bbcreaImageIOItkImagesChooserDialogBox.cxx
9c77a1de377b1cd7c416414c1b04e61aa985cd4b
[creaImageIO.git] / bbtk / src / bbcreaImageIOItkImagesChooserDialogBox.cxx
1 /*
2   # ---------------------------------------------------------------------
3   #
4   # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image 
5   #                        pour la Santé)
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
9   #
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.
16   #
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
21   #  liability. 
22   #
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   # ------------------------------------------------------------------------
26 */
27 //===== 
28 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
29 //===== 
30
31 #include "bbcreaImageIOItkImagesChooserDialogBox.h"
32 #include "bbcreaImageIOPackage.h"
33
34 // -------------------------------------------------------------------------
35 // LFV: avoid itk::Concept check on 4d or superior images
36 #define BBCREAIMAGEIO_ChooserDlg_Template( t, ty, di )            \
37   if( t == typeid( itk::Image< ty, di > ) )                       \
38   {                                                               \
39     this->Export< itk::Image< ty, di > >( );                      \
40     this->ExportVTK< itk::Image< ty, di > >( );                   \
41   }
42 // -------------------------------------------------------------------------
43
44 namespace bbcreaImageIO
45 {
46
47 BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaImageIO,ItkImagesChooserDialogBox)
48 BBTK_BLACK_BOX_IMPLEMENTATION(ItkImagesChooserDialogBox,bbtk::AtomicBlackBox);
49 //===== 
50 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
51 //===== 
52 void ItkImagesChooserDialogBox::Process()
53 {
54  
55     dlg = new creaImageIO::WxAnySimpleDlg(0,crea::std2wx(bbGetInputTitle()),"localdatabase_Descriptor.dscp","Local Database"); 
56     dlg->ShowModal(); 
57
58     bbtk::TypeInfo typ = bbitk::GetITKImagePtrTypeInfoFromPixelTypeInfoAndDimension(*dlg->getTypes().front(), dlg->getDims().front());
59
60     BBCREAIMAGEIO_ChooserDlg_Template( typ, char, 1 )
61     else BBCREAIMAGEIO_ChooserDlg_Template( typ, short, 1 )
62     else BBCREAIMAGEIO_ChooserDlg_Template( typ, int, 1 )
63     else BBCREAIMAGEIO_ChooserDlg_Template( typ, long, 1 )
64     else BBCREAIMAGEIO_ChooserDlg_Template( typ, float, 1 )
65     else BBCREAIMAGEIO_ChooserDlg_Template( typ, double, 1 )
66     else BBCREAIMAGEIO_ChooserDlg_Template( typ, unsigned char, 1 )
67     else BBCREAIMAGEIO_ChooserDlg_Template( typ, unsigned short, 1 )
68     else BBCREAIMAGEIO_ChooserDlg_Template( typ, unsigned int, 1 )
69     else BBCREAIMAGEIO_ChooserDlg_Template( typ, unsigned long, 1 )
70     else BBCREAIMAGEIO_ChooserDlg_Template( typ, char, 2 )
71     else BBCREAIMAGEIO_ChooserDlg_Template( typ, short, 2 )
72     else BBCREAIMAGEIO_ChooserDlg_Template( typ, int, 2 )
73     else BBCREAIMAGEIO_ChooserDlg_Template( typ, long, 2 )
74     else BBCREAIMAGEIO_ChooserDlg_Template( typ, float, 2 )
75     else BBCREAIMAGEIO_ChooserDlg_Template( typ, double, 2 )
76     else BBCREAIMAGEIO_ChooserDlg_Template( typ, unsigned char, 2 )
77     else BBCREAIMAGEIO_ChooserDlg_Template( typ, unsigned short, 2 )
78     else BBCREAIMAGEIO_ChooserDlg_Template( typ, unsigned int, 2 )
79     else BBCREAIMAGEIO_ChooserDlg_Template( typ, unsigned long, 2 )
80     else BBCREAIMAGEIO_ChooserDlg_Template( typ, char, 3 )
81     else BBCREAIMAGEIO_ChooserDlg_Template( typ, short, 3 )
82     else BBCREAIMAGEIO_ChooserDlg_Template( typ, int, 3 )
83     else BBCREAIMAGEIO_ChooserDlg_Template( typ, long, 3 )
84     else BBCREAIMAGEIO_ChooserDlg_Template( typ, float, 3 )
85     else BBCREAIMAGEIO_ChooserDlg_Template( typ, double, 3 )
86     else BBCREAIMAGEIO_ChooserDlg_Template( typ, unsigned char, 3 )
87     else BBCREAIMAGEIO_ChooserDlg_Template( typ, unsigned short, 3 )
88     else BBCREAIMAGEIO_ChooserDlg_Template( typ, unsigned int, 3 )
89     else BBCREAIMAGEIO_ChooserDlg_Template( typ, unsigned long, 3 );
90
91
92     /* Deprecated
93        BBTK_TEMPLATE_ITK_IMAGE_SWITCH(typ, Export);
94        BBTK_TEMPLATE_ITK_IMAGE_SWITCH(typ, ExportVTK);
95     */
96
97     delete dlg;
98 }
99
100 template <class TImage>
101 void ItkImagesChooserDialogBox::Export()
102 {
103    if (dlg->getImagesSelected().size() == 1)
104    { 
105                 bbSetOutputOut( dlg->getTemplatedImagesSelected<TImage>().front().GetPointer() ); 
106    } 
107    else if (dlg->getImagesSelected().size() > 1)
108    { 
109       OutputImagesITKType outVect;
110
111       typename  std::vector<typename TImage::Pointer> tempImgs= dlg->getTemplatedImagesSelected<TImage>();
112       typename std::vector<typename TImage::Pointer>::iterator it = tempImgs.begin();
113       for(;it != tempImgs.end(); ++it)
114       {
115          outVect.push_back( (*it).GetPointer() );
116       }
117       bbSetOutputOutIImages( outVect); 
118    } 
119    else
120    {
121       // warning: passing NULL to non-pointer 
122       //bbSetOutputOut( NULL);
123       bbSetOutputOut(0); // JPR
124    }
125          // FCY To test the Output
126           //typedef itk::Image <short, 3> ImageType;
127          //typedef itk::ImageFileReader< ImageType > itkReaderType;
128      //  typename itkReaderType::Pointer reader = itkReaderType::New();
129      //
130      //  reader->SetFileName("d:\test.hdr");
131      //   reader->Update(); 
132          //reader->GetOutput()->Register();
133      //  this->bbSetOutputOut(reader->GetOutput());
134 }
135 template <class TImage>
136 void ItkImagesChooserDialogBox::ExportVTK()
137 {
138         // BBTK can support only a vector with same dimensions image.
139          if (dlg->getDims().front() < 4)
140          { 
141                   typename std::vector<typename TImage::Pointer> tempImgs= dlg->getTemplatedImagesSelected<TImage>();
142                   typename std::vector<typename TImage::Pointer>::iterator it = tempImgs.begin();
143                   for(;it != tempImgs.end(); ++it)
144                   {
145                         dlg->split3Din3Dvtk<TImage>( (*it) );
146                   }
147                   bbSetOutputOutVImages( dlg->getVtkImagesSelected() ); 
148          } 
149          else if (dlg->getDims().front() == 4)
150          { 
151                 // To Test
152                  //  dlg->split4Din3Dvtk("d:/temp2");
153                  // bbSetOutputOutVImages( dlg->getVtkImagesSelected()); 
154          } 
155          else
156          {
157                   // NOT IMPLEMENTED YET FOR DIMENSIONS > 4
158         
159          }
160          
161 }
162 //===== 
163 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
164 //===== 
165 void ItkImagesChooserDialogBox::bbUserSetDefaultValues()
166 {
167  
168 }
169 //===== 
170 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
171 //===== 
172 void ItkImagesChooserDialogBox::bbUserInitializeProcessing()
173 {
174
175 }
176 //===== 
177 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
178 //===== 
179 void ItkImagesChooserDialogBox::bbUserFinalizeProcessing()
180 {
181
182 }
183 }
184 // EO namespace bbcreaImageIO