Program: gdcm
Module: $RCSfile: gdcmFile.cxx,v $
Language: C++
- Date: $Date: 2006/02/16 20:06:14 $
- Version: $Revision: 1.315 $
+ Date: $Date: 2006/04/11 16:03:26 $
+ Version: $Revision: 1.318 $
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 'O Bytes' , as well as 24 (old ACR-NEMA RGB)
+ // more than 8 (i.e 12, 16) is a 'O Words'
+ 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*)
*/
// 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);