GDCM_NAME_SPACE::DicomDirObject Class Reference

Parent object for DicomDirPatient, DicomDirStudy, DicomDirSerie, DicomDirImage, of a DicomDir. More...

#include <gdcmDicomDirObject.h>

Inheritance diagram for GDCM_NAME_SPACE::DicomDirObject:

Inheritance graph
[legend]
Collaboration diagram for GDCM_NAME_SPACE::DicomDirObject:

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual void Print (std::ostream &os=std::cout, std::string const &indent="")
 Printer.
void WriteContent (std::ofstream *fp, FileType filetype, bool insideMetaElements)
 write any type of entry to the entry set
uint32_t ComputeFullLength ()
 Compute the full length of the SQItem (not only value length) depending on the VR.
bool AddEntry (DocEntry *Entry)
 Inserts *in the right place* any Entry (Dicom Element) into the Sequence Item.
bool RemoveEntry (DocEntry *EntryToRemove)
 Clear the std::list from given entry AND delete the entry.
void ClearEntry ()
 Remove all entry in the Sequence Item.
DocEntryGetFirstEntry ()
 Get the first Dicom entry while visiting the SQItem.
DocEntryGetNextEntry ()
 Get the next Dicom entry while visiting the SQItem.
DocEntryGetDocEntry (uint16_t group, uint16_t elem)
 Gets a Dicom Element inside a SQ Item Entry.
bool IsEmpty ()
 Tells us if the set contains no entry.
int GetSQItemNumber ()
 returns the ordinal position of a given SQItem
void SetSQItemNumber (int itemNumber)
 Sets the ordinal position of a given SQItem.
int GetDepthLevel ()
 Accessor on SQDepthLevel.
void SetDepthLevel (int depth)
 Accessor on SQDepthLevel.
virtual void Copy (DocEntrySet *set)
 Copies all the attributes from an other DocEntrySet.
virtual std::string GetEntryString (uint16_t group, uint16_t elem)
 Get the "std::string representable" value of the Dicom entry.
virtual void * GetEntryBinArea (uint16_t group, uint16_t elem)
 Gets (from Header) a 'non string' element value.
virtual int GetEntryLength (uint16_t group, uint16_t elem)
 Searches within the DocEntrySet for the value length of a given tag..
DataEntryGetDataEntry (uint16_t group, uint16_t elem)
 Same as Document::GetDocEntry except it returns a result only when the corresponding entry is of type DataEntry.
SeqEntryGetSeqEntry (uint16_t group, uint16_t elem)
 Same as Document::GetDocEntry except it returns a result only when the corresponding entry is of type SeqEntry.
bool SetEntryString (std::string const &content, uint16_t group, uint16_t elem)
 Accesses an existing DocEntry (i.e. a Dicom Element) through its (group, element) and modifies its content with the given value.
bool SetEntryString (std::string const &content, DataEntry *entry)
 Accesses an existing DocEntry (i.e. a Dicom Element) and modifies its content with the given value.
bool SetEntryBinArea (uint8_t *content, int lgth, uint16_t group, uint16_t elem)
 Accesses an existing DocEntry (i.e. a Dicom Element) through its (group, element) and modifies its content with the given value.
bool SetEntryBinArea (uint8_t *content, int lgth, DataEntry *entry)
 Accesses an existing DataEntry (i.e. a Dicom Element) and modifies its content with the given value.
DataEntryInsertEntryString (std::string const &value, uint16_t group, uint16_t elem, VRKey const &vr=GDCM_VRUNKNOWN)
 Modifies the value of a given Doc Entry (Dicom Element) when it exists. Creates it with the given value when unexistant.
DataEntryInsertEntryBinArea (uint8_t *binArea, int lgth, uint16_t group, uint16_t elem, VRKey const &vr=GDCM_VRUNKNOWN)
 Modifies the value of a given Header Entry (Dicom Element) when it exists. Create it with the given value when unexistant. A copy of the binArea is made to be kept in the Document.
SeqEntryInsertSeqEntry (uint16_t group, uint16_t elem)
 Creates a new gdcm::SeqEntry and adds it to the current DocEntrySet. (remove any existing entry with same group,elem).
virtual bool CheckIfEntryExist (uint16_t group, uint16_t elem)
 Checks if a given Dicom Element exists within the DocEntrySet.
DataEntryNewDataEntry (uint16_t group, uint16_t elem, VRKey const &vr=GDCM_VRUNKNOWN)
 Build a new DataEntry from all the low level arguments.
SeqEntryNewSeqEntry (uint16_t group, uint16_t elem)
 Build a new SeqEntry from all the low level arguments.
void Delete ()
 Delete the object.
void Register ()
 Register the object.
void Unregister ()
 Unregister the object.
const unsigned long & GetRefCount () const
 Get the reference counting.
void SetPrintLevel (int level)
 Sets the print level for the Dicom Header Elements.
int GetPrintLevel ()
 Gets the print level for the Dicom Entries.

Static Public Member Functions

static SQItemNew (int depthLevel)

Protected Member Functions

 DicomDirObject (int depth=1)
 Constructor.
 ~DicomDirObject ()
 Canonical destructor.
void FillObject (ListDicomDirMetaElem const &elemList)
 add the 'Object' related Dicom Elements to the listEntries of a partially created DICOMDIR
DictEntryGetDictEntry (uint16_t group, uint16_t elem)
 Searches [both] the public [and the shadow dictionary (when they exist)] for the presence of the DictEntry with given group and element. The public dictionary has precedence on the shadow one(s), if any.

Protected Attributes

ListDocEntry DocEntries
 Chained list of Doc Entries.
ListDocEntry::iterator ItDocEntries
 Iterator, used to visit the entries.
DocEntryPreviousDocEntry
 To be able to backtrack (Private Sequence, Implicit VR related pb).
int PrintLevel
 Amount of printed details for each Dicom Entries : 0 : stands for the least detail level.

Private Member Functions

 gdcmTypeMacro (DicomDirObject)

Detailed Description

Parent object for DicomDirPatient, DicomDirStudy, DicomDirSerie, DicomDirImage, of a DicomDir.

Definition at line 40 of file gdcmDicomDirObject.h.


Constructor & Destructor Documentation

GDCM_NAME_SPACE::DicomDirObject::DicomDirObject int  depth = 1  )  [protected]
 

Constructor.

Parameters:
depth Sequence depth level

Definition at line 34 of file gdcmDicomDirObject.cxx.

00035           : SQItem (depth)
00036 {
00037 }

GDCM_NAME_SPACE::DicomDirObject::~DicomDirObject  )  [protected]
 

Canonical destructor.

Definition at line 42 of file gdcmDicomDirObject.cxx.

00043 {
00044 }


Member Function Documentation

bool GDCM_NAME_SPACE::SQItem::AddEntry DocEntry entry  )  [virtual, inherited]
 

Inserts *in the right place* any Entry (Dicom Element) into the Sequence Item.

Parameters:
entry Entry to add
Returns:
always true

Implements GDCM_NAME_SPACE::DocEntrySet.

Definition at line 132 of file gdcmSQItem.cxx.

References GDCM_NAME_SPACE::SQItem::DocEntries, and GDCM_NAME_SPACE::RefCounter::Register().

Referenced by GDCM_NAME_SPACE::FileHelper::CheckMandatoryElements(), FillObject(), and GDCM_NAME_SPACE::DicomDir::NewMeta().

