1 /*=========================================================================
4 Module: $RCSfile: PrintFile.cxx,v $
6 Date: $Date: 2005/06/07 11:12:10 $
7 Version: $Revision: 1.38 $
9 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10 l'Image). All rights reserved. See Doc/License.txt or
11 http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notices for more information.
17 =========================================================================*/
19 #include "gdcmFileHelper.h"
20 #include "gdcmDebug.h"
22 #include "gdcmArgMgr.h"
26 int main(int argc, char *argv[])
31 " Display the header of a ACR-NEMA/PAPYRUS/DICOM File",
32 " usage: PrintFile filein=fileName [level=n] [noshadow] [noseq] [debug] ",
33 " level = 0,1,2 : depending on the amount of details user wants to see",
34 " noshadow : user doesn't want to load Private groups (odd number)",
35 " noseq : user doesn't want to load Sequences ",
36 " debug : user wants to run the program in 'debug mode' ",
39 // Initialize Arguments Manager
40 gdcm::ArgMgr *am= new gdcm::ArgMgr(argc, argv);
44 am->ArgMgrUsage(usage); // Display 'usage'
49 char *fileName = am->ArgMgrWantString("filein",usage);
52 if ( am->ArgMgrDefined("noshadow") && am->ArgMgrDefined("noseq") )
53 loadMode = NO_SEQ | NO_SHADOW;
54 else if ( am->ArgMgrDefined("noshadow") )
56 else if ( am->ArgMgrDefined("noseq") )
61 int level = am->ArgMgrGetInt("level", 2);
63 if (am->ArgMgrDefined("debug"))
64 gdcm::Debug::DebugOn();
66 /* if unused Param we give up */
67 if ( am->ArgMgrPrintUnusedLabels() )
69 am->ArgMgrUsage(usage);
74 // gdcm::File::IsReadable() is no usable here, because we deal with
75 // any kind of gdcm-Parsable *document*
76 // not only gdcm::File (as opposed to gdcm::DicomDir)
78 gdcm::File *e1 = new gdcm::File();
79 e1->SetLoadMode(loadMode);
81 bool res = e1->Load( fileName );
89 gdcm::FileHelper *f1 = new gdcm::FileHelper(e1);
90 f1->SetPrintLevel( level );
94 std::cout << "\n\n" << std::endl;
96 std::cout <<std::endl;
97 std::cout <<" dataSize " << f1->GetImageDataSize() << std::endl;
98 std::cout <<" dataSizeRaw " << f1->GetImageDataRawSize() << std::endl;
100 int nX,nY,nZ,sPP,planarConfig;
101 std::string pixelType;
105 std::cout << " DIMX=" << nX << " DIMY=" << nY << " DIMZ=" << nZ << std::endl;
107 pixelType = e1->GetPixelType();
108 sPP = e1->GetSamplesPerPixel();
109 planarConfig = e1->GetPlanarConfiguration();
111 std::cout << " pixelType= [" << pixelType
112 << "] SamplesPerPixel= [" << sPP
113 << "] PlanarConfiguration= [" << planarConfig
115 << " PhotometricInterpretation= ["
116 << e1->GetEntryValue(0x0028,0x0004)
119 int numberOfScalarComponents=e1->GetNumberOfScalarComponents();
120 std::cout << " NumberOfScalarComponents = " << numberOfScalarComponents <<std::endl
121 << " LUT = " << (e1->HasLUT() ? "TRUE" : "FALSE")
125 if ( e1->GetEntryValue(0x0002,0x0010) == gdcm::GDCM_NOTLOADED )
127 std::cout << "Transfer Syntax not loaded. " << std::endl
128 << "Better you increase MAX_SIZE_LOAD_ELEMENT_VALUE"
133 std::string transferSyntaxName = e1->GetTransferSyntaxName();
134 std::cout << " TransferSyntaxName= [" << transferSyntaxName << "]" << std::endl;
135 std::cout << " SwapCode= " << e1->GetSwapCode() << std::endl;
138 std::cout <<std::endl<<fileName<<" is Readable"<<std::endl;
140 std::cout <<std::endl<<fileName<<" is NOT Readable"<<std::endl;
141 std::cout<<std::flush;