X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDictEntry.h;h=24720c9369e9151fe7a1334cd27c837bd2f51c3e;hb=224876ca6cbe71952f2a1d66d9853eca7745d3a0;hp=2be34877348a41cc5102059deda8185d8573c4e0;hpb=9aa702d6397e3e490263a0791dd6c8ed2f3d1e83;p=gdcm.git diff --git a/src/gdcmDictEntry.h b/src/gdcmDictEntry.h index 2be34877..24720c93 100644 --- a/src/gdcmDictEntry.h +++ b/src/gdcmDictEntry.h @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDictEntry.h,v $ Language: C++ - Date: $Date: 2005/10/19 13:17:04 $ - Version: $Revision: 1.38 $ + Date: $Date: 2007/09/17 12:16:02 $ + Version: $Revision: 1.47 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -16,14 +16,18 @@ =========================================================================*/ -#ifndef GDCMDICTENTRY_H -#define GDCMDICTENTRY_H +#ifndef _GDCMDICTENTRY_H_ +#define _GDCMDICTENTRY_H_ -#include "gdcmDicomEntry.h" +#include "gdcmRefCounter.h" +#include "gdcmTagKey.h" +#include "gdcmVRKey.h" -namespace gdcm +namespace GDCM_NAME_SPACE { //----------------------------------------------------------------------------- +class VRKey; +class TagKey; /** * \brief * the DictEntry in an element contained by the Dict. @@ -32,14 +36,15 @@ namespace gdcm * i.e. the Group number * the Element number * - the VR (Value Representation) - * - the VM (Value Multplicity) + * - the VM (Value Multiplicity) * - the corresponding name in english */ -class GDCM_EXPORT DictEntry : public DicomEntry +class GDCM_EXPORT DictEntry : public RefCounter { + gdcmTypeMacro(DictEntry); + public: - DictEntry(uint16_t group, - uint16_t elem, + static DictEntry *New(uint16_t group, uint16_t elem, VRKey const &vr = GDCM_VRUNKNOWN, TagName const &vm = GDCM_UNKNOWN, TagName const &name = GDCM_UNKNOWN); @@ -47,13 +52,35 @@ public: // Print void Print(std::ostream &os = std::cout, std::string const &indent = ""); -// Content of DictEntry - virtual void SetVR(VRKey const &vr); - virtual void SetVM(TagName const &vm); + /// \brief Returns the Dicom Group Number + /// @return the Dicom Group Number + const uint16_t &GetGroup() const { return Tag[0]; } + + /// \brief Returns the Dicom Element Number + /// @return the Dicom Element Number + const uint16_t &GetElement() const { return Tag[1]; } + + /// \brief Set the Dicom Value Representation + /// \param vr the Dicom Value Representation + virtual void SetVR(VRKey const &vr) { VR = vr; } + /// \brief Returns the Dicom Value Representation + /// @return the Dicom Value Representation + const VRKey &GetVR() const { return VR; } + /// \brief tells if the V(alue) R(epresentation) is known (?!) + /// @return + bool IsVRUnknown() const { return VR == GDCM_VRUNKNOWN; } + + const TagKey &GetKey() const { return Tag; } + +// Key creation + static TagKey TranslateToKey(uint16_t group, uint16_t elem); + /// \brief returns the VM field of the current DictEntry /// @return The 'Value Multiplicity' field const TagName &GetVM() const { return VM; } - + /// \brief Set the VM field of the current DictEntry + /// \param vm the'Value Multiplicity' + virtual void SetVM(TagName const &vm) { VM = vm; } /// \brief tells if the V(alue) M(ultiplicity) is known (?!) /// @return bool IsVMUnknown() const { return VM == GDCM_UNKNOWN; } @@ -62,12 +89,29 @@ public: /// e.g. "Patient Name" for Dicom Tag (0x0010, 0x0010) /// @return the Dicom Name const TagName &GetName() const { return Name; } - + +protected: + DictEntry(uint16_t group, uint16_t elem, + VRKey const &vr = GDCM_VRUNKNOWN, + TagName const &vm = GDCM_UNKNOWN, + TagName const &name = GDCM_UNKNOWN); + + ~DictEntry(); + private: - /// \brief Value Multiplicity (e.g. "1", "1-n", "6") + /// Dicom TagKey. Contains Dicom Group number and Dicom Element number + TagKey Tag; + + /// \brief Value Representation i.e. some clue about the nature + /// of the data represented e.g. + /// - "FD" short for "Floating Point Double"(see VR) + /// - "PN" short for "Person Name" + VRKey VR; + + /// \brief Value Multiplicity (e.g. "1", "1-n", "2-n", "6") TagName VM; - /// e.g. "Patient's Name" + /// \brief English name of the entry (e.g. "Patient's Name") TagName Name; }; } // end namespace gdcm