00133 {   
00134    if (DocEntries.empty() )
00135    {
00136       DocEntries.push_back(entry);
00137       entry->Register();
00138       return true;
00139    }
00140  
00141    ListDocEntry::iterator insertSpot;
00142    ListDocEntry::iterator it = DocEntries.end();
00143    do
00144    {
00145       it--;
00146 
00147       if ( (*it)->IsItemDelimitor() )
00148       {
00149          continue;
00150       }
00151       if ( (*it)->GetGroup() < entry->GetGroup() )
00152          break;
00153       else
00154          if ( (*it)->GetGroup() == entry->GetGroup() &&
00155               (*it)->GetElement() < entry->GetElement() )
00156             break;
00157    } while (it != DocEntries.begin() );
00158   
00159    ++it;
00160    insertSpot = it;
00161    DocEntries.insert(insertSpot, entry); 
00162    entry->Register();
00163    return true;
00164 }   

bool GDCM_NAME_SPACE::DocEntrySet::CheckIfEntryExist uint16_t  group,
uint16_t  elem
[virtual, inherited]
 

Checks if a given Dicom Element exists within the DocEntrySet.

Parameters:
group Group number of the searched Dicom Element
elem Element number of the searched Dicom Element
Returns:
true is found

Definition at line 412 of file gdcmDocEntrySet.cxx.

References GDCM_NAME_SPACE::DocEntrySet::GetDocEntry().

00413 {
00414    return GetDocEntry(group,elem)!=NULL;
00415 }

void GDCM_NAME_SPACE::SQItem::ClearEntry  )  [virtual, inherited]
 

Remove all entry in the Sequence Item.

Implements GDCM_NAME_SPACE::DocEntrySet.

Definition at line 192 of file gdcmSQItem.cxx.

References GDCM_NAME_SPACE::SQItem::DocEntries.

Referenced by GDCM_NAME_SPACE::SQItem::Copy(), and GDCM_NAME_SPACE::SQItem::~SQItem().

00193 {
00194    for(ListDocEntry::iterator cc = DocEntries.begin();
00195                               cc != DocEntries.end();
00196                             ++cc)
00197    {
00198       (*cc)->Unregister();
00199    }
00200    DocEntries.clear();
00201 }

uint32_t GDCM_NAME_SPACE::SQItem::ComputeFullLength  )  [inherited]
 

Compute the full length of the SQItem (not only value length) depending on the VR.

Definition at line 107 of file gdcmSQItem.cxx.

References GDCM_NAME_SPACE::SQItem::DocEntries.

00108 {
00109    uint32_t l = 8;  // Item Starter length
00110    for (ListDocEntry::iterator it = DocEntries.begin();  
00111                                it != DocEntries.end();
00112                              ++it)
00113    {   
00114       // we skip delimitors (start and end one) because 
00115       // we force them as 'no length'
00116       if ( (*it)->GetGroup() == 0xfffe )
00117       {
00118          continue;
00119       }
00120       l += (*it)->ComputeFullLength();
00121    }
00122    l += 8; // 'Item Delimitation' item 
00123    return l;  
00124 }

void GDCM_NAME_SPACE::SQItem::Copy DocEntrySet set  )  [virtual, inherited]
 

Copies all the attributes from an other DocEntrySet.

Parameters:
set entry to copy from
Remarks:
The contained DocEntries a not copied, only referenced

Reimplemented from GDCM_NAME_SPACE::DocEntrySet.

Reimplemented in GDCM_NAME_SPACE::DicomDirPatient, GDCM_NAME_SPACE::DicomDirSerie, and GDCM_NAME_SPACE::DicomDirStudy.

Definition at line 250 of file gdcmSQItem.cxx.

References GDCM_NAME_SPACE::SQItem::ClearEntry(), GDCM_NAME_SPACE::DocEntrySet::Copy(), GDCM_NAME_SPACE::SQItem::DocEntries, GDCM_NAME_SPACE::SQItem::ItDocEntries, GDCM_NAME_SPACE::SQItem::SQDepthLevel, and GDCM_NAME_SPACE::SQItem::SQItemNumber.

Referenced by GDCM_NAME_SPACE::DicomDirStudy::Copy(), GDCM_NAME_SPACE::DicomDirSerie::Copy(), GDCM_NAME_SPACE::DicomDirPatient::Copy(), and GDCM_NAME_SPACE::DicomDir::CreateDicomDir().

00251 {
00252    // Remove all previous entries
00253    ClearEntry();
00254 
00255    DocEntrySet::Copy(set);
00256 
00257    SQItem *sq = dynamic_cast<SQItem *>(set);
00258    if( sq )
00259    {
00260       SQDepthLevel = sq->SQDepthLevel;
00261       SQItemNumber = sq->SQItemNumber;
00262 
00263       DocEntries = sq->DocEntries;
00264       for(ItDocEntries = DocEntries.begin();ItDocEntries != DocEntries.end();++ItDocEntries)
00265          (*ItDocEntries)->Register();
00266    }
00267 }

void GDCM_NAME_SPACE::RefCounter::Delete  )  [inline, inherited]
 

Delete the object.

Remarks:
The object is deleted only if its reference counting is to zero

Definition at line 41 of file gdcmRefCounter.h.

Referenced by GDCM_NAME_SPACE::SerieHelper::AddFileName(), GDCM_NAME_SPACE::Document::Backtrack(), GDCM_NAME_SPACE::FileHelper::CheckMandatoryElements(), GDCM_NAME_SPACE::FileHelper::CheckMandatoryEntry(), GDCM_NAME_SPACE::FileHelper::CopyMandatoryEntry(), GDCM_NAME_SPACE::Dict::DoTheLoadingJob(), GDCM_NAME_SPACE::FillDefaultDataDict(), FillObject(), vtkGdcmReader::GetFileInformation(), GDCM_NAME_SPACE::DocEntrySet::InsertEntryBinArea(), GDCM_NAME_SPACE::DocEntrySet::InsertEntryString(), GDCM_NAME_SPACE::DocEntrySet::InsertSeqEntry(), vtkGdcmReader::LoadFileInformation(), GDCM_NAME_SPACE::DicomDir::NewMeta(), GDCM_NAME_SPACE::DicomDirStudy::NewVisit(), GDCM_NAME_SPACE::Document::ReadNextDocEntry(), GDCM_NAME_SPACE::DicomDir::SetElement(), GDCM_NAME_SPACE::FileHelper::SetMandatoryEntry(), GDCM_NAME_SPACE::FileHelper::SetWriteFileTypeToExplicitVR(), GDCM_NAME_SPACE::FileHelper::SetWriteFileTypeToImplicitVR(), GDCM_NAME_SPACE::FileHelper::SetWriteFileTypeToJPEG(), GDCM_NAME_SPACE::FileHelper::SetWriteFileTypeToJPEG2000(), GDCM_NAME_SPACE::FileHelper::SetWriteToLibido(), GDCM_NAME_SPACE::DicomDir::~DicomDir(), GDCM_NAME_SPACE::DictSet::~DictSet(), and GDCM_NAME_SPACE::Global::~Global().

00041 { Unregister(); }

void GDCM_NAME_SPACE::DicomDirObject::FillObject ListDicomDirMetaElem const &  elemList  )  [protected]
 

add the 'Object' related Dicom Elements to the listEntries of a partially created DICOMDIR

