Program: gdcm
Module: $RCSfile: gdcmFile.cxx,v $
Language: C++
- Date: $Date: 2007/05/23 16:48:59 $
- Version: $Revision: 1.331 $
+ Date: $Date: 2007/08/27 16:14:47 $
+ Version: $Revision: 1.336 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
* @return false if file cannot be open or no swap info was found,
* or no tag was found.
*/
-
bool File::Load( )
{
if ( ! this->Document::Load( ) )
}
else
{
-
GrPixel = (uint16_t) atoi( imgLocation.c_str() );
}
// Change only made if usefull
if ( PixelVR != oldEntry->GetVR() )
- {
+ {
//DictEntry* newDict = DictEntry::New(GrPixel,NumPixel,
// PixelVR,"1","Pixel Data");
//DataEntry *newEntry = DataEntry::New(newDict);
//RemoveEntry(oldEntry);
//AddEntry(newEntry);
//newEntry->Delete();
-
}
}
*/
// ts["1.2.840.10008.5.1.4.1.1.4.1"] = "Enhanced MR Image Storage";
bool File::GetSpacing(float &xspacing, float &yspacing, float &zspacing)
{
- xspacing = yspacing = zspacing = 2.0;
+ xspacing = yspacing = zspacing = 1.0;
TS *ts = Global::GetTS();
std::string sopclassuid_used;
// D 0002|0002 [UI] [Media Storage SOP Class UID]
-
+
//const std::string &mediastoragesopclassuid_str = GetEntryValue(0x0002,0x0002);
const std::string &mediastoragesopclassuid_str = GetEntryString(0x0002,0x0002);
const std::string &mediastoragesopclassuid = ts->GetValue(mediastoragesopclassuid_str);
}
return true;
}
-
return false;
}
-
+
/**
* \brief Retrieve the -unnormalized- number of 'times' of '4D image'.
* User has to tell gdcm the location of this '4th Dimension component'
DataEntry *entry = GetDataEntry(FourthDimensionLocation.GetGroup(),
FourthDimensionLocation.GetElement() );
- if( !entry )
+ if( !entry )
{
gdcmWarningMacro( " FourthDimensionLocation not found at : " <<
std::hex << FourthDimensionLocation.GetGroup()
{
return (int)entry->GetValue(0);
}
-}
+}
float File::GetXSpacing()
{
float xspacing = 1.0;
- float yspacing = 1.0;
+ float yspacing = 1.0;
float zspacing = 1.0;
-
+
uint32_t nbValue;
DataEntry *entry;
bool ok = false;
-
if ( GetSpacing(xspacing,yspacing,zspacing) )
{
return xspacing;
}
- // else fallback
-
+ // else fallback
+
/*
From:David Clunie - view profile
Date:Wed, May 24 2006 1:12 pm
if( nbValue !=2 )
gdcmWarningMacro("ImagerPixelSpacing (0x0018,0x1164) "
<< "has a wrong number of values :" << nbValue);
-
+
if( nbValue >= 3 )
xspacing = (float)entry->GetValue(2);
else if( nbValue >= 2 )
if( nbValue !=2 )
gdcmWarningMacro("PixelSpacing (0x0018,0x0030) "
<< "has a wrong number of values :" << nbValue);
-
+
if( nbValue >= 3 )
xspacing = (float)entry->GetValue(2);
else if( nbValue >= 2 )
uint32_t nbValue;
DataEntry *entry;
bool ok = false;
-
if ( GetSpacing(xspacing,yspacing,zspacing) )
{
return yspacing;
}
- // else fallback
-
-
+ // else fallback
+
std::string SOPClassUID = GetEntryString(0x0008,0x0016);
/// \todo check the various SOP Class
// (in order no to be messed up by old RGB images)
bitsAlloc = "8";
}
-
+
int i= atoi(bitsAlloc.c_str()); // fix a bug in some headers
if ( i > 8 && i < 16 )
{
bitsAlloc = "16";
}
-
+
std::string sign;
if( IsSignedPixelData() )
{
{
gdcmWarningMacro( "Photometric Interpretation (0028,0004) supposed to be "
<< "mandatory");
+ // to deal with old ACR-NEMA images
+ if (GetNumberOfScalarComponents() == 1)
+ return true;
}
return false;
}
}
return true;
}
-
return false;
}
/**
*\brief gets the info from 0028,1052 : Rescale Intercept
- * @return Rescale Intercept. defaulted to 0.0 is not found or empty
+ * @return Rescale Intercept. defaulted to 0.0 if not found or empty
*/
double File::GetRescaleIntercept()
{
/**
*\brief gets the info from 0028,1053 : Rescale Slope
- * @return Rescale Slope. defaulted to 1.0 is not found or empty
+ * @return Rescale Slope. defaulted to 1.0 if not found or empty
*/
double File::GetRescaleSlope()
{
gdcmWarningMacro( "You cannot 'Anonymize' a SeqEntry ");
continue;
}
-
+
valLgth = (*it).Value.size();
if (valLgth == 0)
continue;
*/
bool File::Write(std::string fileName, FileType writetype)
{
+ gdcmDebugMacro(" File::Write ");
std::ofstream *fp = new std::ofstream(fileName.c_str(),
std::ios::out | std::ios::binary);
if (*fp == NULL)
}
/// \todo FIXME : Derma?.dcm does not have it...let's remove it ?!? JPRx
- if( writetype != JPEG )
+ if( writetype != JPEG && writetype != JPEG2000)
{
int i_lgPix = GetEntryLength(GrPixel, NumPixel);
- if (i_lgPix != -2)
+ if (i_lgPix != -2) /// \todo wtf "-2" ?!?
{
// no (GrPixel, NumPixel) element
std::string s_lgPix = Util::Format("%d", i_lgPix+12);
s_lgPix = Util::DicomString( s_lgPix.c_str() );
- InsertEntryString(s_lgPix,GrPixel, 0x0000, "UL");
+ InsertEntryString(s_lgPix,GrPixel, 0x0000, "UL");
}
}
Document::WriteContent(fp, writetype);
<< " but instead we encountered tag ("
<< DictEntry::TranslateToKey(itemTagGroup,itemTagElem) << ")"
<< " at address: " << " 0x(" << std::hex
- << (unsigned int)positionOnEntry << std::dec << ")"
+ << (unsigned int)positionOnEntry << std::dec << ")"
) ;
Fp->seekg(positionOnEntry, std::ios::beg);
}
//// Then read the associated Item Length
-
+
// long currentPosition = Fp->tellg(); // save time // JPRx
uint32_t itemLength = ReadInt32();
gdcmDebugMacro( "Basic Item Length is: " << itemLength