Program: gdcm
Module: $RCSfile: exReadWriteFile.cxx,v $
Language: C++
- Date: $Date: 2005/07/19 15:19:25 $
- Version: $Revision: 1.6 $
+ Date: $Date: 2007/05/23 14:18:05 $
+ Version: $Revision: 1.10 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
#include "gdcmFile.h"
#include "gdcmFileHelper.h"
#include "gdcmDocument.h"
-#include "gdcmValEntry.h"
-#include "gdcmBinEntry.h"
+#include "gdcmDataEntry.h"
#include "gdcmSeqEntry.h"
#include <stdlib.h> // for exit
std::string filename = argv[1];
std::string output = argv[2];
- // First, let's create a gdcm::File
+ // First, let's create a GDCM_NAME_SPACE::File
// that will contain all the Dicom fields but the Pixels Element
- gdcm::File *f1= new gdcm::File( );
+ GDCM_NAME_SPACE::File *f1= GDCM_NAME_SPACE::File::New( );
f1->SetFileName( filename );
f1->Load();
<< "--- Display only human readable values -----------------------"
<< std::endl;
- gdcm::ValEntry *valEntry;
+ GDCM_NAME_SPACE::DataEntry *dataEntry;
std::string value;
- std::string vr; // value representation
+ GDCM_NAME_SPACE::VRKey vr; // value representation
std::string vm; // value multiplicity
std::string name; // held in the Dicom Dictionary
- gdcm::DocEntry *d = f1->GetFirstEntry();
+ GDCM_NAME_SPACE::DocEntry *d = f1->GetFirstEntry();
while( d )
{
// We skip SeqEntries, since user cannot do much with them
- if ( !(dynamic_cast<gdcm::SeqEntry*>(d))
+ if ( !(dynamic_cast<GDCM_NAME_SPACE::SeqEntry*>(d))
// We skip Shadow Groups, since nobody knows what they mean
- && !( d->GetGroup()%2 )
- // we skip BinEntries, since their content is not human-readable
- && !dynamic_cast<gdcm::BinEntry*>(d) )
+ && !( d->GetGroup()%2 ) )
{
// If user just 'wants to see'
//d->Print();
//std::cout << std::endl;
// If user wants to get info about the entry
- // (he is sure, here that DocEntry is a ValEntry)
- valEntry = dynamic_cast<gdcm::ValEntry*>(d);
+ // (he is sure, here that DocEntry is a DataEntry)
+ dataEntry = dynamic_cast<GDCM_NAME_SPACE::DataEntry *>(d);
// Let's be carefull -maybe he commented out some previous line-
- if (!valEntry)
+ if (!dataEntry)
continue;
- value = valEntry->GetValue();
- vr = valEntry->GetVR();
+ value = dataEntry->GetString();
+ vr = dataEntry->GetVR();
// user wants really to know everything about entry!
- vm = valEntry->GetVM();
- name = valEntry->GetName();
+ vm = dataEntry->GetVM();
+ name = dataEntry->GetName();
std::cout //<< std::hex << group << "," << elem
- << valEntry->GetKey()
- << " VR :[" << vr << "] VM : [" << vm
+ << dataEntry->GetKey()
+ << " VR :[" << vr << "] VM : [" << vm
<< "] name : [" << name << "]"
<< " value : [" << value << "]"
-
- << std::endl;
+ << std::endl;
}
d = f1->GetNextEntry();
}
<< std::endl;
// ------ User is aware, and wants to get fields with no accesor --------
- std::cout << "Manufacturer :[" << f1->GetEntryValue(0x0008,0x0070)
+ std::cout << "Manufacturer :[" << f1->GetEntryString(0x0008,0x0070)
<< "]" << std::endl;
- std::cout << "Institution :[" << f1->GetEntryValue(0x0008,0x0080)
+ std::cout << "Institution :[" << f1->GetEntryString(0x0008,0x0080)
<< "]" << std::endl;
- std::cout << "Patient's name :[" << f1->GetEntryValue(0x0010,0x0010)
+ std::cout << "Patient's name :[" << f1->GetEntryString(0x0010,0x0010)
<< "]" << std::endl;
- std::cout << "Physician's name :[" << f1->GetEntryValue(0x0008,0x0090)
+ std::cout << "Physician's name :[" << f1->GetEntryString(0x0008,0x0090)
<< "]" << std::endl;
- std::cout << "Study Date :[" << f1->GetEntryValue(0x0008,0x0020)
+ std::cout << "Study Date :[" << f1->GetEntryString(0x0008,0x0020)
<< "]" << std::endl;
- std::cout << "Study inst UID :[" << f1->GetEntryValue(0x0020,0x000d)
+ std::cout << "Study inst UID :[" << f1->GetEntryString(0x0020,0x000d)
<< "]" << std::endl;
- std::cout << "Serie inst UID :[" << f1->GetEntryValue(0x0020,0x000e)
+ std::cout << "Serie inst UID :[" << f1->GetEntryString(0x0020,0x000e)
<< "]" << std::endl;
- std::cout << "Frame ref UID :[" << f1->GetEntryValue(0x0020,0x0052)
+ std::cout << "Frame ref UID :[" << f1->GetEntryString(0x0020,0x0052)
<< "]" << std::endl;
// User wants to get info about the 'real world' vs image
// Hope now he knows enought about the image ;-)
- // First, create a gdcm::FileHelper
- gdcm::FileHelper *fh1 = new gdcm::FileHelper(f1);
+ // First, create a GDCM_NAME_SPACE::FileHelper
+ GDCM_NAME_SPACE::FileHelper *fh1 = GDCM_NAME_SPACE::FileHelper::New(f1);
// Load the pixels, transforms LUT (if any) into RGB Pixels
uint8_t *imageData = fh1->GetImageData();
// ------ User wants write a new image without shadow groups -------------
- gdcm::FileHelper *copy = new gdcm::FileHelper( );
+ GDCM_NAME_SPACE::FileHelper *copy = GDCM_NAME_SPACE::FileHelper::New( );
copy->SetFileName( output );
copy->Load();
while(d)
{
// We skip SeqEntries, since user cannot do much with them
- if ( !(dynamic_cast<gdcm::SeqEntry*>(d))
+ if ( !(dynamic_cast<GDCM_NAME_SPACE::SeqEntry*>(d))
// We skip Shadow Groups, since nobody knows what they mean
&& !( d->GetGroup()%2 ) )
{
- if ( gdcm::BinEntry *b = dynamic_cast<gdcm::BinEntry*>(d) )
+ if ( GDCM_NAME_SPACE::DataEntry *de = dynamic_cast<GDCM_NAME_SPACE::DataEntry *>(d) )
{
- copy->GetFile()->InsertBinEntry( b->GetBinArea(),b->GetLength(),
- b->GetGroup(),b->GetElement(),
- b->GetVR() );
- }
- else if ( gdcm::ValEntry *v = dynamic_cast<gdcm::ValEntry*>(d) )
- {
- copy->GetFile()->InsertValEntry( v->GetValue(),
- v->GetGroup(),v->GetElement(),
- v->GetVR() );
+ copy->GetFile()->InsertEntryBinArea( de->GetBinArea(),de->GetLength(),
+ de->GetGroup(),de->GetElement(),
+ de->GetVR() );
}
else
{
- // We skip gdcm::SeqEntries
+ // We skip GDCM_NAME_SPACE::SeqEntries
}
}
d = f1->GetNextEntry();
std::cout << std::endl
<< "------------------------------------------------------------"
<< std::endl;
- delete f1;
- delete fh1;
- delete copy;
+ f1->Delete();
+ fh1->Delete();
+ copy->Delete();
exit (0);
}