Parameters:
elemList Element List to add at the right place

Definition at line 56 of file gdcmDicomDirObject.cxx.

References GDCM_NAME_SPACE::SQItem::AddEntry(), GDCM_NAME_SPACE::RefCounter::Delete(), GDCM_NAME_SPACE::DataEntry::New(), GDCM_NAME_SPACE::DocEntry::SetOffset(), and GDCM_NAME_SPACE::DataEntry::SetString().

Referenced by GDCM_NAME_SPACE::DicomDirImage::DicomDirImage(), GDCM_NAME_SPACE::DicomDirMeta::DicomDirMeta(), GDCM_NAME_SPACE::DicomDirPatient::DicomDirPatient(), GDCM_NAME_SPACE::DicomDirPrivate::DicomDirPrivate(), GDCM_NAME_SPACE::DicomDirSerie::DicomDirSerie(), GDCM_NAME_SPACE::DicomDirStudy::DicomDirStudy(), and GDCM_NAME_SPACE::DicomDirVisit::DicomDirVisit().

00057 {
00058   // FillObject fills up the SQItem that will be connected to the right place
00059    ListDicomDirMetaElem::const_iterator it;
00060    //uint16_t tmpGr,tmpEl;
00061    //DictEntry *dictEntry;
00062    DataEntry *entry;
00063       
00064    // for all the Elements found in they own part of the DicomDir dict.     
00065    for(it = elemList.begin(); it != elemList.end(); ++it)
00066    {
00067       //tmpGr = it->Group;
00068       //tmpEl = it->Elem;
00069       //dictEntry = Global::GetDicts()->GetDefaultPubDict()->GetEntry(tmpGr,tmpEl);
00070       //entry = DataEntry::New(dictEntry);
00071       entry = DataEntry::New(it->Group, it->Elem, it->VR );
00072       entry->SetOffset(0); // just to avoid further missprinting
00073       entry->SetString(it->Value);
00074 
00075       AddEntry(entry);
00076       entry->Delete();
00077    } 
00078 } 

GDCM_NAME_SPACE::DicomDirObject::gdcmTypeMacro DicomDirObject   )  [private]
 

DataEntry * GDCM_NAME_SPACE::DocEntrySet::GetDataEntry uint16_t  group,
uint16_t  elem
[inherited]
 

Same as Document::GetDocEntry except it returns a result only when the corresponding entry is of type DataEntry.

Parameters:
group Group number of the searched Dicom Element
elem Element number of the searched Dicom Element
Returns:
When present, the corresponding DataEntry.

Definition at line 103 of file gdcmDocEntrySet.cxx.

References GDCM_NAME_SPACE::DocEntrySet::GetDocEntry().

Referenced by GDCM_NAME_SPACE::FileHelper::CheckMandatoryElements(), GDCM_NAME_SPACE::FileHelper::CheckMandatoryEntry(), GDCM_NAME_SPACE::Document::DoTheLoadingDocumentJob(), GDCM_NAME_SPACE::File::GetBitsAllocated(), GDCM_NAME_SPACE::File::GetBitsStored(), GDCM_NAME_SPACE::DocEntrySet::GetEntryBinArea(), GDCM_NAME_SPACE::File::GetHighBitPosition(), GDCM_NAME_SPACE::File::GetPlanarConfiguration(), GDCM_NAME_SPACE::File::GetRescaleIntercept(), GDCM_NAME_SPACE::File::GetSamplesPerPixel(), GDCM_NAME_SPACE::File::GetTSize(), GDCM_NAME_SPACE::File::GetXOrigin(), GDCM_NAME_SPACE::File::GetXSize(), GDCM_NAME_SPACE::File::GetXSpacing(), GDCM_NAME_SPACE::File::GetYOrigin(), GDCM_NAME_SPACE::File::GetYSize(), GDCM_NAME_SPACE::File::GetYSpacing(), GDCM_NAME_SPACE::File::GetZOrigin(), GDCM_NAME_SPACE::File::GetZSize(), GDCM_NAME_SPACE::File::GetZSpacing(), GDCM_NAME_SPACE::File::IsSignedPixelData(), GDCM_NAME_SPACE::ElementSet::Print(), GDCM_NAME_SPACE::DocEntrySet::SetEntryBinArea(), GDCM_NAME_SPACE::DocEntrySet::SetEntryString(), GDCM_NAME_SPACE::FileHelper::SetWriteToLibido(), GDCM_NAME_SPACE::FileHelper::SetWriteToNoLibido(), GDCM_NAME_SPACE::FileHelper::Write(), GDCM_NAME_SPACE::File::Write(), and GDCM_NAME_SPACE::DicomDirMeta::WriteContent().

00104 {
00105    DocEntry *currentEntry = GetDocEntry(group, elem);
00106    if ( !currentEntry )
00107       return NULL;
00108 
00109    return dynamic_cast<DataEntry*>(currentEntry);
00110 }

int GDCM_NAME_SPACE::SQItem::GetDepthLevel  )  [inline, inherited]
 

Accessor on SQDepthLevel.

Definition at line 70 of file gdcmSQItem.h.

00070 { return SQDepthLevel; }                                                                             

DictEntry * GDCM_NAME_SPACE::DocEntrySet::GetDictEntry uint16_t  group,
uint16_t  elem
[protected, inherited]
 

Searches [both] the public [and the shadow dictionary (when they exist)] for the presence of the DictEntry with given group and element. The public dictionary has precedence on the shadow one(s), if any.

Parameters:
group Group number of the searched DictEntry
elem Element number of the searched DictEntry
Returns:
Corresponding DictEntry when it exists, NULL otherwise.
Remarks:
The returned DictEntry is registered when existing
Todo:
store the DefaultPubDict somwhere, in order not to access the HTable every time ! --> Done!

Definition at line 473 of file gdcmDocEntrySet.cxx.

References gdcmWarningMacro, GDCM_NAME_SPACE::DictSet::GetDefaultPubDict(), GDCM_NAME_SPACE::Global::GetDicts(), GDCM_NAME_SPACE::Dict::GetEntry(), and GDCM_NAME_SPACE::RefCounter::Register().

Referenced by GDCM_NAME_SPACE::Document::ReadNextDocEntry().

00474 {
00475    DictEntry *found = 0;
00478    Dict *pubDict = Global::GetDicts()->GetDefaultPubDict();
00479    if (!pubDict) 
00480    {
00481       gdcmWarningMacro( "We SHOULD have a default dictionary");
00482    }
00483    else
00484    {
00485       found = pubDict->GetEntry(group, elem);
00486       if( found )
00487          found->Register();
00488    }
00489    return found;
00490 }

DocEntry * GDCM_NAME_SPACE::SQItem::GetDocEntry uint16_t  group,
uint16_t  elem
[virtual, inherited]
 

Gets a Dicom Element inside a SQ Item Entry.

Parameters:
group Group number of the Entry
elem Element number of the Entry
Returns:
Entry whose (group,elem) was passed. 0 if not found

Implements GDCM_NAME_SPACE::DocEntrySet.

Definition at line 233 of file gdcmSQItem.cxx.

References GDCM_NAME_SPACE::SQItem::DocEntries.

Referenced by GDCM_NAME_SPACE::DicomDir::CreateDicomDir(), GDCM_NAME_SPACE::File::GetRescaleSlopeIntercept(), and GDCM_NAME_SPACE::File::GetSpacing().

