Program: gdcm
Module: $RCSfile: FindTags.cxx,v $
Language: C++
- Date: $Date: 2004/12/03 20:43:36 $
- Version: $Revision: 1.7 $
+ Date: $Date: 2007/05/23 14:18:04 $
+ Version: $Revision: 1.17 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
+#include "gdcmFileHelper.h"
#include "gdcmFile.h"
-#include "gdcmHeader.h"
#include "gdcmUtil.h"
#include <iostream>
#include <stdio.h> // for sscanf
-int main(int argc, char* argv[])
+int main(int argc, char *argv[])
{
- std::string toto, titi;
-
- gdcm::File * f1;
-
- if(argc > 1 )
- f1 = new gdcm::File(argv[1]);
- else {
- toto = GDCM_DATA_ROOT;
- toto += "/test.acr";
- f1 = new gdcm::File(toto);
+ std::string fileName;
+
+ GDCM_NAME_SPACE::FileHelper *h;
+ GDCM_NAME_SPACE::File *f = GDCM_NAME_SPACE::File::New();
+
+
+ if(argc > 1 )
+ f->SetFileName(argv[1]);
+ else
+ {
+ fileName = GDCM_DATA_ROOT;
+ fileName += "/test.acr";
+ f->SetFileName(fileName);
}
-
+
+ f->Load();
+ // Should test if it worked !
+
+ h = GDCM_NAME_SPACE::FileHelper::New(f);
+
std::string ManufacturerName="SIEMENS ";
std::string RecCode="ACR-NEMA 2.0";
std::string ImagePositionPatient, Location, ImageLocation;
- std::string zozo;
+ std::string fileNameToWrite;
char c;
float x, y, z, l;
- int dataSize = f1->GetImageDataSize();
+ int dataSize = h->GetImageDataSize();
std::cout << "---> pourFindTaggs : dataSize " << dataSize << std::endl;
- f1->SetEntryByNumber(RecCode ,0x0008,0x0010);
- f1->SetEntryByNumber(ManufacturerName ,0x0008,0x0070);
+ h->SetEntryString(RecCode ,0x0008,0x0010);
+ h->SetEntryString(ManufacturerName ,0x0008,0x0070);
// ImagePositionPatient
- ImagePositionPatient = f1->GetHeader()->GetEntryByNumber(0x0020,0x0032);
+ ImagePositionPatient = h->GetFile()->GetEntryString(0x0020,0x0032);
// Image Position (RET)
- f1->SetEntryByNumber(ImagePositionPatient, 0x0020,0x0030);
+ h->SetEntryString(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
- std::string zizi = gdcm::Util::Format("%f",l);
- Location = gdcm::Util::DicomString(zizi.c_str());
- f1->SetEntryByNumber(Location, 0x0020,0x0050);
+ std::string zizi = GDCM_NAME_SPACE::Util::Format("%f",l);
+ Location = GDCM_NAME_SPACE::Util::DicomString(zizi.c_str());
+ h->SetEntryString(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);
+//h->GetFile()->SetEntryLength(strlen(Location.c_str())-1, 0x0020,0x0050);
// Image Location
- zizi = gdcm::Util::Format("%d",0x7FE0);
- ImageLocation = gdcm::Util::DicomString(zizi.c_str());
-//f1->SetEntryByNumber(Location, 0x0028,0x0200);
-//f1->GetHeader()->SetEntryLengthByNumber(strlen(ImageLocation.c_str())-1, 0x0020,0x0050); // prudence !
+ zizi = GDCM_NAME_SPACE::Util::Format("%d",0x7FE0);
+ ImageLocation = GDCM_NAME_SPACE::Util::DicomString(zizi.c_str());
+//h->SetEntryString(Location, 0x0028,0x0200);
+//h->GetFile()->SetEntryLength(strlen(ImageLocation.c_str())-1, 0x0020,0x0050); // prudence !
-// void* imageData= f1->GetImageData();
+// void *imageData= h->GetImageData();
-// ecriture d'un fichier ACR à partir d'un dcmHeader correct.
+// ecriture d'un fichier ACR à partir d'un dcmFile correct.
- std::cout << "----------------avant PrintEntry---------------------" << std::endl;
- f1->GetHeader()->Print();
- std::cout << "----------------avant WriteDcm---------------------" << std::endl;
+ std::cout << "----------------before PrintEntry---------------------" << std::endl;
+ h->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.
- zozo = toto + ".acr";
+ fileNameToWrite = fileName + ".acr";
std::cout << "WriteACR" << std::endl;
- f1->WriteAcr(zozo);
+ h->WriteAcr(fileNameToWrite);
std::cout << "----------------apres Write---------------------" << std::endl;
+ h->Delete();
+ f->Delete();
+
return 0;
}