X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=Example%2FAnonymizeNoLoad.cxx;h=b212f36b9dbd2b2dfc79390d8cc00b85a7e399d6;hb=334c1f1be0ecba3567a52225ee973d69e906c721;hp=238f68c1b898ffe67a70d105dd22f13ecb1cd1b9;hpb=c227f2b6e0b17c14620f47a8110d17b44188288b;p=gdcm.git diff --git a/Example/AnonymizeNoLoad.cxx b/Example/AnonymizeNoLoad.cxx index 238f68c1..b212f36b 100644 --- a/Example/AnonymizeNoLoad.cxx +++ b/Example/AnonymizeNoLoad.cxx @@ -1,10 +1,10 @@ -*========================================================================= +/*========================================================================= Program: gdcm Module: $RCSfile: AnonymizeNoLoad.cxx,v $ Language: C++ - Date: $Date: 2005/07/20 13:39:00 $ - Version: $Revision: 1.6 $ + Date: $Date: 2006/01/26 15:52:42 $ + Version: $Revision: 1.16 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -28,29 +28,29 @@ int main(int argc, char *argv[]) { START_USAGE(usage) - "\n AnonymizeNoLoad :\n", - "Anonymize a gdcm-readable Dicom image even if pixels aren't gdcm readable", - " Warning : Warning : the image is overwritten", - " to preserve image integrity, use a copy.", - "usage: AnonymizeNoLoad {filein=inputFileName|dirin=inputDirectoryName}", - " [rubout=listOfPrivateElementsToRubOut] ", - " [ { [noshadowseq] | [noshadow][noseq] } ] [debug]", - " inputFileName : Name of the (single) file user wants to anonymize", - " inputDirectoryName : user wants to anonymize *all* the files", - " within the (single Patient!) directory", - " listOfPrivateElementsToRubOut : group,elem (in hexa) of private ", - " Elements to rub out ", - " noshadowseq: user doesn't want to load Private Sequences", - " noshadow : user doesn't want to load Private groups (odd number)", - " noseq : user doesn't want to load Sequences ", - " debug : user wants to run the program in 'debug mode' ", + "\n AnonymizeNoLoad :\n ", + "Anonymize a gdcm-parsable Dicom image even if pixels aren't gdcm readable ", + " Warning : the image is OVERWRITTEN ", + " to preserve image integrity, use a copy. ", + "usage: AnonymizeNoLoad {filein=inputFileName|dirin=inputDirectoryName} ", + " [rubout=listOfElementsToRubOut] ", + " [ { [noshadowseq] | [noshadow][noseq] } ] [debug] ", + " inputFileName : Name of the (single) file user wants to anonymize ", + " inputDirectoryName : user wants to anonymize *all* the files ", + " within the (single Patient!) directory ", + " listOfElementsToRubOut : group-elem,g2-e2,... (in hexa, no space) ", + " of extra Elements to rub out ", + " noshadowseq: user doesn't want to load Private Sequences ", + " noshadow : user doesn't want to load Private groups (odd number) ", + " noseq : user doesn't want to load Sequences ", + " debug : user wants to run the program in 'debug mode' ", FINISH_USAGE // ----- Initialize Arguments Manager ------ gdcm::ArgMgr *am = new gdcm::ArgMgr(argc, argv); - if (am->ArgMgrDefined("usage")) + if (am->ArgMgrDefined("usage") || argc == 1) { am->ArgMgrUsage(usage); // Display 'usage' delete am; @@ -60,61 +60,66 @@ int main(int argc, char *argv[]) if (am->ArgMgrDefined("debug")) gdcm::Debug::DebugOn(); - char *fileName = am->ArgMgrGetString("filein",(char *)0); - char *dirName = am->ArgMgrGetString("dirin",(char *)0); + const char *fileName = am->ArgMgrGetString("filein"); + const char *dirName = am->ArgMgrGetString("dirin"); if ( (fileName == 0 && dirName == 0) || - (fileName != 0 && dirName != 0) ) + (fileName != 0 && dirName != 0) ) { std::cout <ArgMgrDefined("noshadowseq") ) - loadMode |= NO_SHADOWSEQ; + loadMode |= gdcm::LD_NOSHADOWSEQ; else { - if ( am->ArgMgrDefined("noshadow") ) - loadMode |= NO_SHADOW; + if ( am->ArgMgrDefined("noshadow") ) + loadMode |= gdcm::LD_NOSHADOW; if ( am->ArgMgrDefined("noseq") ) - loadMode |= NO_SEQ; + loadMode |= gdcm::LD_NOSEQ; } int rubOutNb; uint16_t *elemsToRubOut = am->ArgMgrGetXInt16Enum("rubout", &rubOutNb); + + /* if unused Param we give up */ + if ( am->ArgMgrPrintUnusedLabels() ) + { + am->ArgMgrUsage(usage); + delete am; + return 0; + } - std::cout << " ---------------------------- rubOutNb " << rubOutNb - << std::endl; delete am; // ------ we don't need Arguments Manager any longer ------ - + gdcm::File *f; if ( fileName != 0 ) // ====== Deal with a single file ====== { // // Parse the input file. // - gdcm::File *f; - f = new gdcm::File( ); + f = gdcm::File::New( ); f->SetLoadMode(loadMode); f->SetFileName( fileName ); - bool res = f->Load(); // gdcm::File::IsReadable() is no usable here, because we deal with // any kind of gdcm::Readable *document* // not only gdcm::File (as opposed to gdcm::DicomDir) - if ( !res ) + if ( !f->Load() ) { std::cout <Delete(); return 1; } std::cout << fileName << " is readable " << std::endl; @@ -165,9 +170,8 @@ int main(int argc, char *argv[]) f->AnonymizeNoLoad(); - // No need to write the File : modif were done on disc ! - // File was overwritten ... - + // No need to write the file : modif were done on disc ! + // ( The Dicom file is overwritten ) std::cout <<"End AnonymizeNoLoad" << std::endl; // @@ -175,7 +179,7 @@ int main(int argc, char *argv[]) // f->ClearAnonymizeList(); - delete f; + f->Delete(); return 0; } @@ -188,16 +192,13 @@ int main(int argc, char *argv[]) it != fileList.end(); ++it ) { - - gdcm::File *f; - f = new gdcm::File( ); + f = gdcm::File::New( ); f->SetLoadMode(loadMode); f->SetFileName( it->c_str() ); - bool res = f->Load(); - if ( !res ) + if ( !f->Load() ) { - delete f; + f->Delete(); continue; } // @@ -222,6 +223,8 @@ int main(int argc, char *argv[]) // Telephone f->AddAnonymizeElement(0x0010, 0x2154, "3615" ); + // deal with user defined Elements set + for (int ri=0; riAddAnonymizeElement((uint32_t)elemsToRubOut[2*ri], @@ -230,6 +233,7 @@ int main(int argc, char *argv[]) std::cout <<"Let's AnonymizeNoLoad " << it->c_str() << std::endl; // The gdcm::File remains untouched in memory + // The Dicom file is overwritten on disc f->AnonymizeNoLoad(); @@ -239,10 +243,9 @@ int main(int argc, char *argv[]) f->ClearAnonymizeList(); - delete f; - } - - } + f->Delete(); + } + } return 0; }