00234 {
00235    for(ListDocEntry::iterator i =  DocEntries.begin();
00236                               i != DocEntries.end(); 
00237                             ++i)
00238    {
00239       if ( (*i)->GetGroup() == group && (*i)->GetElement() == elem )
00240          return *i;
00241    }
00242    return NULL;
00243 }

void * GDCM_NAME_SPACE::DocEntrySet::GetEntryBinArea uint16_t  group,
uint16_t  elem
[virtual, inherited]
 

Gets (from Header) a 'non string' element value.

Parameters:
group group number of the Entry
elem element number of the Entry
Returns:
Pointer to the 'non string' area

Definition at line 73 of file gdcmDocEntrySet.cxx.

References GDCM_NAME_SPACE::DataEntry::GetBinArea(), and GDCM_NAME_SPACE::DocEntrySet::GetDataEntry().

00074 {
00075    DataEntry *entry = GetDataEntry(group, elem);
00076    if ( entry )
00077       return entry->GetBinArea();
00078    return 0;
00079 }

int GDCM_NAME_SPACE::DocEntrySet::GetEntryLength uint16_t  group,
uint16_t  elem
[virtual, inherited]
 

Searches within the DocEntrySet for the value length of a given tag..

Parameters:
group Group number of the searched tag.
elem Element number of the searched tag.
Returns:
Corresponding element length; -1 if not found

Definition at line 88 of file gdcmDocEntrySet.cxx.

References GDCM_NAME_SPACE::DocEntrySet::GetDocEntry(), and GDCM_NAME_SPACE::DocEntry::GetLength().

Referenced by GDCM_NAME_SPACE::DicomDir::SetElement(), and GDCM_NAME_SPACE::File::Write().

00089 {
00090    DocEntry *entry = GetDocEntry(group, elem);
00091    if ( entry )
00092       return entry->GetLength();
00093    return -1;
00094 }

std::string GDCM_NAME_SPACE::DocEntrySet::GetEntryString uint16_t  group,
uint16_t  elem
[virtual, inherited]
 

Get the "std::string representable" value of the Dicom entry.

Parameters:
group Group number of the searched tag.
elem Element number of the searched tag.
Returns:
Corresponding element value when it exists, and the string GDCM_UNFOUND otherwise.

Definition at line 51 of file gdcmDocEntrySet.cxx.

References GDCM_NAME_SPACE::GDCM_NOTLOADED, GDCM_NAME_SPACE::GDCM_UNFOUND, GDCM_NAME_SPACE::GDCM_UNREAD, GDCM_NAME_SPACE::DocEntrySet::GetDocEntry(), GDCM_NAME_SPACE::DataEntry::GetString(), GDCM_NAME_SPACE::DataEntry::IsNotLoaded(), GDCM_NAME_SPACE::DataEntry::IsUnfound(), and GDCM_NAME_SPACE::DataEntry::IsUnread().

Referenced by GDCM_NAME_SPACE::SerieHelper::AddFile(), GDCM_NAME_SPACE::File::AnonymizeFile(), GDCM_NAME_SPACE::FileHelper::CheckMandatoryElements(), GDCM_NAME_SPACE::SerieHelper::CreateUniqueSeriesIdentifier(), GDCM_NAME_SPACE::SerieHelper::CreateUserDefinedFileIdentifier(), GDCM_NAME_SPACE::Document::DoTheLoadingDocumentJob(), GDCM_NAME_SPACE::File::DoTheLoadingJob(), GDCM_NAME_SPACE::DirList::Explore(), GDCM_NAME_SPACE::File::GetImageNumber(), GDCM_NAME_SPACE::File::GetImageOrientationPatient(), GDCM_NAME_SPACE::File::GetImagePositionPatient(), GDCM_NAME_SPACE::File::GetLUTNbits(), GDCM_NAME_SPACE::File::GetModality(), GDCM_NAME_SPACE::File::GetNumberOfScalarComponents(), GDCM_NAME_SPACE::File::GetNumberOfScalarComponentsRaw(), GDCM_NAME_SPACE::File::GetPixelSize(), GDCM_NAME_SPACE::File::GetPixelType(), GDCM_NAME_SPACE::File::GetRescaleSlope(), GDCM_NAME_SPACE::File::GetRescaleSlopeIntercept(), GDCM_NAME_SPACE::File::GetSpacing(), GDCM_NAME_SPACE::Document::GetTransferSyntaxName(), GDCM_NAME_SPACE::File::GetXSpacing(), GDCM_NAME_SPACE::File::GetYSpacing(), GDCM_NAME_SPACE::File::IsMonochrome(), GDCM_NAME_SPACE::File::IsMonochrome1(), GDCM_NAME_SPACE::File::IsPaletteColor(), GDCM_NAME_SPACE::File::IsReadable(), GDCM_NAME_SPACE::File::IsYBRFull(), GDCM_NAME_SPACE::Document::operator<(), and GDCM_NAME_SPACE::DicomDir::SetElement().

00052 {
00053    DataEntry *entry = dynamic_cast<DataEntry *>(GetDocEntry(group,elem));
00054    if ( entry )
00055    {
00056       if( entry->IsNotLoaded() )
00057          return GDCM_NOTLOADED;
00058       if( entry->IsUnfound() )
00059          return GDCM_UNFOUND;
00060       if( entry->IsUnread() )
00061          return GDCM_UNREAD;
00062       return entry->GetString();
00063    }
00064    return GDCM_UNFOUND;
00065 }

DocEntry * GDCM_NAME_SPACE::SQItem::GetFirstEntry  )  [virtual, inherited]
 

Get the first Dicom entry while visiting the SQItem.

Returns:
The first DocEntry if found, otherwhise 0

Implements GDCM_NAME_SPACE::DocEntrySet.

Definition at line 207 of file gdcmSQItem.cxx.

References GDCM_NAME_SPACE::SQItem::DocEntries, and GDCM_NAME_SPACE::SQItem::ItDocEntries.

Referenced by GDCM_NAME_SPACE::DicomDirMeta::ComputeGroup0002Length().

00208 {
00209    ItDocEntries = DocEntries.begin();
00210    if ( ItDocEntries != DocEntries.end() )
00211       return *ItDocEntries;
00212    return 0;   
00213 }

DocEntry * GDCM_NAME_SPACE::SQItem::GetNextEntry  )  [virtual, inherited]
 

Get the next Dicom entry while visiting the SQItem.

Returns:
The next DocEntry if found, otherwhise NULL

Implements GDCM_NAME_SPACE::DocEntrySet.

Definition at line 219 of file gdcmSQItem.cxx.

References GDCM_NAME_SPACE::SQItem::DocEntries, and GDCM_NAME_SPACE::SQItem::ItDocEntries.

Referenced by GDCM_NAME_SPACE::DicomDirMeta::ComputeGroup0002Length().

00220 {
00221    ++ItDocEntries;
00222    if ( ItDocEntries != DocEntries.end() )
00223       return  *ItDocEntries;
00224    return NULL;
00225 }

int GDCM_NAME_SPACE::Base::GetPrintLevel  )  [inline, inherited]
 

Gets the print level for the Dicom Entries.

Definition at line 50 of file gdcmBase.h.

00050 { return PrintLevel; }

const unsigned long& GDCM_NAME_SPACE::RefCounter::GetRefCount  )  const [inline, inherited]
 

