]> Creatis software - bbtk.git/blob - packages/gdcmvtk/src/bbgdcmvtkGetInfoGdcmReader.cxx
Now uses the ImagesChooserDialogBox
[bbtk.git] / packages / gdcmvtk / src / bbgdcmvtkGetInfoGdcmReader.cxx
1 #include "bbgdcmvtkGetInfoGdcmReader.h"
2 #include "bbgdcmvtkPackage.h"
3
4 #include "gdcmFile.h"
5 #include "gdcmFileHelper.h"
6 #include "vtkImageData.h"
7 #include "vtkGdcmReader.h"
8 #include <vtkIndent.h>
9
10 namespace bbgdcmvtk
11 {
12
13 BBTK_ADD_BLACK_BOX_TO_PACKAGE(gdcmvtk,GetInfoGdcmReader)
14 BBTK_BLACK_BOX_IMPLEMENTATION(GetInfoGdcmReader,bbtk::AtomicBlackBox);
15 void GetInfoGdcmReader::Process()
16 {
17         // Reset de reader, f
18         bbUserFinalizeProcessing();
19         
20    f = GDCM_NAME_SPACE::File::New();
21    f->SetFileName( bbGetInputIn() );
22    bool res = f->Load();  
23    if ( !res )
24    {
25       f->Delete();
26       bbSetOutputOut(0);
27       return;
28    }
29  // Get info from THE image file (only *one* as input)
30    int i;
31    std::vector<double> v_iop;
32    float iop[6];
33    f->GetImageOrientationPatient(iop);
34    
35    for(i=0; i< 6; i++)
36       v_iop.push_back(iop[i]);
37    bbSetOutputIOP(v_iop );
38  
39    std::vector<double> v_ipp;
40    float ipp[3];
41    f->GetImagePositionPatient(ipp);
42    
43    for(i=0; i< 3; i++)
44       v_ipp.push_back(ipp[i]);
45    bbSetOutputIPP(v_ipp );
46
47    std::vector<double> v_pixelspacing;
48    v_pixelspacing.push_back(f->GetXSpacing());
49    v_pixelspacing.push_back(f->GetYSpacing());
50    
51    if (f->GetZSize() != 1) 
52    {
53       v_pixelspacing.push_back(f->GetZSpacing());
54    }
55    bbSetOutputPixelSpacing(v_pixelspacing);
56    
57    //double interslice;
58     bbSetOutputInterSlice(f->GetZSpacing());
59    
60    reader = vtkGdcmReader::New();
61    reader->SetFileName( bbGetInputIn().c_str() );
62    reader->Update();
63    reader->GetOutput();
64
65    vtkIndent indent ;
66    reader->GetOutput()->PrintSelf(std::cout, indent);
67    bbSetOutputOut( reader->GetOutput() );
68 }
69
70 void GetInfoGdcmReader::bbUserSetDefaultValues()
71 {
72    reader=NULL;
73    f=NULL;
74    bbSetInputIn("");  
75 }
76
77 void GetInfoGdcmReader::bbUserInitializeProcessing()
78 {
79 }
80         
81         
82         
83 void GetInfoGdcmReader::bbUserFinalizeProcessing()
84 {
85    if( reader )
86    {
87       reader->Delete();
88       reader=NULL;
89    }
90    if(f)
91    {
92       f->Delete();
93       f=NULL;
94    }    
95 }
96
97 }
98 // EO namespace bbgdcmvtk
99
100