#include "gdcmParser.h"
//-----------------------------------------------------------------------------
-/*
- * \defgroup 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
*/
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
+ // Standard values and informations contained in the header
virtual bool IsReadable(void);
bool IsJPEGBaseLineProcess1TransferSyntax(void);
bool IsJPEGExtendedProcess2_4TransferSyntax(void);
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);
// 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)); }
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:
- int write(std::ostream&);
- int anonymize(std::ostream&); // FIXME : anonymize should be a friend ?
+ //CLEANME int write(std::ostream&);
+ //CLEANME int anonymize(std::ostream&);//FIXME: anonymize should be a friend
bool anonymizeHeader(void);
private: