]> Creatis software - gdcm.git/blob - src/gdcmDicomEntry.h
d74dca86cc1925d733f6de829445d1d9c3bcd8c3
[gdcm.git] / src / gdcmDicomEntry.h
1 /*=========================================================================
2                                                                                 
3   Program:   gdcm
4   Module:    $RCSfile: gdcmDicomEntry.h,v $
5   Language:  C++
6   Date:      $Date: 2005/10/19 13:17:05 $
7   Version:   $Revision: 1.1 $
8                                                                                 
9   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10   l'Image). All rights reserved. See Doc/License.txt or
11   http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
12                                                                                 
13      This software is distributed WITHOUT ANY WARRANTY; without even
14      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15      PURPOSE.  See the above copyright notices for more information.
16                                                                                 
17 =========================================================================*/
18
19 #ifndef GDCMDICOMENTRY_H
20 #define GDCMDICOMENTRY_H
21
22 #include "gdcmCommon.h"
23 #include "gdcmBase.h"
24 #include "gdcmVRKey.h"
25 #include "gdcmTagKey.h"
26
27 namespace gdcm 
28 {
29 //-----------------------------------------------------------------------------
30 /**
31  * \brief
32  * the DicomEntry in an element contained by the Dict.
33  * It contains :
34  *  - the key referenced by the DICOM norm or the constructor (for private keys)
35  *    i.e. the Group number
36  *         the Element number
37  *  - the VR (Value Representation)
38  *  - the VM (Value Multplicity)
39  *  - the corresponding name in english
40  */
41 class GDCM_EXPORT DicomEntry : public Base
42 {
43 public:
44    DicomEntry(const uint16_t &group,const uint16_t &elt,
45               const VRKey &vr = GDCM_VRUNKNOWN);
46    ~DicomEntry();
47
48 // Print
49    void Print(std::ostream &os = std::cout, std::string const &indent = "");
50
51    /// \brief  Returns the Dicom Group Number
52    /// @return the Dicom Group Number
53    const uint16_t &GetGroup() const { return Tag[0]; }
54
55    /// \brief  Returns the Dicom Element Number
56    /// @return the Dicom Element Number
57    const uint16_t &GetElement() const { return Tag[1]; }
58
59    /// \brief  Set the Dicom Value Representation 
60    /// \param vr the Dicom Value Representation
61    virtual void SetVR(VRKey const &vr) { VR = vr; }
62    /// \brief  Returns the Dicom Value Representation 
63    /// @return the Dicom Value Representation
64    const VRKey &GetVR() const { return VR; }
65    /// \brief tells if the V(alue) R(epresentation) is known (?!)
66    /// @return 
67    bool IsVRUnknown() const { return VR == GDCM_VRUNKNOWN; }
68
69    const TagKey &GetKey() const { return Tag; }
70
71 // Key creation
72    static TagKey TranslateToKey(uint16_t group, uint16_t elem);
73
74 private:
75    /// Dicom \ref TagKey. Contains DicomGroup number and DicomElement number
76    TagKey Tag;
77
78    /// \brief Value Representation i.e. some clue about the nature
79    ///        of the data represented e.g. 
80    ///        "FD" short for "Floating Point Double"(see \ref VR)
81    ///        "PN" short for "Person Name"       
82    VRKey VR;
83 };
84 } // end namespace gdcm
85 //-----------------------------------------------------------------------------
86 #endif