]> 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 e8f6146cacba655eb001560fe3db4995eb5aca13..3d8564140d646e4667f2b6484dabee3427d903b1 100644 (file)
  */
 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, 
@@ -79,19 +98,17 @@ public:
    // TODO Swig int SetShaDict(std::string filename);
    // TODO Swig int SetPubDict(std::string filename);
    
-// System access
-   /**
-    * \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;}
    
-   /// Accessor to \ref gdcmParser::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)); }
       
@@ -107,13 +124,15 @@ 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)
@@ -124,6 +143,12 @@ public:
 
    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