Get the reference counting.

Returns:
Reference count

Definition at line 59 of file gdcmRefCounter.h.

00060    {
00061       return RefCount;
00062    }

SeqEntry * GDCM_NAME_SPACE::DocEntrySet::GetSeqEntry uint16_t  group,
uint16_t  elem
[inherited]
 

Same as Document::GetDocEntry except it returns a result only when the corresponding entry is of type SeqEntry.

Parameters:
group Group number of the searched Dicom Element
elem Element number of the searched Dicom Element
Returns:
When present, the corresponding SeqEntry.

Definition at line 119 of file gdcmDocEntrySet.cxx.

References GDCM_NAME_SPACE::DocEntrySet::GetDocEntry().

Referenced by GDCM_NAME_SPACE::Document::DoTheLoadingDocumentJob(), GDCM_NAME_SPACE::File::GetRescaleSlopeIntercept(), and GDCM_NAME_SPACE::File::GetSpacing().

00120 {
00121    DocEntry *currentEntry = GetDocEntry(group, elem);
00122    if ( !currentEntry )
00123       return NULL;
00124 
00125    return dynamic_cast<SeqEntry*>(currentEntry);
00126 }

int GDCM_NAME_SPACE::SQItem::GetSQItemNumber  )  [inline, inherited]
 

returns the ordinal position of a given SQItem

Definition at line 65 of file gdcmSQItem.h.

00065 { return SQItemNumber; }

DataEntry * GDCM_NAME_SPACE::DocEntrySet::InsertEntryBinArea uint8_t *  binArea,
int  lgth,
uint16_t  group,
uint16_t  elem,
VRKey const &  vr = GDCM_VRUNKNOWN
[inherited]
 

Modifies the value of a given Header Entry (Dicom Element) when it exists. Create it with the given value when unexistant. A copy of the binArea is made to be kept in the Document.

Parameters:
binArea (binary) value to be set
lgth length of the Bin Area we want to set
group Group number of the Entry
elem Element number of the Entry
vr V(alue) R(epresentation) of the Entry -if private Entry-
Returns:
pointer to the modified/created Header Entry (NULL when creation failed).

Definition at line 290 of file gdcmDocEntrySet.cxx.

References GDCM_NAME_SPACE::DocEntrySet::AddEntry(), GDCM_NAME_SPACE::RefCounter::Delete(), gdcmWarningMacro, GDCM_NAME_SPACE::DocEntrySet::GetDocEntry(), GDCM_NAME_SPACE::DocEntry::GetVR(), GDCM_NAME_SPACE::DocEntrySet::NewDataEntry(), GDCM_NAME_SPACE::DocEntrySet::RemoveEntry(), and GDCM_NAME_SPACE::DocEntrySet::SetEntryBinArea().

Referenced by GDCM_NAME_SPACE::FileHelper::InsertEntryBinArea().

00293 {
00294    DataEntry *dataEntry = 0;
00295    DocEntry *currentEntry = GetDocEntry( group, elem );
00296 
00297    // Verify the currentEntry
00298    if (currentEntry)
00299    {
00300       dataEntry = dynamic_cast<DataEntry *>(currentEntry);
00301 
00302       // Verify the VR
00303       if ( dataEntry )
00304          if ( dataEntry->GetVR()!=vr )
00305             dataEntry = NULL;
00306 
00307       // if currentEntry doesn't correspond to the requested dataEntry
00308       if ( !dataEntry)
00309       {
00310          if ( !RemoveEntry(currentEntry) )
00311          {
00312             gdcmWarningMacro( "Removal of previous DocEntry failed.");
00313             return NULL;
00314          }
00315       }
00316    }
00317 
00318    // Create a new dataEntry if necessary
00319    if ( !dataEntry)
00320    {
00321       dataEntry = NewDataEntry(group, elem, vr);
00322 
00323       if ( !AddEntry(dataEntry) )
00324       {
00325          gdcmWarningMacro( "AddEntry failed although this is a creation.");
00326          dataEntry->Delete();
00327          return NULL;
00328       }
00329       dataEntry->Delete();
00330    }
00331 
00332    // Set the dataEntry value
00333    uint8_t *tmpArea;
00334    if ( lgth>0 && binArea )
00335    {
00336       tmpArea = new uint8_t[lgth];
00337       memcpy(tmpArea,binArea,lgth);
00338    }
00339    else
00340    {
00341       tmpArea = 0;
00342    }
00343    if ( !SetEntryBinArea(tmpArea,lgth,dataEntry) )
00344    {
00345       if ( tmpArea )
00346       {
00347          delete[] tmpArea;
00348       }
00349    }
00350    return dataEntry;
00351 }  

DataEntry * GDCM_NAME_SPACE::DocEntrySet::InsertEntryString std::string const &  value,
uint16_t  group,
uint16_t  elem,
VRKey const &  vr = GDCM_VRUNKNOWN
[inherited]
 

Modifies the value of a given Doc Entry (Dicom Element) when it exists. Creates it with the given value when unexistant.

Parameters:
value (string) Value to be set
group Group number of the Entry
elem Element number of the Entry
vr V(alue) R(epresentation) of the Entry -if private Entry-
Returns:
pointer to the modified/created Header Entry (NULL when creation failed).

Definition at line 216 of file gdcmDocEntrySet.cxx.

References GDCM_NAME_SPACE::DocEntrySet::AddEntry(), GDCM_NAME_SPACE::RefCounter::Delete(), GDCM_NAME_SPACE::GDCM_VRUNKNOWN, gdcmWarningMacro, GDCM_NAME_SPACE::DictSet::GetDefaultPubDict(), GDCM_NAME_SPACE::Global::GetDicts(), GDCM_NAME_SPACE::DocEntrySet::GetDocEntry(), GDCM_NAME_SPACE::Dict::GetEntry(), GDCM_NAME_SPACE::DocEntry::GetKey(), GDCM_NAME_SPACE::DictEntry::GetVR(), GDCM_NAME_SPACE::DocEntry::GetVR(), GDCM_NAME_SPACE::DocEntrySet::NewDataEntry(), GDCM_NAME_SPACE::RefCounter::Register(), GDCM_NAME_SPACE::DocEntrySet::RemoveEntry(), and GDCM_NAME_SPACE::DocEntrySet::SetEntryString().

Referenced by GDCM_NAME_SPACE::FileHelper::InsertEntryString(), GDCM_NAME_SPACE::FileHelper::Write(), and GDCM_NAME_SPACE::File::Write().

