Program: gdcm
Module: $RCSfile: gdcmFile.cxx,v $
Language: C++
- Date: $Date: 2006/02/16 20:06:14 $
- Version: $Revision: 1.315 $
+ Date: $Date: 2006/05/30 08:18:50 $
+ Version: $Revision: 1.319 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
GrPixel = 0x7fe0; // to avoid further troubles
NumPixel = 0x0010;
BasicOffsetTableItemValue = 0;
+ FourthDimensionLocation = TagKey(0,0);
}
// The changed DictEntry will have
// - a correct PixelVR OB or OW)
// - the name to "Pixel Data"
+
+ //==>Take it easy!
+ //==> Just change the VR !
+
+/*
DataEntry *oldEntry = dynamic_cast<DataEntry *>(entry);
if (oldEntry)
{
// Change only made if usefull
if ( PixelVR != oldEntry->GetVR() )
- {
- DictEntry* newDict = DictEntry::New(GrPixel,NumPixel,
- PixelVR,"1","Pixel Data");
-
- DataEntry *newEntry = DataEntry::New(newDict);
- newDict->Delete();
- newEntry->Copy(entry);
- newEntry->SetBinArea(oldEntry->GetBinArea(),oldEntry->IsSelfArea());
- oldEntry->SetSelfArea(false);
-
- RemoveEntry(oldEntry);
- AddEntry(newEntry);
- newEntry->Delete();
+ {
+ //DictEntry* newDict = DictEntry::New(GrPixel,NumPixel,
+ // PixelVR,"1","Pixel Data");
+ //DataEntry *newEntry = DataEntry::New(newDict);
+ //newDict->Delete();
+ //newEntry->Copy(entry);
+ //newEntry->SetBinArea(oldEntry->GetBinArea(),oldEntry->IsSelfArea());
+ //oldEntry->SetSelfArea(false);
+
+ //RemoveEntry(oldEntry);
+ //AddEntry(newEntry);
+ //newEntry->Delete();
+
}
}
+*/
+ VRKey PixelVR;
+ // 8 bits allocated is a 'OB(ytes)' , as well as 24 (old ACR-NEMA RGB)
+ // more than 8 (i.e 12, 16) is a 'OW(ords)'
+ if ( GetBitsAllocated() == 8 || GetBitsAllocated() == 24 )
+ PixelVR = "OB";
+ else
+ PixelVR = "OW";
+ // Change only made if usefull
+ if ( PixelVR != entry->GetVR() )
+ {
+ entry->SetVR(PixelVR);
+ }
}
return true;
}
+
/**
* \brief This predicate, based on hopefully reasonable heuristics,
* decides whether or not the current File was properly parsed
return 1;
}
+/**
+ * \brief Retrieve the -unnormalized- number of 'times' of '4D image'.
+ * User has to tell gdcm the location of this '4th Dimension component'
+ * using SetFourthDimensionLocation() method before.
+ * \warning The defaulted value is 1.
+ * @return The encountered size when found, 1 by default
+ * (The file doesn't contain a '4D image'.).
+ */
+int File::GetTSize()
+{
+ if (FourthDimensionLocation == TagKey(0,0) )// 4D location is not set : not a 4D object
+ return 1;
+
+ DataEntry *entry = GetDataEntry(FourthDimensionLocation.GetGroup(),
+ FourthDimensionLocation.GetElement() );
+ if( !entry )
+ {
+ gdcmWarningMacro( " FourthDimensionLocation not found at : " <<
+ std::hex << FourthDimensionLocation.GetGroup()
+ << "|" << FourthDimensionLocation.GetElement());
+ return 1;
+ }
+ else
+ {
+ return (int)entry->GetValue(0);
+ }
+}
+
/**
* \brief gets the info from 0018,1164 : ImagerPixelSpacing
* then 0028,0030 : Pixel Spacing
{
gdcmWarningMacro( "Unfound Pixel Spacing (0028,0030)" );
}
-
return xspacing;
}
/**
* \brief This function is intended to user who doesn't want
* to have to manage a LUT and expects to get an RBG Pixel image
- * (or a monochrome one ...)
+ * (or a monochrome one, if no LUT found ...)
* \warning to be used with GetImagePixels()
* @return 1 if Gray level, 3 if Color (RGB, YBR, *or PALETTE COLOR*)
*/
it != UserAnonymizeList.end();
++it)
{
+
+ std::cout << "File::AnonymizeNoLoad -------" << std::hex <<(*it).Group <<"|"<<
+ (*it).Elem
+ << "[" << (*it).Value << "] "<< std::endl;
d = GetDocEntry( (*it).Group, (*it).Elem);
if ( d == NULL)
offset = d->GetOffset();
lgth = d->GetLength();
+
+ std::cout << "lgth " << lgth << " valLgth " << valLgth << std::endl;
if (valLgth < lgth)
{
spaces = new std::string( lgth-valLgth, ' ');
(*it).Value = (*it).Value + *spaces;
+ std::cout << "[" << (*it).Value << "] " << lgth << std::endl;
delete spaces;
}
fp->seekp( offset, std::ios::beg );
// 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);
+ InsertEntryString(s_lgPix,GrPixel, 0x0000, "UL");
}
}
Document::WriteContent(fp, writetype);
// These are the deprecated method that one day should be removed (after the next release)
-#ifndef GDCM_LEGACY_REMOVE
+//#ifndef GDCM_LEGACY_REMOVE
/*
* \ brief Loader. (DEPRECATED : temporaryly kept not to break the API)
* @ param fileName file to be open for parsing
* or no tag was found.
* @deprecated Use the Load() [ + SetLoadMode() ] + SetFileName() functions instead
*/
+ /*
bool File::Load( std::string const &fileName )
{
GDCM_LEGACY_REPLACED_BODY(File::Load(std::string), "1.2",
return DoTheLoadingJob( );
}
#endif
-
+*/
//-----------------------------------------------------------------------------
// Print