]> Creatis software - gdcm.git/blobdiff - src/gdcmHeader.h
Add a new test: ShowDicom, for now this is just the c++ version of
[gdcm.git] / src / gdcmHeader.h
index f4580fdc641ad9d8beeab8dea50efadb2105e019..3d8564140d646e4667f2b6484dabee3427d903b1 100644 (file)
@@ -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
  */
 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