X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vtk%2FvtkGdcmWriter.cxx;h=48ef50d3f7fa628d25db326818e9df3e48da7ce8;hb=127e5c971f9e1936215c71fc129249f1e2be037c;hp=7cf38df6b24379457f5dd64b6da56167630af2c0;hpb=7e8825e60d3550d5d8541d0ccc50c7c4a677e4c9;p=gdcm.git diff --git a/vtk/vtkGdcmWriter.cxx b/vtk/vtkGdcmWriter.cxx index 7cf38df6..48ef50d3 100644 --- a/vtk/vtkGdcmWriter.cxx +++ b/vtk/vtkGdcmWriter.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: vtkGdcmWriter.cxx,v $ Language: C++ - Date: $Date: 2006/05/02 11:11:00 $ - Version: $Revision: 1.30 $ + Date: $Date: 2007/09/18 07:54:46 $ + Version: $Revision: 1.35 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -33,19 +33,19 @@ #define vtkFloatingPointType float #endif -vtkCxxRevisionMacro(vtkGdcmWriter, "$Revision: 1.30 $") +vtkCxxRevisionMacro(vtkGdcmWriter, "$Revision: 1.35 $") vtkStandardNewMacro(vtkGdcmWriter) -vtkCxxSetObjectMacro(vtkGdcmWriter,LookupTable,vtkLookupTable); +vtkCxxSetObjectMacro(vtkGdcmWriter,LookupTable,vtkLookupTable) #if (VTK_MAJOR_VERSION >= 5) -vtkCxxSetObjectMacro(vtkGdcmWriter,MedicalImageProperties,vtkMedicalImageProperties); +vtkCxxSetObjectMacro(vtkGdcmWriter,MedicalImageProperties,vtkMedicalImageProperties) #endif //----------------------------------------------------------------------------- // Constructor / Destructor vtkGdcmWriter::vtkGdcmWriter() { this->LookupTable = NULL; - this->MedicalImageProperties = NULL; + this->MedicalImageProperties = NULL; this->FileDimensionality = 3; this->WriteType = VTK_GDCM_WRITE_TYPE_EXPLICIT_VR; this->GdcmFile = 0; @@ -94,7 +94,11 @@ const char *vtkGdcmWriter::GetWriteTypeAsString() // The output data must be deleted by the user of the method !!! size_t ReverseData(vtkImageData *image,unsigned char **data) { +#if (VTK_MAJOR_VERSION >= 5) + vtkIdType inc[3]; +#else int inc[3]; +#endif int *extent = image->GetUpdateExtent(); int dim[3] = {extent[1]-extent[0]+1, extent[3]-extent[2]+1, @@ -133,54 +137,67 @@ size_t ReverseData(vtkImageData *image,unsigned char **data) return size; } - /** - * Set the medical informations in the file, based on the user passed - * vtkMedicalImageProperties - */ -#if (VTK_MAJOR_VERSION >= 5) -void SetMedicalImageInformation(gdcm::FileHelper *file, vtkMedicalImageProperties *medprop) +/** + * Set the medical informations in the file, based on the user passed + * vtkMedicalImageProperties + */ +#if (VTK_MAJOR_VERSION >= 5) +void SetMedicalImageInformation(GDCM_NAME_SPACE::FileHelper *file, vtkMedicalImageProperties *medprop) { // For now only do: // PatientName, PatientID, PatientAge, PatientSex, PatientBirthDate, StudyID - std::ostringstream str; + std::ostringstream str; if( medprop ) - { - str.str(""); - str << medprop->GetPatientName(); - file->InsertEntryString(str.str(),0x0010,0x0010,"PN"); // PN 1 Patient's Name - - str.str(""); - str << medprop->GetPatientID(); - file->InsertEntryString(str.str(),0x0010,0x0020,"LO"); // LO 1 Patient ID - - str.str(""); - str << medprop->GetPatientAge(); - file->InsertEntryString(str.str(),0x0010,0x1010,"AS"); // AS 1 Patient's Age - - str.str(""); - str << medprop->GetPatientSex(); - file->InsertEntryString(str.str(),0x0010,0x0040,"CS"); // CS 1 Patient's Sex - - str.str(""); - str << medprop->GetPatientBirthDate(); - file->InsertEntryString(str.str(),0x0010,0x0030,"DA"); // DA 1 Patient's Birth Date - - str.str(""); - str << medprop->GetStudyID(); - file->InsertEntryString(str.str(),0x0020,0x0010,"SH"); // SH 1 Study ID - } - } - -#else -void SetMedicalImageInformation(gdcm::FileHelper *, vtkMedicalImageProperties *) -{ + { + if (medprop->GetPatientName()) + { + str.str(""); + str << medprop->GetPatientName(); + file->InsertEntryString(str.str(),0x0010,0x0010,"PN"); // PN 1 Patient's Name + } + + if (medprop->GetPatientID()) + { + str.str(""); + str << medprop->GetPatientID(); + file->InsertEntryString(str.str(),0x0010,0x0020,"LO"); // LO 1 Patient ID + } + + if (medprop->GetPatientAge()) + { + str.str(""); + str << medprop->GetPatientAge(); + file->InsertEntryString(str.str(),0x0010,0x1010,"AS"); // AS 1 Patient's Age + } + + if (medprop->GetPatientSex()) + { + str.str(""); + str << medprop->GetPatientSex(); + file->InsertEntryString(str.str(),0x0010,0x0040,"CS"); // CS 1 Patient's Sex + } + + if (medprop->GetPatientBirthDate()) + { + str.str(""); + str << medprop->GetPatientBirthDate(); + file->InsertEntryString(str.str(),0x0010,0x0030,"DA"); // DA 1 Patient's Birth Date + } + + if (medprop->GetStudyID()) + { + str.str(""); + str << medprop->GetStudyID(); + file->InsertEntryString(str.str(),0x0020,0x0010,"SH"); // SH 1 Study ID + } + } } #endif /** * Set the data informations in the file */ -void SetImageInformation(gdcm::FileHelper *file, vtkImageData *image) +void SetImageInformation(GDCM_NAME_SPACE::FileHelper *file, vtkImageData *image) { std::ostringstream str; @@ -386,18 +403,19 @@ void vtkGdcmWriter::RecursiveWrite(int axis, vtkImageData *cache, void vtkGdcmWriter::WriteDcmFile(char *fileName, vtkImageData *image) { - gdcm::FileHelper *dcmFile; + GDCM_NAME_SPACE::FileHelper *dcmFile; if ( GdcmFile != 0) - dcmFile = gdcm::FileHelper::New(GdcmFile); + dcmFile = GDCM_NAME_SPACE::FileHelper::New(GdcmFile); else - dcmFile = gdcm::FileHelper::New(); + dcmFile = GDCM_NAME_SPACE::FileHelper::New(); // From here, the write of the file begins - // Set the medical informations: +#if (VTK_MAJOR_VERSION >= 5) SetMedicalImageInformation(dcmFile, this->MedicalImageProperties); - +#endif + // Set the image informations SetImageInformation(dcmFile, image); @@ -420,7 +438,7 @@ void vtkGdcmWriter::WriteDcmFile(char *fileName, vtkImageData *image) dcmFile->SetWriteTypeToDcmExplVR(); } - dcmFile->SetContentType((gdcm::ImageContentType)ContentType); + dcmFile->SetContentType((GDCM_NAME_SPACE::ImageContentType)ContentType); if(!dcmFile->Write(fileName)) {