00219 {
00220    DataEntry *dataEntry = 0;
00221    DocEntry *currentEntry = GetDocEntry( group, elem );
00222    VRKey localVR = vr;
00223    if (currentEntry)
00224    {
00225       dataEntry = dynamic_cast<DataEntry *>(currentEntry);
00226 
00227       // Verify the VR
00228       if ( dataEntry )
00229          if ( dataEntry->GetVR()!=vr )
00230             dataEntry = NULL;
00231 
00232       // if currentEntry doesn't correspond to the requested dataEntry
00233       if ( !dataEntry)
00234       {
00235          if ( !RemoveEntry(currentEntry) )
00236          {
00237             gdcmWarningMacro( "Removal of previous DocEntry failed.");
00238             return NULL;
00239          }
00240       }
00241    }
00242   
00243    else // the 'currentEntry' was not found
00244    {
00245       if ( vr == GDCM_VRUNKNOWN ) // user didn't specify a VR.
00246                                   //  Probabely he trusts the Dicom Dict !
00247       {
00248           DictEntry *e = 
00249             Global::GetDicts()->GetDefaultPubDict()->GetEntry(group, elem);
00250           if ( e )
00251           {
00252              localVR = e->GetVR();  
00253              e->Register(); // ?? JPRx
00254          }
00255       }
00256    }
00257 
00258    // Create a new dataEntry if necessary
00259    if ( !dataEntry )
00260    {
00261       dataEntry = NewDataEntry( group, elem, localVR );
00262 
00263       if ( !AddEntry(dataEntry) )
00264       {
00265          gdcmWarningMacro("AddEntry " << dataEntry->GetKey() 
00266                  << " failed although this is a creation.");
00267          dataEntry->Delete();
00268          return NULL;
00269       }
00270       dataEntry->Delete(); // ?!? JPRx
00271    }
00272 
00273    // Set the dataEntry value
00274    SetEntryString(value, dataEntry); // The std::string value
00275    return dataEntry;
00276 }

SeqEntry * GDCM_NAME_SPACE::DocEntrySet::InsertSeqEntry uint16_t  group,
uint16_t  elem
[inherited]
 

Creates a new gdcm::SeqEntry and adds it to the current DocEntrySet. (remove any existing entry with same group,elem).

Parameters:
group Group number of the Entry
elem Element number of the Entry
Returns:
pointer to the created SeqEntry (NULL when creation failed).

Definition at line 361 of file gdcmDocEntrySet.cxx.

References GDCM_NAME_SPACE::DocEntrySet::AddEntry(), GDCM_NAME_SPACE::RefCounter::Delete(), gdcmWarningMacro, GDCM_NAME_SPACE::DocEntrySet::GetDocEntry(), GDCM_NAME_SPACE::DocEntrySet::NewSeqEntry(), and GDCM_NAME_SPACE::DocEntrySet::RemoveEntry().

Referenced by GDCM_NAME_SPACE::FileHelper::InsertSeqEntry().

00362 {
00363    SeqEntry *seqEntry = 0;
00364    DocEntry *currentEntry = GetDocEntry( group, elem );
00365 
00366    // Verify the currentEntry
00367    if ( currentEntry )
00368    {
00369       seqEntry = dynamic_cast<SeqEntry *>(currentEntry);
00370 
00371       // Verify the VR
00372       if ( seqEntry )
00373          seqEntry = NULL;
00374 
00375       // if currentEntry doesn't correspond to the requested seqEntry
00376       if ( !seqEntry )
00377       {
00378          if (!RemoveEntry(currentEntry))
00379          {
00380             gdcmWarningMacro( "Removal of previous DocEntry failed for ("
00381                <<std::hex << group << "|" << elem <<")" );
00382             return NULL;
00383          }
00384       }
00385    }
00386    // Create a new seqEntry if necessary
00387    if ( !seqEntry )
00388    {
00389       seqEntry = NewSeqEntry(group, elem);
00390 
00391       if ( !AddEntry(seqEntry) )
00392       {
00393          gdcmWarningMacro( "AddEntry failed although this is a creation for ("
00394             <<std::hex << group << "|" << elem <<")" );
00395          seqEntry->Delete();
00396          return NULL;
00397       }
00398       seqEntry->Delete();
00399    }
00400    // Remark :
00401    // SequenceDelimitationItem will be added at the end of the SeqEntry,
00402    // at write time
00403    return seqEntry;
00404 } 

bool GDCM_NAME_SPACE::SQItem::IsEmpty  )  [inline, virtual, inherited]
 

Tells us if the set contains no entry.

Implements GDCM_NAME_SPACE::DocEntrySet.

Definition at line 62 of file gdcmSQItem.h.

00062 { return DocEntries.empty(); }

static SQItem* GDCM_NAME_SPACE::SQItem::New int  depthLevel  )  [inline, static, inherited]
 

Definition at line 46 of file gdcmSQItem.h.

Referenced by GDCM_NAME_SPACE::FileHelper::CheckMandatoryElements().

00046 {return new SQItem(depthLevel);}

DataEntry * GDCM_NAME_SPACE::DocEntrySet::NewDataEntry uint16_t  group,
uint16_t  elem,
VRKey const &  vr = GDCM_VRUNKNOWN
[inherited]
 

Build a new DataEntry from all the low level arguments.

Parameters:
group Group number of the new Entry
elem Element number of the new Entry
vr V(alue) R(epresentation) of the new Entry
Remarks:
The user of this method must destroy the DataEntry when unused

Definition at line 425 of file gdcmDocEntrySet.cxx.

References gdcmWarningMacro, and GDCM_NAME_SPACE::DataEntry::New().

Referenced by GDCM_NAME_SPACE::FileHelper::CopyDataEntry(), GDCM_NAME_SPACE::DocEntrySet::InsertEntryBinArea(), GDCM_NAME_SPACE::DocEntrySet::InsertEntryString(), and GDCM_NAME_SPACE::Document::ReadNextDocEntry().

00427 {
00428 
00429    DataEntry *newEntry = DataEntry::New(group, elem, vr);
00430    if (!newEntry) 
00431    {
00432       gdcmWarningMacro( "Failed to allocate DataEntry for ("
00433           <<std::hex << group << "|" << elem <<")" );
00434       return 0;
00435    }
00436    return newEntry;
00437 }

SeqEntry * GDCM_NAME_SPACE::DocEntrySet::NewSeqEntry uint16_t  group,
uint16_t  elem
[inherited]
 

Build a new SeqEntry from all the low level arguments.

Parameters:
group Group number of the new Entry
elem Element number of the new Entry
Remarks:
The user of this method must destroy the SeqEntry when unused

Definition at line 445 of file gdcmDocEntrySet.cxx.

References gdcmWarningMacro, and GDCM_NAME_SPACE::SeqEntry::New().

Referenced by GDCM_NAME_SPACE::Document::Backtrack(), GDCM_NAME_SPACE::DocEntrySet::InsertSeqEntry(), and GDCM_NAME_SPACE::Document::ReadNextDocEntry().

00446 {
00447    //DictEntry *dictEntry = GetDictEntry(group, elem, "SQ");
00448 
00449    //SeqEntry *newEntry = SeqEntry::New( dictEntry );
00450    SeqEntry *newEntry = SeqEntry::New( group, elem );
00451    //dictEntry->Unregister(); // GetDictEntry register it
00452    if (!newEntry)
00453    {
00454       gdcmWarningMacro( "Failed to allocate SeqEntry for ("
00455          <<std::hex << group << "|" << elem <<")" );
00456       return 0;
00457    }     
00458    return newEntry;
00459 }

void GDCM_NAME_SPACE::SQItem::Print std::ostream &  os = std::cout,
std::string const &  indent = ""
[virtual, inherited]
 

Printer.

Reimplemented from GDCM_NAME_SPACE::Base.

Reimplemented in GDCM_NAME_SPACE::DicomDirImage, GDCM_NAME_SPACE::DicomDirMeta, GDCM_NAME_SPACE::DicomDirPatient, GDCM_NAME_SPACE::DicomDirPrivate, GDCM_NAME_SPACE::DicomDirSerie, GDCM_NAME_SPACE::DicomDirStudy, and GDCM_NAME_SPACE::DicomDirVisit.

