1 /*=========================================================================
4 Module: $RCSfile: PrintFile.cxx,v $
6 Date: $Date: 2005/06/06 12:41:04 $
7 Version: $Revision: 1.37 $
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 "gdcmDebug.h"
20 #include "gdcmFileHelper.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' ",
43 // Initialize Arguments Manager
44 gdcm::ArgMgr *am= new gdcm::ArgMgr(argc, argv);
48 am->ArgMgrUsage(usage); // Display 'usage'
53 fileName = am->ArgMgrWantString("filein",usage);
55 if (am->ArgMgrDefined("debug"))
56 gdcm::Debug::DebugOn();
58 e1 = new gdcm::File();
60 if ( am->ArgMgrDefined("noshadow") && am->ArgMgrDefined("noseq") )
61 e1->SetLoadMode(NO_SEQ | NO_SHADOW);
62 else if ( am->ArgMgrDefined("noshadow") )
63 e1->SetLoadMode(NO_SHADOW);
64 else if ( am->ArgMgrDefined("noseq") )
65 e1->SetLoadMode(NO_SEQ);
67 int level = am->ArgMgrGetInt("level", 2);
69 /* if unused Param we give up */
70 if ( am->ArgMgrPrintUnusedLabels() )
72 am->ArgMgrUsage(usage);
79 // gdcm::File::IsReadable() is no usable here, because we deal with
80 // any kind of gdcm-Parsable *document*
81 // not only gdcm::File (as opposed to gdcm::DicomDir)
83 res = e1->Load( fileName );
91 f1 = new gdcm::FileHelper(e1);
92 f1->SetPrintLevel( level );
96 std::cout << "\n\n" << std::endl;
98 std::cout <<std::endl;
99 std::cout <<" dataSize " << f1->GetImageDataSize() << std::endl;
100 std::cout <<" dataSizeRaw " << f1->GetImageDataRawSize() << std::endl;
102 int nX,nY,nZ,sPP,planarConfig;
103 std::string pixelType;
107 std::cout << " DIMX=" << nX << " DIMY=" << nY << " DIMZ=" << nZ << std::endl;
109 pixelType = e1->GetPixelType();
110 sPP = e1->GetSamplesPerPixel();
111 planarConfig = e1->GetPlanarConfiguration();
113 std::cout << " pixelType= [" << pixelType
114 << "] SamplesPerPixel= [" << sPP
115 << "] PlanarConfiguration= [" << planarConfig
117 << " PhotometricInterpretation= ["
118 << e1->GetEntryValue(0x0028,0x0004)
121 int numberOfScalarComponents=e1->GetNumberOfScalarComponents();
122 std::cout << " NumberOfScalarComponents = " << numberOfScalarComponents <<std::endl
123 << " LUT = " << (e1->HasLUT() ? "TRUE" : "FALSE")
127 if ( e1->GetEntryValue(0x0002,0x0010) == gdcm::GDCM_NOTLOADED )
129 std::cout << "Transfer Syntax not loaded. " << std::endl
130 << "Better you increase MAX_SIZE_LOAD_ELEMENT_VALUE"
135 std::string transferSyntaxName = e1->GetTransferSyntaxName();
136 std::cout << " TransferSyntaxName= [" << transferSyntaxName << "]" << std::endl;
137 std::cout << " SwapCode= " << e1->GetSwapCode() << std::endl;
140 std::cout <<std::endl<<fileName<<" is Readable"<<std::endl;
142 std::cout <<std::endl<<fileName<<" is NOT Readable"<<std::endl;
143 std::cout<<std::flush;