X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=Example%2FTestPapyrus.cxx;h=39b2efb65f88a5272fb5e8e4b0cf91d11e638eee;hb=145420342c6af4fc7a257c809a105ecd3d8d85cc;hp=63ae5e048e17f88c145f60fa2e3b477253390149;hpb=c094e185dd6404df031524ccae8e1b51e3b84871;p=gdcm.git diff --git a/Example/TestPapyrus.cxx b/Example/TestPapyrus.cxx index 63ae5e04..39b2efb6 100644 --- a/Example/TestPapyrus.cxx +++ b/Example/TestPapyrus.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: TestPapyrus.cxx,v $ Language: C++ - Date: $Date: 2005/01/21 11:40:52 $ - Version: $Revision: 1.5 $ + Date: $Date: 2005/01/26 15:40:18 $ + Version: $Revision: 1.11 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -96,7 +96,7 @@ int main(int argc, char* argv[]) // Look for private Papyrus Sequence gdcm::SeqEntry *seqPapyrus= h->GetSeqEntry(0x0041, 0x1050); - if (!h) + if (!seqPapyrus) { std::cout << "NOT a Papyrus File" << std::endl; delete h; @@ -123,12 +123,12 @@ int main(int argc, char* argv[]) // Modality, Transfer Syntax, Study Date, Study Time // Patient Name, Media Storage SOP Instance UID, etc - MediaStSOPinstUID = h->GetEntry(0x0002,0x0002); - TransferSyntax = h->GetEntry(0x0002,0x0010); - StudyDate = sqi->GetEntry(0x0008,0x0020); - StudyTime = sqi->GetEntry(0x0008,0x0030); - Modality = sqi->GetEntry(0x0008,0x0060); - PatientName = sqi->GetEntry(0x0010,0x0010); + MediaStSOPinstUID = h->GetEntryValue(0x0002,0x0002); + TransferSyntax = h->GetEntryValue(0x0002,0x0010); + StudyDate = sqi->GetEntryValue(0x0008,0x0020); + StudyTime = sqi->GetEntryValue(0x0008,0x0030); + Modality = sqi->GetEntryValue(0x0008,0x0060); + PatientName = sqi->GetEntryValue(0x0010,0x0010); std::cout << "TransferSyntax " << TransferSyntax << std::endl; @@ -143,18 +143,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 GetEntry + // if you're aware they have not, just move the GetEntryValue // inside the loop // Get caracteristics of the first image - - SamplesPerPixel = sqi->GetEntry(0x0028,0x0002); - Rows = sqi->GetEntry(0x0028,0x0010); - Columns = sqi->GetEntry(0x0028,0x0011); - BitsAllocated = sqi->GetEntry(0x0028,0x0100); - BitsStored = sqi->GetEntry(0x0028,0x0101); - HighBit = sqi->GetEntry(0x0028,0x0102); - PixelRepresentation = sqi->GetEntry(0x0028,0x0102); + 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,0x0102); // just convert those needed to compute PixelArea length int iRows = (uint32_t) atoi( Rows.c_str() ); @@ -165,16 +164,10 @@ int main(int argc, char* argv[]) int lgrImage = iRows*iColumns * iSamplesPerPixel * (iBitsAllocated/8); // compute number of images - int nbImages = 0; - while (sqi) - { - nbImages++; - sqi = seqPapyrus->GetNextSQItem(); - } + int nbImages = seqPapyrus->GetNumberOfSQItems(); std::cout <<"Number of frames :" << nbImages << std::endl; // 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; @@ -199,7 +192,7 @@ int main(int argc, char* argv[]) while (sqi) { std::cout << "One more image read. Keep waiting" << std::endl; - Rows = sqi->GetEntry(0x0028,0x0010); + Rows = sqi->GetEntryValue(0x0028,0x0010); // minimum integrity check if (Rows != previousRows) { @@ -225,25 +218,24 @@ int main(int argc, char* argv[]) std::string NumberOfFrames = gdcm::Util::Format("%d", nbImages); gdcm::File *n = new gdcm::File(); - n->InitializeDefaultFile(); - n->ReplaceOrCreate(MediaStSOPinstUID, 0x0002,0x0002); + n->InsertValEntry(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->ReplaceOrCreate(TransferSyntax, 0x0002,0x0010); - n->ReplaceOrCreate(StudyDate, 0x0008,0x0020); - n->ReplaceOrCreate(StudyTime, 0x0008,0x0030); - n->ReplaceOrCreate(Modality, 0x0008,0x0060); - n->ReplaceOrCreate(PatientName, 0x0010,0x0010); - - n->ReplaceOrCreate(SamplesPerPixel, 0x0028,0x0002); - n->ReplaceOrCreate(NumberOfFrames, 0x0028,0x0008); - n->ReplaceOrCreate(Rows, 0x0028,0x0010); - n->ReplaceOrCreate(Columns, 0x0028,0x0011); - n->ReplaceOrCreate(BitsAllocated, 0x0028,0x0100); - n->ReplaceOrCreate(BitsStored, 0x0028,0x0101); - n->ReplaceOrCreate(HighBit, 0x0028,0x0102); - n->ReplaceOrCreate(PixelRepresentation,0x0028,0x0102); + //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,0x0102); // create the file gdcm::FileHelper *file = new gdcm::FileHelper(n);