Definition at line 282 of file gdcmSQItem.cxx.

References GDCM_NAME_SPACE::SQItem::SQDepthLevel.

Referenced by GDCM_NAME_SPACE::DicomDirStudy::Print(), GDCM_NAME_SPACE::DicomDirSerie::Print(), and GDCM_NAME_SPACE::DicomDirPatient::Print().

00283 {
00284    std::ostringstream s;
00285 
00286    if (SQDepthLevel > 0)
00287    {
00288       for (int i = 0; i < SQDepthLevel; ++i)
00289       {
00290          s << "   | " ;
00291       }
00292    }
00293    os << s.str() << " --- SQItem number " << SQItemNumber  << std::endl;
00294    for (ListDocEntry::iterator i  = DocEntries.begin();
00295                                i != DocEntries.end();
00296                              ++i)
00297    {
00298       DocEntry *Entry = *i;
00299       bool PrintEndLine = true;
00300 
00301       os << s.str();
00302       Entry->SetPrintLevel(PrintLevel);
00303       Entry->Print(os); 
00304       if ( dynamic_cast<SeqEntry*>(Entry) )
00305       {
00306          PrintEndLine = false;
00307       }
00308       if (PrintEndLine)
00309       {
00310          os << std::endl;
00311       }
00312    } 
00313 }

void GDCM_NAME_SPACE::RefCounter::Register  )  [inline, inherited]
 

Register the object.

Remarks:
It increments the reference counting

Definition at line 46 of file gdcmRefCounter.h.

Referenced by GDCM_NAME_SPACE::SQItem::AddEntry(), GDCM_NAME_SPACE::SeqEntry::AddSQItem(), GDCM_NAME_SPACE::SeqEntry::Copy(), GDCM_NAME_SPACE::DicomDir::Copy(), GDCM_NAME_SPACE::FileHelper::FileHelper(), GDCM_NAME_SPACE::DocEntrySet::GetDictEntry(), GDCM_NAME_SPACE::DocEntry::GetName(), GDCM_NAME_SPACE::DocEntry::GetVM(), GDCM_NAME_SPACE::DocEntrySet::InsertEntryString(), GDCM_NAME_SPACE::CommandManager::InSetCommand(), GDCM_NAME_SPACE::DocEntryArchive::Push(), and GDCM_NAME_SPACE::SeqEntry::SetDelimitationItem().

00046 { RefCount++; }

bool GDCM_NAME_SPACE::SQItem::RemoveEntry DocEntry entryToRemove  )  [virtual, inherited]
 

Clear the std::list from given entry AND delete the entry.

Parameters:
entryToRemove Entry to remove AND delete.
Returns:
true if the entry was found and removed; false otherwise

Implements GDCM_NAME_SPACE::DocEntrySet.

Definition at line 171 of file gdcmSQItem.cxx.

References GDCM_NAME_SPACE::SQItem::DocEntries, gdcmDebugMacro, GDCM_NAME_SPACE::DocEntry::GetKey(), and GDCM_NAME_SPACE::RefCounter::Unregister().

00172 {
00173    for(ListDocEntry::iterator it = DocEntries.begin();
00174                               it != DocEntries.end();
00175                             ++it)
00176    {
00177       if ( *it == entryToRemove )
00178       {
00179          DocEntries.erase(it);
00180          gdcmDebugMacro( "One element erased: " << entryToRemove->GetKey() );
00181          entryToRemove->Unregister();
00182          return true;
00183       }
00184    }
00185    gdcmWarningMacro( "Entry not found: " << entryToRemove->GetKey() );
00186    return false ;
00187 }

void GDCM_NAME_SPACE::SQItem::SetDepthLevel int  depth  )  [inline, inherited]
 

Accessor on SQDepthLevel.

Definition at line 73 of file gdcmSQItem.h.

00073 { SQDepthLevel = depth; }

bool GDCM_NAME_SPACE::DocEntrySet::SetEntryBinArea uint8_t *  content,
int  lgth,
DataEntry entry
[inherited]
 

Accesses an existing DataEntry (i.e. a Dicom Element) and modifies its content with the given value.

Parameters:
content new value (void* -> uint8_t*) to substitute with
entry Entry to be modified
lgth new value length

Definition at line 195 of file gdcmDocEntrySet.cxx.

References GDCM_NAME_SPACE::DataEntry::SetBinArea(), and GDCM_NAME_SPACE::DocEntry::SetLength().

00196 {
00197    if (entry)
00198    {
00199       entry->SetLength(lgth);
00200       entry->SetBinArea(content);  
00201       return true;
00202    }
00203    return false;
00204 }

bool GDCM_NAME_SPACE::DocEntrySet::SetEntryBinArea uint8_t *  content,
int  lgth,
uint16_t  group,
uint16_t  elem
[inherited]
 

Accesses an existing DocEntry (i.e. a Dicom Element) through its (group, element) and modifies its content with the given value.

Parameters:
content new value (void* -> uint8_t*) to substitute with
lgth new value length
group group number of the Dicom Element to modify
elem element number of the Dicom Element to modify

Definition at line 158 of file gdcmDocEntrySet.cxx.

References gdcmWarningMacro, and GDCM_NAME_SPACE::DocEntrySet::GetDataEntry().

Referenced by GDCM_NAME_SPACE::DocEntrySet::InsertEntryBinArea(), and GDCM_NAME_SPACE::FileHelper::SetEntryBinArea().

00160 {
00161    DataEntry *entry = GetDataEntry(group, elem);
00162    if (!entry )
00163    {
00164       gdcmWarningMacro( "No corresponding DataEntry " << std::hex << group <<
00165                         "," << elem << " element (try promotion first).");
00166       return false;
00167    }
00168 
00169    return SetEntryBinArea(content,lgth,entry);
00170 } 

bool GDCM_NAME_SPACE::DocEntrySet::SetEntryString std::string const &  content,
DataEntry entry
[inherited]
 

Accesses an existing DocEntry (i.e. a Dicom Element) and modifies its content with the given value.

Parameters:
content new value (string) to substitute with
entry Entry to be modified

Definition at line 178 of file gdcmDocEntrySet.cxx.

References GDCM_NAME_SPACE::DataEntry::SetString().

00179 {
00180    if (entry)
00181    {
00182       entry->SetString(content);
00183       return true;
00184    }
00185    return false;
00186 }

bool GDCM_NAME_SPACE::DocEntrySet::SetEntryString std::string const &  content,
uint16_t  group,
uint16_t  elem
[inherited]
 

Accesses an existing DocEntry (i.e. a Dicom Element) through its (group, element) and modifies its content with the given value.

Parameters:
content new value (string) to substitute with
group group number of the Dicom Element to modify
elem element number of the Dicom Element to modify

Definition at line 136 of file gdcmDocEntrySet.cxx.

References gdcmWarningMacro, and GDCM_NAME_SPACE::DocEntrySet::GetDataEntry().

Referenced by GDCM_NAME_SPACE::File::AnonymizeFile(), GDCM_NAME_SPACE::DocEntrySet::InsertEntryString(), and GDCM_NAME_SPACE::FileHelper::SetEntryString().

00138 {
00139    DataEntry *entry = GetDataEntry(group, elem);
00140    if (!entry )
00141    {
00142       gdcmWarningMacro( "No corresponding DataEntry " << std::hex << group <<
00143                          "," << elem << " element (try promotion first).");
00144       return false;
00145    }
00146    return SetEntryString(content,entry);
00147 }

