X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=src%2FgdcmDictEntry.h;h=cd329bd1d969134b2b829e7eda7891c50c309dda;hb=9b3db5f141ec2b11eadefaa2ea2a3a20058b37f9;hp=fc3817a61eb617dc30fd7f690b5bdbeecdb03d84;hpb=10aa56aa534bae643e3833474a49309330235196;p=gdcm.git diff --git a/src/gdcmDictEntry.h b/src/gdcmDictEntry.h index fc3817a6..cd329bd1 100644 --- a/src/gdcmDictEntry.h +++ b/src/gdcmDictEntry.h @@ -1,26 +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: - // FIXME : were are the group and element used except from building up + // 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. - guint16 group; // e.g. 0x0010 - guint16 element; // e.g. 0x0103 - std::string vr; // Value Representation i.e. some clue about the nature - // of the data represented e.g. "FD" short for - // "Floating Point Double" + // + // --> 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 ! - std::string fourth; // Fourth field containing some semantics. - //(Group Name abbr.) - std::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 { @@ -34,31 +132,7 @@ private: // DcmDictRangeRestriction groupRestriction; // DcmDictRangeRestriction elementRestriction; // }; -public: - gdcmDictEntry(guint16 group, - guint16 element, - std::string vr = "Unknown", - std::string fourth = "Unknown", - std::string name = "Unknown"); - - // fabrique une 'clé' par concaténation du numGroupe et du numElement - - // Pourquoi fait-elle partie de DictEntry? - // elle pourrait etre utilisée egalement ailleurs, hors tout Dictionnaire - - // Pourquoi 'static'? - - static TagKey TranslateToKey(guint16 group, guint16 element); - - guint16 GetGroup(void) {return group; }; - guint16 GetElement(void){return element;}; - std::string GetVR(void) {return vr; }; - void SetVR(std::string); - void SetKey(std::string k){ key = k; }; - bool IsVrUnknown(void); - std::string GetFourth(void) {return fourth;}; - std::string GetName(void) {return name; }; - std::string GetKey(void) {return key; }; }; +//----------------------------------------------------------------------------- #endif