X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDictEntry.h;h=cd329bd1d969134b2b829e7eda7891c50c309dda;hb=9b3db5f141ec2b11eadefaa2ea2a3a20058b37f9;hp=ecbc0290a47a555fca5af5a7714edf8047c9c2e7;hpb=565a47ec4e037897aaf770aeccc5d67d7ad7b478;p=gdcm.git diff --git a/src/gdcmDictEntry.h b/src/gdcmDictEntry.h index ecbc0290..cd329bd1 100644 --- a/src/gdcmDictEntry.h +++ b/src/gdcmDictEntry.h @@ -1,22 +1,124 @@ // gdcmDictEntry.h - +//----------------------------------------------------------------------------- #ifndef GDCMDICTENTRY_H #define GDCMDICTENTRY_H #include "gdcmCommon.h" -class GDCM_EXPORT gdcmDictEntry { +//----------------------------------------------------------------------------- +/* + * \defgroup gdcmDictEntry + * \brief + * the gdcmDictEntry in an element contained by the gdcmDict. + * It contains : + * - the key referenced by the DICOM norm or the constructor (for private keys) + * - the corresponding name in english (it's equivalent to a label) + * - the owner group + * - etc. + */ +class GDCM_EXPORT gdcmDictEntry +{ +public: + gdcmDictEntry(guint16 group, + guint16 element, + std::string vr = "Unknown", + std::string fourth = "Unknown", + std::string name = "Unknown"); + + static TagKey TranslateToKey(guint16 group, guint16 element); + + void SetVR(std::string); + + /** + * \ingroup gdcmDictEntry + * \brief tells if the V(alue) R(epresentation) is known (?!) + * + * @return + */ + inline bool IsVRUnknown() {return vr == "??"; } + + /** + * \ingroup gdcmDictEntry + * \brief returns the Dicom Group Number of the current gdcmDictEntry + * return the Dicom Group Number + */ + inline guint16 GetGroup(void) { return group; } + + /** + * \ingroup gdcmDictEntry + * \brief returns the Dicom Element Number of the current gdcmDictEntry + * return the Dicom Element Number + */ + inline guint16 GetElement(void) { return element; } + + /** + * \ingroup gdcmDictEntry + * \brief returns the Dicom Value Representation of the current gdcmDictEntry + * return the Dicom Value Representation + */ + inline std::string GetVR(void) { return vr; } + + /** + * \ingroup gdcmDictEntry + * \brief sets the key of the current gdcmDictEntry + * @param k New key to be set. + */ + inline void SetKey(std::string k) { key = k; } + + /** + * \ingroup gdcmDictEntry + * \brief returns the Fourth field of the current gdcmDictEntry + * \warning NOT part of the Dicom Standard + * \ May be REMOVED an any time + * \ NEVER use it + * return the Fourth field + */ + inline std::string GetFourth(void) { return fourth; } + + /** + * \ingroup gdcmDictEntry + * \brief returns the Dicom Name of the current gdcmDictEntry + * \ e.g. "Patient Name" for Dicom Tag (0x0010, 0x0010) + * return the Dicom Name + */ + inline std::string GetName(void) { return name; } + + /** + * \ingroup gdcmDictEntry + * \brief Gets the key of the current gdcmDictEntry + * @return the key . + */ + inline std::string GetKey(void) { return key; } + private: - guint16 group; // e.g. 0x0010 - guint16 element; // e.g. 0x0103 - string vr; // Value Representation i.e. some clue about the nature - // of the data represented e.g. "FD" short for - // "Floating Point Double" + // FIXME : where are the group and element used except from building up + // a TagKey. If the answer is nowhere then there is no need + // to store the group and element independently. + // + // --> EVERYWHERE ! The alternate question would be : + // What's TagKey used for ? + + /// DicomGroup number + guint16 group; // e.g. 0x0010 + /// DicomElement number + guint16 element; // e.g. 0x0103 + /// Value Representation i.e. some clue about the nature + /// of the data represented e.g. "FD" short for + /// "Floating Point Double" + std::string vr; + // CLEANME: find the official dicom name for this field ! - string fourth; // Fourth field containing some semantics. - string name; // e.g. "Patient_Name" - TagKey key; // Redundant with (group, element) but we add it - // on efficiency purposes. + + ///Fourth field containing some semantics. + ///(Group Name abbr.) + /// DON'T USER ANY LONGER ! + std::string fourth; + /// e.g. "Patient_Name" + std::string name; + /// Redundant with (group, element) but we add it + /// on efficiency purposes. + TagKey key; + // DCMTK has many fields for handling a DictEntry (see below). What are the // relevant ones for gdcmlib ? // struct DBI_SimpleEntry { @@ -30,24 +132,7 @@ private: // DcmDictRangeRestriction groupRestriction; // DcmDictRangeRestriction elementRestriction; // }; -public: - gdcmDictEntry(guint16 group, - guint16 element, - string vr = "Unknown", - string fourth = "Unknown", - string name = "Unknown"); - // fabrique une 'clé' par concaténation du numGroupe et du numElement - static TagKey TranslateToKey(guint16 group, guint16 element); - - guint16 GetGroup(void) { return group; }; - guint16 GetElement(void){return element;}; - string GetVR(void) {return vr; }; - void SetVR(string); - void SetKey(string k){ key = k; } - bool IsVrUnknown(void); - string GetFourth(void) {return fourth;}; - string GetName(void) {return name; }; - string GetKey(void) {return key; }; }; +//----------------------------------------------------------------------------- #endif