void GDCM_NAME_SPACE::Base::SetPrintLevel int  level  )  [inline, inherited]
 

Sets the print level for the Dicom Header Elements.

Note:
0 for Light Print; 1 for 'medium' Print, 2 for Heavy Print

Definition at line 47 of file gdcmBase.h.

Referenced by GDCM_NAME_SPACE::FileHelper::Print(), and GDCM_NAME_SPACE::DicomDir::Print().

00047 { PrintLevel = level; }

void GDCM_NAME_SPACE::SQItem::SetSQItemNumber int  itemNumber  )  [inline, inherited]
 

Sets the ordinal position of a given SQItem.

Definition at line 67 of file gdcmSQItem.h.

Referenced by GDCM_NAME_SPACE::SeqEntry::AddSQItem(), and GDCM_NAME_SPACE::DicomDir::NewMeta().

00067 { SQItemNumber = itemNumber; }

void GDCM_NAME_SPACE::RefCounter::Unregister  )  [inline, inherited]
 

Unregister the object.

Remarks:
It decrements the reference counting

Definition at line 50 of file gdcmRefCounter.h.

Referenced by GDCM_NAME_SPACE::Document::ReadNextDocEntry(), GDCM_NAME_SPACE::SQItem::RemoveEntry(), GDCM_NAME_SPACE::ElementSet::RemoveEntry(), and GDCM_NAME_SPACE::FileHelper::~FileHelper().

00051    {
00052 //std::cout <<"================Unreg " << typeid(*this).name() << std::endl;
00053       RefCount--;
00054       if(RefCount<=0)
00055         delete this;
00056    }

void GDCM_NAME_SPACE::SQItem::WriteContent std::ofstream *  fp,
FileType  filetype,
bool  insideMetaElements
[virtual, inherited]
 

write any type of entry to the entry set

Implements GDCM_NAME_SPACE::DocEntrySet.

Reimplemented in GDCM_NAME_SPACE::DicomDirMeta, GDCM_NAME_SPACE::DicomDirPatient, GDCM_NAME_SPACE::DicomDirSerie, and GDCM_NAME_SPACE::DicomDirStudy.

Definition at line 57 of file gdcmSQItem.cxx.

References GDCM_NAME_SPACE::binary_write().

Referenced by GDCM_NAME_SPACE::DicomDirStudy::WriteContent(), GDCM_NAME_SPACE::DicomDirSerie::WriteContent(), and GDCM_NAME_SPACE::DicomDirPatient::WriteContent().

00059 {
00060    int j;
00061    uint16_t item[4] = { 0xfffe, 0xe000, 0xffff, 0xffff };
00062    uint16_t itemt[4]= { 0xfffe, 0xe00d, 0x0000, 0x0000 };
00063 
00064     //we force the writting of an 'Item' Start Element
00065     // because we want to write the Item as a 'No Length' item
00066    for(j=0;j<4;++j)
00067    {
00068       binary_write( *fp, item[j]);  // fffe e000 ffff ffff 
00069    }
00070      
00071    for (ListDocEntry::iterator it = DocEntries.begin();  
00072                                it != DocEntries.end();
00073                              ++it)
00074    {   
00075       // we skip delimitors (start and end one) because 
00076       // we force them as 'no length'
00077       if ( (*it)->GetGroup() == 0xfffe )
00078       {
00079          continue;
00080       }
00081 
00082       // Fix in order to make some MR PHILIPS images e-film readable
00083       // see gdcmData/gdcm-MR-PHILIPS-16-Multi-Seq.dcm:
00084       // we just *always* ignore spurious fffe|0000 tag ! 
00085       if ( (*it)->GetGroup() == 0xfffe && (*it)->GetElement() == 0x0000 )
00086       {
00087           break; // FIXME : break or continue; ?!?  
00088                  // --> makes no difference since the only bugged file we have
00089                  // contains 'impossible tag' fffe|0000 in last position !                            
00090       }
00091       // false : we are not in MetaElements
00092       (*it)->WriteContent(fp, filetype, false);
00093    }
00094       
00095     //we force the writting of an 'Item Delimitation' item
00096     // because we wrote the Item as a 'no Length' item
00097    for(j=0;j<4;++j)
00098    {
00099       binary_write( *fp, itemt[j]);  // fffe e000 0000 0000
00100    } 
00101 }


Member Data Documentation

ListDocEntry GDCM_NAME_SPACE::SQItem::DocEntries [protected, inherited]
 

Chained list of Doc Entries.

Definition at line 83 of file gdcmSQItem.h.

Referenced by GDCM_NAME_SPACE::SQItem::AddEntry(), GDCM_NAME_SPACE::SQItem::ClearEntry(), GDCM_NAME_SPACE::SQItem::ComputeFullLength(), GDCM_NAME_SPACE::SQItem::Copy(), GDCM_NAME_SPACE::SQItem::GetDocEntry(), GDCM_NAME_SPACE::SQItem::GetFirstEntry(), GDCM_NAME_SPACE::SQItem::GetNextEntry(), GDCM_NAME_SPACE::DicomDirVisit::Print(), GDCM_NAME_SPACE::DicomDirPrivate::Print(), GDCM_NAME_SPACE::DicomDirMeta::Print(), GDCM_NAME_SPACE::DicomDirImage::Print(), GDCM_NAME_SPACE::SQItem::RemoveEntry(), and GDCM_NAME_SPACE::DicomDirMeta::WriteContent().

ListDocEntry::iterator GDCM_NAME_SPACE::SQItem::ItDocEntries [protected, inherited]
 

Iterator, used to visit the entries.

Definition at line 85 of file gdcmSQItem.h.

Referenced by GDCM_NAME_SPACE::SQItem::Copy(), GDCM_NAME_SPACE::SQItem::GetFirstEntry(), and GDCM_NAME_SPACE::SQItem::GetNextEntry().

DocEntry* GDCM_NAME_SPACE::DocEntrySet::PreviousDocEntry [protected, inherited]
 

To be able to backtrack (Private Sequence, Implicit VR related pb).

Definition at line 128 of file gdcmDocEntrySet.h.

Referenced by GDCM_NAME_SPACE::Document::Backtrack(), and GDCM_NAME_SPACE::DocEntrySet::DocEntrySet().

int GDCM_NAME_SPACE::Base::PrintLevel [protected, inherited]
 

Amount of printed details for each Dicom Entries : 0 : stands for the least detail level.

Definition at line 55 of file gdcmBase.h.

Referenced by GDCM_NAME_SPACE::SeqEntry::Print(), GDCM_NAME_SPACE::FileHelper::Print(), GDCM_NAME_SPACE::ElementSet::Print(), GDCM_NAME_SPACE::DocEntry::Print(), GDCM_NAME_SPACE::DictEntry::Print(), GDCM_NAME_SPACE::DicomDirStudy::Print(), GDCM_NAME_SPACE::DicomDirSerie::Print(), GDCM_NAME_SPACE::DicomDirPatient::Print(), GDCM_NAME_SPACE::DicomDirMeta::Print(), GDCM_NAME_SPACE::DicomDir::Print(), and GDCM_NAME_SPACE::DataEntry::Print().


The documentation for this class was generated from the following files:
Generated on Fri Aug 24 13:01:30 2007 for gdcm by  doxygen 1.4.6