]> Creatis software - bbtk.git/blob - packages/gdcmvtk/src/bbgdcmvtkGetInfoGdcmReader.cxx
Improve Comments
[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    for(i=0; i< 6; i++)
35       v_iop.push_back(iop[i]);
36    bbSetOutputIOP(v_iop );
37  
38    std::vector<double> v_ipp;
39    float ipp[3];
40    f->GetImagePositionPatient(ipp);
41    for(i=0; i< 3; i++)
42       v_ipp.push_back(ipp[i]);
43    bbSetOutputIPP(v_ipp );
44
45    std::vector<double> v_pixelspacing;
46    v_pixelspacing.push_back(f->GetXSpacing());
47    v_pixelspacing.push_back(f->GetYSpacing());
48    if (f->GetZSize() != 1) {
49       v_pixelspacing.push_back(f->GetZSpacing());
50    }
51    bbSetOutputPixelSpacing(v_pixelspacing);
52    
53    //double interslice;
54     bbSetOutputInterSlice(f->GetZSpacing());
55    
56    reader = vtkGdcmReader::New();
57    reader->SetFileName( bbGetInputIn().c_str() );
58    reader->Update();
59    reader->GetOutput();
60
61    vtkIndent indent ;
62    reader->GetOutput()->PrintSelf(std::cout, indent);
63    bbSetOutputOut( reader->GetOutput() );
64 }
65
66 void GetInfoGdcmReader::bbUserSetDefaultValues()
67 {
68         reader=NULL;
69         f=NULL;
70     bbSetInputIn("");  
71 }
72
73 void GetInfoGdcmReader::bbUserInitializeProcessing()
74 {
75 }
76         
77         
78         
79 void GetInfoGdcmReader::bbUserFinalizeProcessing()
80 {
81         if(reader){
82       reader->Delete();
83           reader=NULL;
84         }
85         if(f){
86       f->Delete();
87           f=NULL;
88         }
89         
90 }
91
92 }
93 // EO namespace bbgdcmvtk
94
95