@@ -30,13 +30,13 @@ typedef EncodedByte EncodedDouble[8];
3030
3131struct ISQEncodedPreHeader
3232{
33- EncodedByte m_Version[16 ];
33+ EncodedByte m_Version[ScancoHeaderField::VersionDiskWidth ];
3434 EncodedInt m_DataType;
3535 EncodedInt m_ImageSizeBytes;
3636 EncodedInt m_ImageSizeBlocks;
3737 EncodedInt m_PatientIndex;
3838 EncodedInt m_ScannerID;
39- EncodedByte m_CreationDate[8 ];
39+ EncodedByte m_CreationDate[ScancoHeaderField::EncodedDateDiskWidth ];
4040 EncodedIntTuple m_PixelDimensions;
4141 EncodedIntTuple m_PhysicalDimensions;
4242};
@@ -59,7 +59,7 @@ struct ISQEncodedHeaderBlock
5959 EncodedInt m_Site;
6060 EncodedInt m_ReferenceLine;
6161 EncodedInt m_ReconstructionAlg;
62- EncodedByte m_PatientName[40 ] = { 0 };
62+ EncodedByte m_PatientName[ScancoHeaderField::PatientNameDiskWidth ] = { 0 };
6363 EncodedInt m_Energy = { 0 }; /* V */
6464 EncodedInt m_Intensity = { 0 }; /* uA */
6565 EncodedByte m_Fill[83 * 4 ] = { 0 };
@@ -73,7 +73,7 @@ struct RADEncodedHeaderBlock
7373 EncodedInt m_DataMin;
7474 EncodedInt m_DataMax;
7575 EncodedInt m_MuScaling;
76- EncodedByte m_PatientName[40 ] = { 0 };
76+ EncodedByte m_PatientName[ScancoHeaderField::PatientNameDiskWidth ] = { 0 };
7777 EncodedInt m_ZPosition;
7878 EncodedByte m_UnknownFill[4 ];
7979 EncodedInt m_SampleTime;
@@ -89,18 +89,18 @@ struct RADEncodedHeaderBlock
8989struct ISQCalibrationHeaderBlock
9090{
9191 EncodedByte m_Fill1[136 ];
92- EncodedByte m_Title[16 ];
92+ EncodedByte m_Title[ScancoHeaderField::VersionDiskWidth ];
9393 EncodedInt m_CalHeaderSize; // size of calibration header in blocks
9494 EncodedByte m_Fill2[356 ];
9595
9696 EncodedByte m_Fill3[28 ];
97- EncodedByte m_CalibrationData[64 ];
97+ EncodedByte m_CalibrationData[ScancoHeaderField::CalibrationDataDiskWidth ];
9898 EncodedByte m_Fill4[420 ];
9999
100100 EncodedByte m_Fill5[120 ];
101101 EncodedInt m_RescaleType;
102102 EncodedByte m_Fill6[12 ];
103- EncodedByte m_RescaleUnits[16 ];
103+ EncodedByte m_RescaleUnits[ScancoHeaderField::RescaleUnitsDiskWidth ];
104104 EncodedDouble m_RescaleSlope;
105105 EncodedDouble m_RescaleIntercept;
106106 EncodedByte m_Fill7[8 ];
@@ -133,8 +133,8 @@ ISQHeaderIO::ReadHeader(std::ifstream & infile)
133133 throw std::runtime_error (" ISQHeaderIO: cannot read file, is not an ISQ." );
134134 }
135135
136- memcpy (this ->m_HeaderData ->m_Version , imageInfo->m_Version , 16 );
137- this ->m_HeaderData ->m_Version [16 ] = ' \0 ' ; // ensure null-terminated string
136+ memcpy (this ->m_HeaderData ->m_Version , imageInfo->m_Version , ScancoHeaderField::VersionDiskWidth );
137+ this ->m_HeaderData ->m_Version [ScancoHeaderField::VersionDiskWidth ] = ' \0 ' ; // ensure null-terminated string
138138 this ->m_HeaderData ->m_PixelData .m_ComponentType = DecodeInt (imageInfo->m_DataType );
139139 // Ignore image blocks and bytes size information
140140 // This will be re-populated on write
@@ -199,7 +199,7 @@ ISQHeaderIO::WriteHeader(std::ofstream & outfile, unsigned long imageSize)
199199
200200 ISQEncodedHeaderBlock header = { 0 };
201201
202- PadString (header.m_PreHeader .m_Version , this ->m_HeaderData ->m_Version , 16 );
202+ PadString (header.m_PreHeader .m_Version , this ->m_HeaderData ->m_Version , ScancoHeaderField::VersionDiskWidth );
203203 EncodeInt (3 , header.m_PreHeader .m_DataType );
204204 EncodeInt (imageSize, header.m_PreHeader .m_ImageSizeBytes );
205205 EncodeInt (imageSize / ScancoHeaderBlockSize, header.m_PreHeader .m_ImageSizeBlocks );
@@ -234,7 +234,7 @@ ISQHeaderIO::WriteHeader(std::ofstream & outfile, unsigned long imageSize)
234234 EncodeInt ((int )(this ->m_HeaderData ->m_Site ), header.m_Site );
235235 EncodeInt ((int )(this ->m_HeaderData ->m_ReferenceLine * 1e3 ), header.m_ReferenceLine );
236236 EncodeInt ((int )(this ->m_HeaderData ->m_ReconstructionAlg ), header.m_ReconstructionAlg );
237- PadString (header.m_PatientName , this ->m_HeaderData ->m_PatientName , 40 );
237+ PadString (header.m_PatientName , this ->m_HeaderData ->m_PatientName , ScancoHeaderField::PatientNameDiskWidth );
238238 EncodeInt ((int )(this ->m_HeaderData ->m_Energy * 1e3 ), header.m_Energy );
239239 EncodeInt ((int )(this ->m_HeaderData ->m_Intensity * 1e3 ), header.m_Intensity );
240240 const std::size_t fillSize = 83 * 4 ;
@@ -318,7 +318,7 @@ ISQHeaderIO::ReadRADHeader(RADEncodedHeaderBlock * headerData)
318318 this ->m_HeaderData ->m_DataRange [0 ] = DecodeInt (headerData->m_DataMin );
319319 this ->m_HeaderData ->m_DataRange [1 ] = DecodeInt (headerData->m_DataMax );
320320 this ->m_HeaderData ->m_MuScaling = DecodeInt (headerData->m_MuScaling );
321- StripString (this ->m_HeaderData ->m_PatientName , headerData->m_PatientName , 40 );
321+ StripString (this ->m_HeaderData ->m_PatientName , headerData->m_PatientName , ScancoHeaderField::PatientNameDiskWidth );
322322 this ->m_HeaderData ->m_ZPosition = DecodeInt (headerData->m_ZPosition ) * 1e-3 ;
323323 this ->m_HeaderData ->m_SampleTime = DecodeInt (headerData->m_SampleTime ) * 1e-3 ;
324324 this ->m_HeaderData ->m_Energy = DecodeInt (headerData->m_Energy ) * 1e-3 ;
@@ -353,7 +353,7 @@ ISQHeaderIO::ReadISQHeader(ISQEncodedHeaderBlock * headerData)
353353 this ->m_HeaderData ->m_Site = DecodeInt (headerData->m_Site );
354354 this ->m_HeaderData ->m_ReferenceLine = DecodeInt (headerData->m_ReferenceLine ) * 1e-3 ;
355355 this ->m_HeaderData ->m_ReconstructionAlg = DecodeInt (headerData->m_ReconstructionAlg );
356- StripString (this ->m_HeaderData ->m_PatientName , headerData->m_PatientName , 40 );
356+ StripString (this ->m_HeaderData ->m_PatientName , headerData->m_PatientName , ScancoHeaderField::PatientNameDiskWidth );
357357 this ->m_HeaderData ->m_Energy = DecodeInt (headerData->m_Energy ) * 1e-3 ;
358358 this ->m_HeaderData ->m_Intensity = DecodeInt (headerData->m_Intensity ) * 1e-3 ;
359359 this ->m_HeaderSize = (DecodeInt (headerData->m_DataOffset ) + 1 ) * 512 ;
@@ -413,11 +413,14 @@ ISQHeaderIO::ReadExtendedHeader(const char * buffer, unsigned long length)
413413 if (calHeader && calHeaderSize >= 1024 )
414414 {
415415 // Read Calibration data from header
416- StripString (this ->m_HeaderData ->m_CalibrationData , calHeader->m_CalibrationData , 64 );
416+ StripString (this ->m_HeaderData ->m_CalibrationData ,
417+ calHeader->m_CalibrationData ,
418+ ScancoHeaderField::CalibrationDataDiskWidth);
417419 // std::string calFile(h + 112, 256);
418420 // std::string s3(h + 376, 256);
419421 this ->m_HeaderData ->m_RescaleType = DecodeInt (calHeader->m_RescaleType );
420- StripString (this ->m_HeaderData ->m_RescaleUnits , calHeader->m_RescaleUnits , 16 );
422+ StripString (
423+ this ->m_HeaderData ->m_RescaleUnits , calHeader->m_RescaleUnits , ScancoHeaderField::RescaleUnitsDiskWidth);
421424 // std::string s5(h + 700, 16);
422425 // std::string calFilter(h + 772, 16);
423426 this ->m_HeaderData ->m_RescaleSlope = DecodeDouble (calHeader->m_RescaleSlope );
@@ -443,12 +446,13 @@ ISQHeaderIO::WriteExtendedHeader(std::ofstream & outfile)
443446
444447 // Next block adds calibration data
445448 memcpy (calHeader.m_Title , " Calibration " , 16 );
446- PadString (calHeader.m_CalibrationData , this ->m_HeaderData ->m_CalibrationData , 64 );
449+ PadString (
450+ calHeader.m_CalibrationData , this ->m_HeaderData ->m_CalibrationData , ScancoHeaderField::CalibrationDataDiskWidth);
447451 EncodeInt (2 , calHeader.m_CalHeaderSize );
448452
449453 // Last block adds density scaling data:
450454 EncodeInt ((int )this ->m_HeaderData ->m_RescaleType , calHeader.m_RescaleType );
451- PadString (calHeader.m_RescaleUnits , this ->m_HeaderData ->m_RescaleUnits , 16 );
455+ PadString (calHeader.m_RescaleUnits , this ->m_HeaderData ->m_RescaleUnits , ScancoHeaderField::RescaleUnitsDiskWidth );
452456 EncodeDouble (this ->m_HeaderData ->m_RescaleSlope , calHeader.m_RescaleSlope );
453457 EncodeDouble (this ->m_HeaderData ->m_RescaleIntercept , calHeader.m_RescaleIntercept );
454458 EncodeDouble (this ->m_HeaderData ->m_MuWater , calHeader.m_MuWater );
0 commit comments