X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=Example%2FFindTags.cxx;h=566c86343870ea7f2964591c7e1c1cedacecf87e;hb=f711022dedd779e5e58e649af8c440a4a58bdba1;hp=7bd9c00eaa1190cd9bb81c3d62a2b5d6091448c9;hpb=978f699b97794e209f9d20e2a33a72404bda54ef;p=gdcm.git diff --git a/Example/FindTags.cxx b/Example/FindTags.cxx index 7bd9c00e..566c8634 100644 --- a/Example/FindTags.cxx +++ b/Example/FindTags.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: FindTags.cxx,v $ Language: C++ - Date: $Date: 2004/11/16 04:26:17 $ - Version: $Revision: 1.5 $ + Date: $Date: 2005/02/02 10:06:31 $ + Version: $Revision: 1.13 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -15,95 +15,97 @@ PURPOSE. See the above copyright notices for more information. =========================================================================*/ -#include -#include "gdcm.h" -#include "math.h" -#include +#include "gdcmFileHelper.h" +#include "gdcmFile.h" +#include "gdcmUtil.h" -int main(int argc, char* argv[]) { +#include +#include // for sscanf - std::string toto, titi; +int main(int argc, char *argv[]) +{ + std::string fileName; - gdcm::File * f1; + gdcm::FileHelper *f1; if(argc > 1 ) - f1 = new gdcm::File(argv[1]); + f1 = new gdcm::FileHelper(argv[1]); else { - toto = GDCM_DATA_ROOT; - toto += "/test.acr"; - f1 = new gdcm::File(toto); + fileName = GDCM_DATA_ROOT; + fileName += "/test.acr"; + f1 = new gdcm::FileHelper(fileName); } std::string ManufacturerName="SIEMENS "; std::string RecCode="ACR-NEMA 2.0"; std::string ImagePositionPatient, Location, ImageLocation; - char zozo[100], zizi[50]; + std::string fileNameToWrite; char c; float x, y, z, l; int dataSize = f1->GetImageDataSize(); - printf ("---> pourFindTaggs : dataSize %d\n",dataSize); + std::cout << "---> pourFindTaggs : dataSize " << dataSize << std::endl; - f1->SetEntryByNumber(RecCode ,0x0008,0x0010); - f1->SetEntryByNumber(ManufacturerName ,0x0008,0x0070); + f1->SetValEntry(RecCode ,0x0008,0x0010); + f1->SetValEntry(ManufacturerName ,0x0008,0x0070); // ImagePositionPatient - ImagePositionPatient = f1->GetHeader()->GetEntryByNumber(0x0020,0x0032); + ImagePositionPatient = f1->GetFile()->GetEntryValue(0x0020,0x0032); // Image Position (RET) - f1->SetEntryByNumber(ImagePositionPatient, 0x0020,0x0030); + f1->SetValEntry(ImagePositionPatient, 0x0020,0x0030); sscanf(ImagePositionPatient.c_str(), "%f%c%f%c%f", &x,&c,&y,&c,&z); -// ceci est probablement une mauvaise idée ! +// probablely a bad idea ! // (peut casser l'ordre des images si la pile d'images // traverse l'axe des X, ou des Y, ou des Z) //l=sqrt(x*x + y*y + z*z); -// ceci ne marchera pas si on se déplace à Z constant :-( +// Will not work if we move on a Z constant :-( l=z; // existerait-il qq chose qui marche à tout coup? // Location - sprintf(zizi,"%f\n",l); - Location = zizi; - f1->SetEntryByNumber(Location, 0x0020,0x0050); + std::string zizi = gdcm::Util::Format("%f",l); + Location = gdcm::Util::DicomString(zizi.c_str()); + f1->SetValEntry(Location, 0x0020,0x0050); // sinon, la longueur du champ est erronée (?!?) // Probable sac de noeud entre strlen(xxx.c_str()) et xxx.length() // a eclaircir ! -// SetEntryLengthByNumber is private now. -//TO DO : see is the pb goes on... +// SetEntryLength is private now. +//TO DO : see if the pb goes on... -//f1->GetHeader()->SetEntryLengthByNumber(strlen(Location.c_str())-1, 0x0020,0x0050); +//f1->GetFile()->SetEntryLength(strlen(Location.c_str())-1, 0x0020,0x0050); // Image Location - sprintf(zizi,"%d\n",0x7FE0); - ImageLocation = zizi; -//f1->SetEntryByNumber(Location, 0x0028,0x0200); -//f1->GetHeader()->SetEntryLengthByNumber(strlen(ImageLocation.c_str())-1, 0x0020,0x0050); // prudence ! + zizi = gdcm::Util::Format("%d",0x7FE0); + ImageLocation = gdcm::Util::DicomString(zizi.c_str()); +//f1->SetValEntry(Location, 0x0028,0x0200); +//f1->GetFile()->SetEntryLength(strlen(ImageLocation.c_str())-1, 0x0020,0x0050); // prudence ! -// void* imageData= f1->GetImageData(); +// void *imageData= f1->GetImageData(); -// ecriture d'un fichier ACR à partir d'un dcmHeader correct. +// ecriture d'un fichier ACR à partir d'un dcmFile correct. - printf ("----------------avant PrintEntry---------------------\n"); - f1->GetHeader()->Print(); - printf ("----------------avant WriteDcm---------------------\n"); + std::cout << "----------------before PrintEntry---------------------" << std::endl; + f1->GetFile()->Print(); + std::cout << "----------------before WriteDcm---------------------" << std::endl; -// ecriture d'un fichier ACR à partir d'un dcmHeader correct. +// ecriture d'un fichier ACR à partir d'un dcmFile correct. - sprintf(zozo, "%s.acr", toto.c_str()); - printf ("WriteACR\n"); - f1->WriteAcr(zozo); + fileNameToWrite = fileName + ".acr"; + std::cout << "WriteACR" << std::endl; + f1->WriteAcr(fileNameToWrite); - printf ("----------------apres Write---------------------\n"); + std::cout << "----------------apres Write---------------------" << std::endl; - return 0; + return 0; }