X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmHeader.h;h=3d8564140d646e4667f2b6484dabee3427d903b1;hb=279aed8cb3483318205a8b652e05457a7fc94dec;hp=f4580fdc641ad9d8beeab8dea50efadb2105e019;hpb=5311d94213fb3d388924e1d5b8a9e11d1d40fcb3;p=gdcm.git diff --git a/src/gdcmHeader.h b/src/gdcmHeader.h index f4580fdc..3d856414 100644 --- a/src/gdcmHeader.h +++ b/src/gdcmHeader.h @@ -8,7 +8,6 @@ //----------------------------------------------------------------------------- /** - * \ingroup gdcmHeader * \brief * The purpose of an instance of gdcmHeader is to act as a container of * all the DICOM elements and their corresponding values (and @@ -29,13 +28,32 @@ */ class GDCM_EXPORT gdcmHeader : public gdcmParser { +protected: + /// In some cases (e.g. for some ACR-NEMA images) the Header Entry Element + /// Number of the 'Pixel Element' is *not* found at 0x0010. In order to + /// make things easier the parser shall store the proper value in + /// NumPixel to provide a unique access facility. See also the constructor + /// \ref gdcmHeader::gdcmHeader + guint16 NumPixel; + /// In some cases (e.g. for some ACR-NEMA images) the header entry for + /// the group of pixels is *not* found at 0x7fe0. In order to + /// make things easier the parser shall store the proper value in + /// GrPixel to provide a unique access facility. See also the constructor + /// \ref gdcmHeader::gdcmHeader + guint16 GrPixel; + /// Some DICOM files may contain several images (e.g. a icon, followd by + /// the image itself. Hence the tag (GrPixel,NumPixel) might appear + /// several times. countGrPixel is the number of occurences of the + /// tag of pixels (i.e. (GrPixel,NumPixel)) contained in the header. + /// TODO : will be dealt with SQ tree-like stucture + int countGrPixel; public: gdcmHeader(bool exception_on_error = false); gdcmHeader(const char *filename, bool exception_on_error = false, bool enable_sequences = false, - bool skip_shadow = false); - + bool skip_shadow = false); + virtual ~gdcmHeader(); // Standard values and informations contained in the header @@ -50,7 +68,7 @@ public: bool IsDicomV3(void); // Some heuristic based accessors, end user intended - // (to be move to gdcmHeaderHelper?) + // (to be moved to gdcmHeaderHelper?) int GetXSize(void); int GetYSize(void); int GetZSize(void); @@ -80,24 +98,17 @@ public: // TODO Swig int SetShaDict(std::string filename); // TODO Swig int SetPubDict(std::string filename); -// System access -/** - * \ingroup gdcmHeader - * \brief the Header Entry Group Number of the 'Pixel Group' - * is not allways 0x7fe0 - * @return GrPixel - */ + /// Accessor to \ref gdcmHeader::GrPixel guint16 GetGrPixel(void) {return GrPixel;} -/** - * \ingroup gdcmHeader - * \brief the Header Entry Element Number of the 'Pixel Element' - * is not allways 0x0010 - * @return NumPixel - */ - guint16 GetNumPixel(void) {return NumPixel;} + + /// Accessor to \ref gdcmHeader::NumPixel + guint16 GetNumPixel(void) {return NumPixel;} // Entry +// These functions are necessary for Python because +// there are protected in the parent class + inline virtual std::string GetEntryByNumber (guint16 group, guint16 element) { return(gdcmParser::GetEntryByNumber(group,element)); } @@ -113,23 +124,31 @@ public: inline virtual std::string GetEntryVRByName (std::string tagName) { return(gdcmParser::GetEntryVRByName(tagName)); } - inline virtual bool SetEntryByNumber(std::string content,guint16 group, guint16 element) + inline virtual bool SetEntryByNumber(std::string content, + guint16 group, guint16 element) { return(gdcmParser::SetEntryByNumber(content,group,element)); } inline virtual bool SetEntryByName(std::string content,std::string tagName) { return(gdcmParser::SetEntryByName(content,tagName)); } - inline virtual bool SetEntryLengthByNumber(guint32 l,guint16 group, guint16 element) + inline virtual bool SetEntryLengthByNumber(guint32 l, + guint16 group, guint16 element) { return(gdcmParser::SetEntryLengthByNumber(l,group,element)); } inline virtual void UpdateShaEntries(void) { gdcmParser::UpdateShaEntries(); } -// Read (used in gdcmFile) + /// Read (used in gdcmFile) void SetImageDataSize(size_t ExpectedSize); bool operator<(gdcmHeader &header); + bool WriteEntry(gdcmHeaderEntry *tag,FILE *_fp,FileType type); + + + virtual void PrintEntryNoSQ (std::ostream &os = std::cout); + virtual void PrintEntryNiceSQ(std::ostream &os = std::cout); + protected: //CLEANME int write(std::ostream&); //CLEANME int anonymize(std::ostream&);//FIXME: anonymize should be a friend