Program: gdcm
Module: $RCSfile: TestWriteSimple.cxx,v $
Language: C++
- Date: $Date: 2005/10/11 14:24:29 $
- Version: $Revision: 1.38 $
+ Date: $Date: 2005/10/28 13:16:48 $
+ Version: $Revision: 1.46 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
} Image;
Image Images [] = {
- {256, 256, 1, 1, 8, 8, 0, 'a'},
- {256, 256, 1, 1, 8, 8, 0, 'e'},
- {256, 256, 1, 1, 8, 8, 0, 'i'},
-
- {512, 256, 1, 1, 8, 8, 0, 'a'},
- {512, 256, 1, 1, 8, 8, 0, 'e'},
- {512, 256, 1, 1, 8, 8, 0, 'i'},
-
- {256, 512, 1, 1, 8, 8, 0, 'a'},
- {256, 512, 1, 1, 8, 8, 0, 'e'},
- {256, 512, 1, 1, 8, 8, 0, 'i'},
-
- {256, 512, 1, 1, 16, 16, 0, 'a'},
- {256, 512, 1, 1, 16, 16, 0, 'e'},
- {256, 512, 1, 1, 16, 16, 0, 'i'},
- {256, 512, 1, 1, 16, 16, 0, 'a'},
- {256, 512, 1, 1, 16, 16, 0, 'e'},
- {256, 512, 1, 1, 16, 16, 0, 'i'},
-
- {512, 256, 10, 1, 8, 8, 0, 'a'},
- {512, 256, 10, 1, 8, 8, 0, 'e'},
- {512, 256, 10, 1, 8, 8, 0, 'i'},
- {512, 256, 10, 3, 8, 8, 0, 'a'},
- {512, 256, 10, 3, 8, 8, 0, 'e'},
- {512, 256, 10, 3, 8, 8, 0, 'i'},
-
- {256, 256, 1, 1, 8, 8, 1, 'a'},
- {256, 256, 1, 1, 8, 8, 1, 'e'},
- {256, 256, 1, 1, 8, 8, 1, 'i'},
-
- {512, 256, 1, 1, 8, 8, 1, 'a'},
- {512, 256, 1, 1, 8, 8, 1, 'e'},
- {512, 256, 1, 1, 8, 8, 1, 'i'},
-
- {256, 512, 1, 1, 8, 8, 1, 'a'},
- {256, 512, 1, 1, 8, 8, 1, 'e'},
- {256, 512, 1, 1, 8, 8, 1, 'i'},
-
- {256, 512, 1, 1, 16, 16, 1, 'a'},
- {256, 512, 1, 1, 16, 16, 1, 'e'},
- {256, 512, 1, 1, 16, 16, 1, 'i'},
- {256, 512, 1, 1, 16, 16, 1, 'a'},
- {256, 512, 1, 1, 16, 16, 1, 'e'},
- {256, 512, 1, 1, 16, 16, 1, 'i'},
-
- {512, 256, 10, 1, 8, 8, 1, 'a'},
- {512, 256, 10, 1, 8, 8, 1, 'e'},
- {512, 256, 10, 1, 8, 8, 1, 'i'},
- {512, 256, 10, 3, 8, 8, 1, 'a'},
- {512, 256, 10, 3, 8, 8, 1, 'e'},
- {512, 256, 10, 3, 8, 8, 1, 'i'},
+
+ {128, 128, 1, 1, 8, 8, 0, 'e'},
+ {256, 128, 1, 1, 8, 8, 0, 'e'},
+ {128, 128, 1, 1, 16, 16, 0, 'e'},
+ {128, 256, 1, 1, 16, 16, 0, 'e'},
+
+ {128, 128, 1, 1, 8, 8, 0, 'i'},
+ {256, 128, 1, 1, 8, 8, 0, 'i'},
+ {256, 128, 1, 1, 8, 8, 0, 'a'},
+ {128, 128, 1, 1, 8, 8, 0, 'a'},
+
+ {128, 256, 1, 1, 8, 8, 0, 'e'},
+ {128, 256, 1, 1, 8, 8, 0, 'i'},
+ {128, 256, 1, 1, 8, 8, 0, 'a'},
+
+ {128, 256, 1, 1, 16, 16, 0, 'i'},
+ {128, 256, 1, 1, 16, 16, 0, 'i'},
+ {128, 256, 1, 1, 16, 16, 0, 'a'},
+ {128, 256, 1, 1, 16, 16, 0, 'a'},
+
+ {256, 128, 10, 1, 8, 8, 0, 'e'},
+ {256, 128, 10, 3, 8, 8, 0, 'e'},
+ {256, 128, 10, 3, 8, 8, 0, 'i'},
+ {256, 128, 10, 1, 8, 8, 0, 'i'},
+ {256, 128, 10, 1, 8, 8, 0, 'a'},
+ {256, 128, 10, 3, 8, 8, 0, 'a'},
+
+ {128, 128, 1, 1, 8, 8, 1, 'e'},
+ {128, 128, 1, 1, 8, 8, 1, 'i'},
+ {128, 128, 1, 1, 8, 8, 1, 'a'},
+
+ {256, 128, 1, 1, 8, 8, 1, 'e'},
+ {256, 128, 1, 1, 8, 8, 1, 'i'},
+ {256, 128, 1, 1, 8, 8, 1, 'a'},
+
+ {128, 256, 1, 1, 8, 8, 1, 'a'},
+ {128, 256, 1, 1, 8, 8, 1, 'e'},
+ {128, 256, 1, 1, 8, 8, 1, 'i'},
+
+ {128, 256, 1, 1, 16, 16, 1, 'e'},
+ {128, 256, 1, 1, 16, 16, 1, 'e'},
+ {128, 256, 1, 1, 16, 16, 1, 'i'},
+ {128, 256, 1, 1, 16, 16, 1, 'i'},
+ {128, 256, 1, 1, 16, 16, 1, 'a'},
+ {128, 256, 1, 1, 16, 16, 1, 'a'},
+
+ {256, 128, 10, 1, 8, 8, 1, 'e'},
+ {256, 128, 10, 1, 8, 8, 1, 'i'},
+ {256, 128, 10, 1, 8, 8, 1, 'a'},
+
+ {256, 128, 10, 3, 8, 8, 1, 'e'},
+ {256, 128, 10, 3, 8, 8, 1, 'i'},
+ {256, 128, 10, 3, 8, 8, 1, 'a'},
{0, 0, 1, 1, 8, 8, 0, 'i'} // to find the end
};
+
+const unsigned int MAX_NUMBER_OF_DIFFERENCE = 10;
+
int WriteSimple(Image &img)
{
std::ostringstream fileName;
fileName.str("");
fileName << "TestWriteSimple";
-// Step 1 : Create the header of the image
+// Step 1 : Create an empty FileHelper
std::cout << " 1...";
- gdcm::File *fileToBuild = new gdcm::File();
+ gdcm::FileHelper *fileH = gdcm::FileHelper::New();
+
+ // Get the (empty) image header.
+ gdcm::File *fileToBuild = fileH->GetFile();
std::ostringstream str;
// Set the image size
str.str("");
str << img.sizeX;
- fileToBuild->InsertValEntry(str.str(),0x0028,0x0011); // Columns
+ fileToBuild->InsertEntryString(str.str(),0x0028,0x0011); // Columns
str.str("");
str << img.sizeY;
- fileToBuild->InsertValEntry(str.str(),0x0028,0x0010); // Rows
+ fileToBuild->InsertEntryString(str.str(),0x0028,0x0010); // Rows
if(img.sizeZ>1)
{
str.str("");
str << img.sizeZ;
- fileToBuild->InsertValEntry(str.str(),0x0028,0x0008); // Number of Frames
+ fileToBuild->InsertEntryString(str.str(),0x0028,0x0008); // Number of Frames
}
fileName << "-" << img.sizeX << "-" << img.sizeY << "-" << img.sizeZ;
// Set the pixel type
str.str("");
str << img.componentSize;
- fileToBuild->InsertValEntry(str.str(),0x0028,0x0100); // Bits Allocated
+ fileToBuild->InsertEntryString(str.str(),0x0028,0x0100); // Bits Allocated
str.str("");
str << img.componentUse;
- fileToBuild->InsertValEntry(str.str(),0x0028,0x0101); // Bits Stored
+ fileToBuild->InsertEntryString(str.str(),0x0028,0x0101); // Bits Stored
str.str("");
str << ( img.componentSize - 1 );
- fileToBuild->InsertValEntry(str.str(),0x0028,0x0102); // High Bit
+ fileToBuild->InsertEntryString(str.str(),0x0028,0x0102); // High Bit
// Set the pixel representation
str.str("");
str << img.sign;
- fileToBuild->InsertValEntry(str.str(),0x0028,0x0103); // Pixel Representation
+ fileToBuild->InsertEntryString(str.str(),0x0028,0x0103); // Pixel Representation
fileName << "-" << img.componentSize;
if(img.sign == 0)
}
std::cout << "[" << fileName.str() << "]...";
-
// Set the samples per pixel
str.str("");
str << img.components;
- fileToBuild->InsertValEntry(str.str(),0x0028,0x0002); // Samples per Pixel
+ fileToBuild->InsertEntryString(str.str(),0x0028,0x0002); // Samples per Pixel
// Step 2 : Create the output image
std::cout << "2...";
}
}
-// Step 3 : Create the file of the image
+// Step 3 : Set the image Pixel Data
std::cout << "3...";
- gdcm::FileHelper *fileH = new gdcm::FileHelper(fileToBuild);
fileH->SetImageData(imageData,size);
// Step 4 : Set the writting mode and write the image
std::cout << "Failed for [" << fileName.str() << "]\n"
<< " Write mode '"<<img.writeMode<<"' is undefined\n";
- delete fileH;
- delete fileToBuild;
+ fileH->Delete();
delete[] imageData;
return 1;
}
if( !fileH->Write(fileName.str()) )
{
std::cout << "Failed for [" << fileName.str() << "]\n"
- << " File in unwrittable\n";
+ << " File is unwrittable\n";
+
+ fileH->Delete();
- delete fileH;
- delete fileToBuild;
delete[] imageData;
return 1;
}
// old form.
//gdcm::FileHelper *reread = new gdcm::FileHelper( fileName.str() );
// Better use :
- gdcm::FileHelper *reread = new gdcm::FileHelper( );
+ gdcm::FileHelper *reread = gdcm::FileHelper::New( );
reread->SetFileName( fileName.str() );
- reread->SetLoadMode(0); // Load everything
- // Other possible values are
+ reread->SetLoadMode(gdcm::LD_ALL); // Load everything
+ // Possible values are
// gdcm::LD_ALL,
// gdcm::LD_NOSEQ,
// gdcm::LD_NOSHADOW,
{
std::cerr << "Failed" << std::endl
<< "Could not read written image : " << fileName.str() << std::endl;
- delete fileToBuild;
- delete fileH;
- delete reread;
+ fileToBuild->Delete();
+ fileH->Delete();
+ reread->Delete();
delete[] imageData;
return 1;
}
<< " File type differ: "
<< fileH->GetWriteType() << " # "
<< reread->GetFile()->GetFileType() << std::endl;
- delete fileToBuild;
- delete fileH;
- delete reread;
+ fileToBuild->Delete();
+ fileH->Delete();
+ reread->Delete();
delete[] imageData;
return 1;
<< reread->GetFile()->GetYSize() << " | "
<< "Z: " << fileToBuild->GetZSize() << " # "
<< reread->GetFile()->GetZSize() << std::endl;
- delete fileToBuild;
- delete fileH;
- delete reread;
+ fileToBuild->Delete();
+ fileH->Delete();
+ reread->Delete();
delete[] imageData;
return 1;
std::cout << "Failed" << std::endl
<< " Pixel areas lengths differ: "
<< size << " # " << dataSizeWritten << std::endl;
- delete fileToBuild;
- delete fileH;
- delete reread;
+ fileToBuild->Delete();
+ fileH->Delete();
+ reread->Delete();
delete[] imageData;
return 1;
{
std::cout << "Failed" << std::endl
<< " Pixel differ (as expanded in memory)." << std::endl;
- delete fileToBuild;
- delete fileH;
- delete reread;
+ std::cout << " list of the first " << MAX_NUMBER_OF_DIFFERENCE
+ << " pixels differing (pos : test - ref) :"
+ << std::endl;
+ unsigned int i;
+ unsigned int j;
+ for(i=0, j=0;i<dataSizeWritten && j<MAX_NUMBER_OF_DIFFERENCE;i++)
+ {
+ if(imageDataWritten[i]!=imageData[i])
+ {
+ std::cout << std::hex << "(" << i << " : "
+ << std::hex << (int)(imageDataWritten[i]) << " - "
+ << std::hex << (int)(imageData[i]) << ") "
+ << std::dec;
+ ++j;
+ }
+ }
+ std::cout << std::endl;
+ fileToBuild->Delete();
+ fileH->Delete();
+ reread->Delete();
delete[] imageData;
return 1;
std::cout << "OK" << std::endl;
- delete fileToBuild;
- delete fileH;
- delete reread;
+ fileH->Delete();
+ reread->Delete();
delete[] imageData;
return 0;
return 1;
}
- // gdcm::Debug::DebugOn();
+ gdcm::Debug::DebugOn();
int ret=0;
int i=0;