+2004-11-30 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
+ * src/gdcmFile.[h|cxx] : bug fix for ACR-LIBIDO files when writting the file
+ * Test/TestAllReadCompareDicom.cxx, TestReadWriteReadCompare.cxx : add
+ tests on the image size X, Y, Z
+
2004-11-26 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
* Remove some useless methods in gdcm::Document, gdcm::Header and gdcm::File
* Rename gdcmHeaderHelper.[h|cxx] to gdcmSerieHeader.[h|cxx] to be coherent
Program: gdcm
Module: $RCSfile: TestAllReadCompareDicom.cxx,v $
Language: C++
- Date: $Date: 2004/11/25 10:24:33 $
- Version: $Revision: 1.19 $
+ Date: $Date: 2004/11/30 14:17:52 $
+ Version: $Revision: 1.20 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
int referenceDataSize = reference->GetImageDataSize();
uint8_t* referenceImageData = reference->GetImageData();
+ // Test the image size
+ if (tested->GetHeader()->GetXSize() != reference->GetHeader()->GetXSize() ||
+ tested->GetHeader()->GetYSize() != reference->GetHeader()->GetYSize() ||
+ tested->GetHeader()->GetZSize() != reference->GetHeader()->GetZSize())
+ {
+ std::cout << "Failed" << std::endl
+ << " Size differs: "
+ << "X: " << tested->GetHeader()->GetXSize() << " # "
+ << reference->GetHeader()->GetXSize() << " | "
+ << "Y: " << tested->GetHeader()->GetYSize() << " # "
+ << reference->GetHeader()->GetYSize() << " | "
+ << "Z: " << tested->GetHeader()->GetZSize() << " # "
+ << reference->GetHeader()->GetZSize() << std::endl;
+ delete reference;
+ delete tested;
+ return 1;
+ }
+
+ // Test the data size
if (testedDataSize != referenceDataSize)
{
std::cout << " Failed" << std::endl
return 1;
}
+ // Test the data content
if (int res = memcmp(testedImageData, referenceImageData,
testedDataSize) != 0 )
{
Program: gdcm
Module: $RCSfile: TestReadWriteReadCompare.cxx,v $
Language: C++
- Date: $Date: 2004/11/25 10:24:34 $
- Version: $Revision: 1.16 $
+ Date: $Date: 2004/11/30 14:17:52 $
+ Version: $Revision: 1.17 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
uint8_t* imageDataWritten = reread->GetImageData();
//////////////// Step 4:
+ // Test the image size
+ if (header->GetXSize() != reread->GetHeader()->GetXSize() ||
+ header->GetYSize() != reread->GetHeader()->GetYSize() ||
+ header->GetZSize() != reread->GetHeader()->GetZSize())
+ {
+ std::cout << "Failed" << std::endl
+ << " X Size differs: "
+ << "X: " << header->GetXSize() << " # "
+ << reread->GetHeader()->GetXSize() << " | "
+ << "Y: " << header->GetYSize() << " # "
+ << reread->GetHeader()->GetYSize() << " | "
+ << "Z: " << header->GetZSize() << " # "
+ << reread->GetHeader()->GetZSize() << std::endl;
+ delete header;
+ delete file;
+ delete reread;
+ return 1;
+ }
+ // Test the data size
if (dataSize != dataSizeWritten)
{
std::cout << "Failed" << std::endl
return 1;
}
+ // Test the data's content
if (int res = memcmp(imageData, imageDataWritten, dataSize) !=0)
{
(void)res;
Program: gdcm
Module: $RCSfile: gdcmFile.cxx,v $
Language: C++
- Date: $Date: 2004/11/26 10:55:04 $
- Version: $Revision: 1.166 $
+ Date: $Date: 2004/11/30 14:17:52 $
+ Version: $Revision: 1.167 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
SetWriteFileTypeToExplicitVR();
break;
case ACR:
- SetWriteFileTypeToACR();
- break;
case ACR_LIBIDO:
- SetWriteFileTypeToACRLibido();
+ SetWriteFileTypeToACR();
break;
default:
SetWriteFileTypeToExplicitVR();
}
+
+ if( type == ACR_LIBIDO )
+ {
+ SetWriteToLibido();
+ }
+ else
+ {
+ SetWriteToNoLibido();
+ }
switch(WriteMode)
{
RestoreWrite();
RestoreWriteFileType();
+ RestoreWriteOfLibido();
return check;
}
Archive->Push(0x0002,0x0010);
}
-void File::SetWriteFileTypeToACRLibido()
-{
- SetWriteFileTypeToACR();
-}
-
void File::SetWriteFileTypeToExplicitVR()
{
std::string ts = Util::DicomString(
Archive->Push(newRow);
Archive->Push(newCol);
}
+
+ ValEntry *libidoCode = CopyValEntry(0x0008,0x0010);
+ libidoCode->SetValue("ACRNEMA_LIBIDO_1.1");
+ libidoCode->SetLength(10);
+ Archive->Push(libidoCode);
+}
+
+void File::SetWriteToNoLibido()
+{
+ ValEntry *recCode = dynamic_cast<ValEntry *>(HeaderInternal->GetDocEntryByNumber(0x0008,0x0010));
+ if( recCode )
+ {
+ if( recCode->GetValue() == "ACRNEMA_LIBIDO_1.1" )
+ {
+ ValEntry *libidoCode = CopyValEntry(0x0008,0x0010);
+ libidoCode->SetValue("");
+ libidoCode->SetLength(0);
+ Archive->Push(libidoCode);
+ }
+ }
}
-void File::RestoreWriteFromLibido()
+void File::RestoreWriteOfLibido()
{
Archive->Restore(0x0028,0x0010);
Archive->Restore(0x0028,0x0011);
+ Archive->Restore(0x0008,0x0010);
}
ValEntry* File::CopyValEntry(uint16_t group,uint16_t element)
Program: gdcm
Module: $RCSfile: gdcmFile.h,v $
Language: C++
- Date: $Date: 2004/11/26 10:55:04 $
- Version: $Revision: 1.78 $
+ Date: $Date: 2004/11/30 14:17:52 $
+ Version: $Revision: 1.79 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
void RestoreWrite();
void SetWriteFileTypeToACR();
- void SetWriteFileTypeToACRLibido();
void SetWriteFileTypeToExplicitVR();
void SetWriteFileTypeToImplicitVR();
void RestoreWriteFileType();
void SetWriteToLibido();
- void RestoreWriteFromLibido();
+ void SetWriteToNoLibido();
+ void RestoreWriteOfLibido();
ValEntry* CopyValEntry(uint16_t group,uint16_t element);
BinEntry* CopyBinEntry(uint16_t group,uint16_t element);