X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vtk%2FvtkGdcmReader.cxx;h=898245c60c79a90bbdd7873cec5b2855da783bd6;hb=9d7bc1062abc4ca53c072f752c8938b08748fff8;hp=5dd9fcfedd1d20a9f2bbb3ddd694c4a1043aee13;hpb=5fbee0c35cc0f02ceea5d5a8be0c1900c63143bb;p=gdcm.git diff --git a/vtk/vtkGdcmReader.cxx b/vtk/vtkGdcmReader.cxx index 5dd9fcfe..898245c6 100644 --- a/vtk/vtkGdcmReader.cxx +++ b/vtk/vtkGdcmReader.cxx @@ -1,4 +1,4 @@ -// $Header: /cvs/public/gdcm/vtk/vtkGdcmReader.cxx,v 1.17 2003/07/07 17:05:17 frog Exp $ +// $Header: /cvs/public/gdcm/vtk/vtkGdcmReader.cxx,v 1.19 2003/09/10 09:31:55 malaterre Exp $ // ////////////////////////////////////////////////////////////// // WARNING TODO CLENAME // Actual limitations of this code: @@ -48,6 +48,7 @@ #include #include "vtkGdcmReader.h" #include "gdcm.h" +#include "gdcmHeaderHelper.h" vtkGdcmReader::vtkGdcmReader() { @@ -210,7 +211,7 @@ int vtkGdcmReader::CheckFileCoherence() fclose(fp); // Stage 1.2: check for Gdcm parsability - gdcmHeader GdcmHeader(FileName->c_str()); + gdcmHeaderHelper GdcmHeader(FileName->c_str()); if (!GdcmHeader.IsReadable()) { vtkErrorMacro("Gdcm cannot parse file " << FileName->c_str()); @@ -295,6 +296,17 @@ int vtkGdcmReader::CheckFileCoherence() ReturnedTotalNumberOfPlanes += NZ - 1; // First plane already added this->ImageType = type; this->PixelSize = GdcmHeader.GetPixelSize(); + + //Set image spacing + this->DataSpacing[0] = GdcmHeader.GetXSpacing(); + this->DataSpacing[1] = GdcmHeader.GetYSpacing(); + this->DataSpacing[2] = GdcmHeader.GetZSpacing(); + + //Set image origin + this->DataOrigin[0] = GdcmHeader.GetXOrigin(); + this->DataOrigin[1] = GdcmHeader.GetYOrigin(); + this->DataOrigin[2] = GdcmHeader.GetZOrigin(); + } } // End of loop on FileName @@ -423,7 +435,7 @@ size_t vtkGdcmReader::LoadImageInMemory( const unsigned long UpdateProgressTarget, unsigned long & UpdateProgressCount) { - vtkDebugMacro("Copying to memmory image" << FileName.c_str()); + vtkDebugMacro("Copying to memory image" << FileName.c_str()); gdcmFile GdcmFile(FileName.c_str()); size_t size = GdcmFile.GetImageDataSize(); @@ -438,6 +450,7 @@ size_t vtkGdcmReader::LoadImageInMemory( int NumPlanes = GdcmFile.GetZSize(); int LineSize = NumColumns * GdcmFile.GetPixelSize(); unsigned char * Source = (unsigned char*)GdcmFile.GetImageData(); + unsigned char * pSource = Source; //pointer for later deletion unsigned char * Destination = Dest + size - LineSize; for (int plane = 0; plane < NumPlanes; plane++) @@ -456,6 +469,9 @@ size_t vtkGdcmReader::LoadImageInMemory( UpdateProgressCount++; } } + //GetImageData allocate a (void*)malloc, remove it: + free(pSource); + return size; }