Program: gdcm
Module: $RCSfile: TestAllReadCompareDicom.cxx,v $
Language: C++
- Date: $Date: 2005/03/30 15:30:33 $
- Version: $Revision: 1.31 $
+ Date: $Date: 2005/04/18 01:50:54 $
+ Version: $Revision: 1.38 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
#include "gdcmFileHelper.h"
#include <iostream>
-#include <fstream>
//Generated file:
#include "gdcmDataImages.h"
~TestFile(void);
bool IsReadable(void) {return readable;}
- unsigned int GetXSize(void) {return sizeX;};
- void SetXSize(unsigned int size) {sizeX = size;};
- unsigned int GetYSize(void) {return sizeY;};
- void SetYSize(unsigned int size) {sizeY = size;};
- unsigned int GetZSize(void) {return sizeZ;};
- void SetZSize(unsigned int size) {sizeZ = size;};
- unsigned int GetScalarSize(void) {return scalarSize;};
- void SetScalarSize(unsigned int size) {scalarSize = size;};
- unsigned int GetNumberOfComponents(void) {return components;};
- void SetNumberOfComponents(unsigned int size) {components = size;};
+ int GetXSize(void) {return sizeX;};
+ void SetXSize(int size) {sizeX = size;};
+ int GetYSize(void) {return sizeY;};
+ void SetYSize(int size) {sizeY = size;};
+ int GetZSize(void) {return sizeZ;};
+ void SetZSize(int size) {sizeZ = size;};
+ int GetScalarSize(void) {return scalarSize;};
+ void SetScalarSize(int size) {scalarSize = size;};
+ int GetNumberOfComponents(void) {return components;};
+ void SetNumberOfComponents(int size) {components = size;};
unsigned long GetDataSize(void) {return GetLineSize()*sizeY*sizeZ;}
uint8_t *GetData(void) {return data;}
bool WriteFileHeader(std::ofstream *fp);
bool WriteFileData(std::ofstream *fp);
- uint8_t ReadInt8 (std::ifstream *fp);
- uint16_t ReadInt16(std::ifstream *fp);
- uint32_t ReadInt32(std::ifstream *fp);
- void WriteInt8 (std::ofstream *fp,uint8_t data);
- void WriteInt16(std::ofstream *fp,uint16_t data);
- void WriteInt32(std::ofstream *fp,uint32_t data);
+ uint8_t ReadInt8 (std::ifstream *fp)
+#if !(__GNUC__==2 && __GNUC_MINOR__<=96)
+ throw( std::ios::failure );
+#else
+ ;
+#endif
+ uint16_t ReadInt16(std::ifstream *fp)
+#if !(__GNUC__==2 && __GNUC_MINOR__<=96)
+ throw( std::ios::failure );
+#else
+ ;
+#endif
+ uint32_t ReadInt32(std::ifstream *fp)
+#if !(__GNUC__==2 && __GNUC_MINOR__<=96)
+ throw( std::ios::failure );
+#else
+ ;
+#endif
+ void WriteInt8 (std::ofstream *fp,uint8_t value);
+ void WriteInt16(std::ofstream *fp,uint16_t value);
+ void WriteInt32(std::ofstream *fp,uint32_t value);
std::string fileName;
bool readable;
- unsigned int sizeX;
- unsigned int sizeY;
- unsigned int sizeZ;
- unsigned int scalarSize;
- unsigned int components;
+ int sizeX;
+ int sizeY;
+ int sizeZ;
+ int scalarSize;
+ int components;
uint8_t *data;
int swapCode;
}
uint8_t TestFile::ReadInt8 (std::ifstream *fp)
+#if !(__GNUC__==2 && __GNUC_MINOR__<=96)
throw( std::ios::failure )
+#endif
{
uint8_t g;
fp->read ((char*)&g, (size_t)1);
+#if !(__GNUC__==2 && __GNUC_MINOR__<=96)
if ( fp->fail() )
throw std::ios::failure( "TestFile::ReadInt8() - file error." );
if( fp->eof() )
throw std::ios::failure( "TestFile::ReadInt8() - EOF." );
+#endif
return g;
}
uint16_t TestFile::ReadInt16(std::ifstream *fp)
+#if !(__GNUC__==2 && __GNUC_MINOR__<=96)
throw( std::ios::failure )
+#endif
{
uint16_t g;
fp->read ((char*)&g, (size_t)2);
+#if !(__GNUC__==2 && __GNUC_MINOR__<=96)
if ( fp->fail() )
throw std::ios::failure( "TestFile::ReadInt16() - file error." );
if( fp->eof() )
throw std::ios::failure( "TestFile::ReadInt16() - EOF." );
+#endif
#if defined(GDCM_WORDS_BIGENDIAN)
g = ( g << 8 | g >> 8 );
}
uint32_t TestFile::ReadInt32(std::ifstream *fp)
+#if !(__GNUC__==2 && __GNUC_MINOR__<=96)
throw( std::ios::failure )
+#endif
{
uint32_t g;
fp->read ((char*)&g, (size_t)4);
+#if !(__GNUC__==2 && __GNUC_MINOR__<=96)
if ( fp->fail() )
throw std::ios::failure( "TestFile::ReadInt32() - file error." );
if( fp->eof() )
throw std::ios::failure( "TestFile::ReadInt32() - EOF." );
+#endif
#if defined(GDCM_WORDS_BIGENDIAN)
g = ( (g<<24) | ((g<<8) & 0x00ff0000) |
return g;
}
-void TestFile::WriteInt8 (std::ofstream *fp,uint8_t data)
+void TestFile::WriteInt8 (std::ofstream *fp,uint8_t value)
{
- fp->write((char*)&data, (size_t)1);
+ fp->write((char*)&value, (size_t)1);
}
-void TestFile::WriteInt16(std::ofstream *fp,uint16_t data)
+void TestFile::WriteInt16(std::ofstream *fp,uint16_t value)
{
#if defined(GDCM_WORDS_BIGENDIAN)
- data = ( data << 8 | data >> 8 );
+ value = ( value << 8 | value >> 8 );
#endif
- fp->write((char*)&data, (size_t)2);
+ fp->write((char*)&value, (size_t)2);
}
-void TestFile::WriteInt32(std::ofstream *fp,uint32_t data)
+void TestFile::WriteInt32(std::ofstream *fp,uint32_t value)
{
#if defined(GDCM_WORDS_BIGENDIAN)
- data = ( (data<<24) | ((data<<8) & 0x00ff0000) |
- ( (data>>8) & 0x0000ff00) | (data>>24) );
+ value = ( (value<<24) | ((value<<8) & 0x00ff0000) |
+ ( (value>>8) & 0x0000ff00) | (value>>24) );
#endif
- fp->write((char*)&data, (size_t)4);
+ fp->write((char*)&value, (size_t)4);
}
int InternalTest(std::string const &filename,
std::cout << "2...";
TestFile *reference = new TestFile();
- reference->Load(referenceFileName);
- if(!reference->IsReadable())
+ std::ifstream refFile(referenceFileName.c_str(),
+ std::ios::binary|std::ios::in);
+ if(!refFile)
{
std::cout << " Failed" << std::endl
- << " Image not BMP compatible:"
+ << " Image not found:"
<< referenceFileName << std::endl;
reference->SetXSize(tested->GetFile()->GetXSize());
reference->SetYSize(tested->GetFile()->GetYSize());
reference->SetData(tested->GetImageData());
reference->Write(referenceFileName);
}
+ else
+ refFile.close();
reference->Load(referenceFileName);
if(!reference->IsReadable())
////// Check for existence of reference baseline directory
std::string baseLineDir = GDCM_DATA_ROOT;
- baseLineDir += "/BaselineDicom/";
+ baseLineDir += "/BaselineDicom";
if( !gdcm::DirList::IsDirectory(baseLineDir) )
{
filename += "/";
filename += gdcmDataImages[i];
+ baseLineDir += '/';
std::string referenceFileName = baseLineDir + gdcmDataImages[i++];
std::string::size_type slash_pos = referenceFileName.rfind( "." );
if( slash_pos != std::string::npos )