X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=Example%2FexReadPapyrus.cxx;h=eed4ddb3a843571d76f5d7953887b93276959753;hb=858831b701f7709873c40a85fafe7dcf1c1e4d39;hp=12f0a188237bff639f900422c31174c1b022e6b3;hpb=42f99181451647078d4b808bb0f7bdb3e63e8a8e;p=gdcm.git diff --git a/Example/exReadPapyrus.cxx b/Example/exReadPapyrus.cxx index 12f0a188..eed4ddb3 100644 --- a/Example/exReadPapyrus.cxx +++ b/Example/exReadPapyrus.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: exReadPapyrus.cxx,v $ Language: C++ - Date: $Date: 2005/06/27 15:46:27 $ - Version: $Revision: 1.2 $ + Date: $Date: 2005/10/25 14:52:28 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -18,8 +18,7 @@ #include "gdcmFile.h" #include "gdcmFileHelper.h" #include "gdcmDocument.h" -#include "gdcmValEntry.h" -#include "gdcmBinEntry.h" +#include "gdcmDataEntry.h" #include "gdcmSeqEntry.h" #include "gdcmSQItem.h" #include "gdcmDebug.h" @@ -134,35 +133,36 @@ int main(int argc, char *argv[]) } int loadMode = 0x0; // load everything - gdcm::File *e1 = new gdcm::File(); - e1->SetLoadMode(loadMode); + gdcm::File *f = gdcm::File::New(); + f->SetLoadMode( loadMode ); + f->SetFileName( fileName ); + bool res = f->Load(); - bool res = e1->Load( fileName ); if ( !res ) { - delete e1; + f->Delete(); return 0; } // Look for private Papyrus Sequence - gdcm::SeqEntry *seqPapyrus= e1->GetSeqEntry(0x0041, 0x1050); + gdcm::SeqEntry *seqPapyrus= f->GetSeqEntry(0x0041, 0x1050); if (!seqPapyrus) { std::cout << "NOT a Papyrus File : " << fileName <Delete(); return 1; } // gdcm::FileHelper *original = new gdcm::FileHelper( fileName ); // gdcm::File *h = original->GetFile(); - //gdcm::FileHelper *f1 = new gdcm::FileHelper(e1); + //gdcm::FileHelper *f1 = new gdcm::FileHelper(f); gdcm::SQItem *sqi = seqPapyrus->GetFirstSQItem(); if (sqi == 0) { std::cout << "NO SQItem found within private Papyrus Sequence" << std::endl; - delete e1; + f->Delete(); return 1; } @@ -177,12 +177,12 @@ int main(int argc, char *argv[]) // Modality, Transfer Syntax, Study Date, Study Time // Patient Name, Media Storage SOP Instance UID, etc - MediaStSOPinstUID = e1->GetEntryValue(0x0002,0x0002); - TransferSyntax = e1->GetEntryValue(0x0002,0x0010); - StudyDate = sqi->GetEntryValue(0x0008,0x0020); - StudyTime = sqi->GetEntryValue(0x0008,0x0030); - Modality = sqi->GetEntryValue(0x0008,0x0060); - PatientName = sqi->GetEntryValue(0x0010,0x0010); + MediaStSOPinstUID = f->GetEntryString(0x0002,0x0002); + TransferSyntax = f->GetEntryString(0x0002,0x0010); + StudyDate = sqi->GetEntryString(0x0008,0x0020); + StudyTime = sqi->GetEntryString(0x0008,0x0030); + Modality = sqi->GetEntryString(0x0008,0x0060); + PatientName = sqi->GetEntryString(0x0010,0x0010); std::cout << "TransferSyntax " << TransferSyntax << std::endl; @@ -197,17 +197,17 @@ int main(int argc, char *argv[]) // we brutally suppose all the images within a Papyrus file // have the same caracteristics. - // if you're aware they have not, just move the GetEntryValue + // if you're aware they have not, just move the GetEntryString // inside the loop // Get caracteristics of the first image - SamplesPerPixel = sqi->GetEntryValue(0x0028,0x0002); - Rows = sqi->GetEntryValue(0x0028,0x0010); - Columns = sqi->GetEntryValue(0x0028,0x0011); - BitsAllocated = sqi->GetEntryValue(0x0028,0x0100); - BitsStored = sqi->GetEntryValue(0x0028,0x0101); - HighBit = sqi->GetEntryValue(0x0028,0x0102); - PixelRepresentation = sqi->GetEntryValue(0x0028,0x0103); + SamplesPerPixel = sqi->GetEntryString(0x0028,0x0002); + Rows = sqi->GetEntryString(0x0028,0x0010); + Columns = sqi->GetEntryString(0x0028,0x0011); + BitsAllocated = sqi->GetEntryString(0x0028,0x0100); + BitsStored = sqi->GetEntryString(0x0028,0x0101); + HighBit = sqi->GetEntryString(0x0028,0x0102); + PixelRepresentation = sqi->GetEntryString(0x0028,0x0103); // just convert those needed to compute PixelArea length int iRows = (uint32_t) atoi( Rows.c_str() ); @@ -224,7 +224,7 @@ int main(int argc, char *argv[]) // allocate enough room to get the pixels of all images. uint8_t *PixelArea = new uint8_t[lgrImage*nbImages]; uint8_t *currentPosition = PixelArea; - gdcm::BinEntry *pixels; + gdcm::DataEntry *pixels; // declare and open the file std::ifstream *Fp; @@ -246,7 +246,7 @@ int main(int argc, char *argv[]) while (sqi) { std::cout << "One more image read. Keep waiting" << std::endl; - Rows = sqi->GetEntryValue(0x0028,0x0010); + Rows = sqi->GetEntryString(0x0028,0x0010); // minimum integrity check if (Rows != previousRows) { @@ -254,7 +254,7 @@ int main(int argc, char *argv[]) return 1; } // get the images pixels - pixels = sqi->GetBinEntry(0x7fe0,0x0010); + pixels = sqi->GetDataEntry(0x7fe0,0x0010); offset = pixels->GetOffset(); // perform a fseek, on offset length on the 'right' length Fp->seekg(offset, std::ios::beg); @@ -271,28 +271,28 @@ int main(int argc, char *argv[]) std::string NumberOfFrames = gdcm::Util::Format("%d", nbImages); - gdcm::File *n = new gdcm::File(); + gdcm::File *n = gdcm::File::New(); - n->InsertValEntry(MediaStSOPinstUID, 0x0002,0x0002); + n->InsertEntryString(MediaStSOPinstUID, 0x0002,0x0002); // Whe keep default gdcm Transfer Syntax (Explicit VR Little Endian) // since using Papyrus one (Implicit VR Little Endian) is a mess - //n->InsertValEntry(TransferSyntax, 0x0002,0x0010); - n->InsertValEntry(StudyDate, 0x0008,0x0020); - n->InsertValEntry(StudyTime, 0x0008,0x0030); - n->InsertValEntry(Modality, 0x0008,0x0060); - n->InsertValEntry(PatientName, 0x0010,0x0010); - - n->InsertValEntry(SamplesPerPixel, 0x0028,0x0002); - n->InsertValEntry(NumberOfFrames, 0x0028,0x0008); - n->InsertValEntry(Rows, 0x0028,0x0010); - n->InsertValEntry(Columns, 0x0028,0x0011); - n->InsertValEntry(BitsAllocated, 0x0028,0x0100); - n->InsertValEntry(BitsStored, 0x0028,0x0101); - n->InsertValEntry(HighBit, 0x0028,0x0102); - n->InsertValEntry(PixelRepresentation,0x0028,0x0103); + //n->InsertEntryString(TransferSyntax, 0x0002,0x0010); + n->InsertEntryString(StudyDate, 0x0008,0x0020); + n->InsertEntryString(StudyTime, 0x0008,0x0030); + n->InsertEntryString(Modality, 0x0008,0x0060); + n->InsertEntryString(PatientName, 0x0010,0x0010); + + n->InsertEntryString(SamplesPerPixel, 0x0028,0x0002); + n->InsertEntryString(NumberOfFrames, 0x0028,0x0008); + n->InsertEntryString(Rows, 0x0028,0x0010); + n->InsertEntryString(Columns, 0x0028,0x0011); + n->InsertEntryString(BitsAllocated, 0x0028,0x0100); + n->InsertEntryString(BitsStored, 0x0028,0x0101); + n->InsertEntryString(HighBit, 0x0028,0x0102); + n->InsertEntryString(PixelRepresentation,0x0028,0x0103); // create the file - gdcm::FileHelper *file = new gdcm::FileHelper(n); + gdcm::FileHelper *file = gdcm::FileHelper::New(n); file->SetImageData(PixelArea,lgrImage*nbImages); file->SetWriteTypeToDcmExplVR(); @@ -305,7 +305,11 @@ int main(int argc, char *argv[]) if (!file) { std::cout <<"Fail to open (write) file:[" << outputFileName << "]" << std::endl;; + n->Delete(); + file->Delete(); return 1; } + n->Delete(); + file->Delete(); return 0; }