]> Creatis software - gdcm.git/commitdiff
new Print method for gdcmHeaderEntry
authorjpr <jpr>
Fri, 16 Jan 2004 18:06:51 +0000 (18:06 +0000)
committerjpr <jpr>
Fri, 16 Jan 2004 18:06:51 +0000 (18:06 +0000)
src/gdcmHeader.h
src/gdcmHeader2.cxx
src/gdcmHeaderEntry.cxx
src/gdcmHeaderEntry.h

index ba4b347b36ad67a538328af95d557bccddabb9aa..a5828675c80594fe330ad5a8962eb4d17fe4d989 100644 (file)
@@ -136,7 +136,7 @@ public:
    /**
     * \ingroup gdcmHeader
     * \brief   Sets the print level for the Dicom Header 
-    * \note 0 for Light Print; 1 for 'heavy' Print
+    * \note 0 for Light Print; 1 for 'medium' Print, 2 for Heavy
     */
    void  SetPrintLevel(int level) { printLevel = level; };
    
@@ -174,7 +174,7 @@ public:
  
  
 // ================= Was in EntrySet =================
-   void Print(std::ostream &);
+   void Print(std::ostream & os = std::cout);
    void Add(gdcmHeaderEntry*);                         
    bool SetEntryByNumber(std::string content, guint16 group, guint16 element);
    bool SetEntryLengthByNumber(guint32 l, guint16 group, guint16 element);
index ded3d1be142556525e4d0848a8301e2b3247dd20..263e2608aada7d0a19c4d89676bc68d55c79a16b 100644 (file)
@@ -27,111 +27,19 @@ void gdcmHeader::Print(std::ostream & os) {
    TSKey v;
    std::string d2;
    gdcmTS * ts = gdcmGlobal::GetTS();
-   std::ostringstream s;
-/*
-// DO NOT remove this code right now.
-   
-   // Tag HT
-   s << "------------- using tagHT ---------------------" << std::endl; 
-   for (TagHeaderEntryHT::iterator tag = tagHT.begin();
-          tag != tagHT.end();
-          ++tag){
-      g = tag->second->GetGroup();
-      e = tag->second->GetElement();
-      v = tag->second->GetValue();
-      o = tag->second->GetOffset();
-      d2 = _CreateCleanString(v);  // replace non printable characters by '.'
-
-      s << tag->first << ": ";
-      s << " lgr : " <<tag->second->GetLength();
-      s << ",\t Offset : " << o;
-      s << " x(" << std::hex << o << std::dec << ") ";
-      s << "\t[" << tag->second->GetVR()    << "]";
-      s << "\t[" << tag->second->GetName()  << "]";       
-      s << "\t[" << d2 << "]";
-
-      // Display the UID value (instead of displaying the rough code)  
-      if (g == 0x0002) {  // Some more to be displayed ?
-         if ( (e == 0x0010) || (e == 0x0002) )            
-            s << "  ==>\t[" << ts->GetValue(v) << "]";   
-      } else {
-         if (g == 0x0008) {
-            if ( (e == 0x0016) || (e == 0x1150)  )        
-               s << "  ==>\t[" << ts->GetValue(v) << "]"; 
-         }
-      }              
-      s << std::endl;
-   }
-*/        
+   std::ostringstream s;   
           
-   // List element
    guint32 lgth;
    char greltag[10];  //group element tag
  
    s << "------------ using listEntries ----------------" << std::endl; 
 
-   char st[11];
+   char st[20];
    for (ListTag::iterator i = listEntries.begin();  
           i != listEntries.end();
           ++i){
-      g = (*i)->GetGroup();
-      e = (*i)->GetElement();
-      v = (*i)->GetValue();
-      o = (*i)->GetOffset();
-      sprintf(greltag,"%04x|%04x ",g,e);           
-      d2 = _CreateCleanString(v);  // replace non printable characters by '.'
-      s << greltag ;
-          
-      if (printLevel>=2) { 
-         s << "lg : ";
-         lgth = (*i)->GetReadLength();
-         if (lgth == 0xffffffff) {
-            sprintf(st,"x(%ff)");
-            s.setf(std::ios::left);
-            s << std::setw(10-strlen(st)) << " ";  
-            s << st << " ";
-            s.setf(std::ios::left);
-            s << std::setw(8) << "-1";      
-         } else {
-            sprintf(st,"x(%x)",lgth);
-            s.setf(std::ios::left);
-            s << std::setw(10-strlen(st)) << " ";  
-            s << st << " ";
-            s.setf(std::ios::left);
-            s << std::setw(8) << lgth; 
-         }
-         s << " Off.: ";
-         sprintf(st,"x(%x)",o); 
-         s << std::setw(10-strlen(st)) << " ";       
-         s << st << " ";
-         s << std::setw(8) << o; 
-      }
-      if (printLevel>=1) {      
-         s << "[" << (*i)->GetVR()  << "] ";
-         s.setf(std::ios::left);
-         s << std::setw(66-(*i)->GetName().length()) << " ";            
-      } 
-        
-      s << "[" << (*i)->GetName()<< "]";       
-      s << " [" << d2 << "]";
-       // Display the UID value (instead of displaying the rough code)  
-      if (g == 0x0002) {  // Any more to be displayed ?
-         if ( (e == 0x0010) || (e == 0x0002) )            
-            s << "  ==>\t[" << ts->GetValue(v) << "]";   
-      } else {
-         if (g == 0x0008) {
-            if ( (e == 0x0016) || (e == 0x1150)  )        
-               s << "  ==>\t[" << ts->GetValue(v) << "]"; 
-         }
-      } 
-      if (e == 0x0000) {        // elem 0x0000 --> group length 
-        if (v == "4294967295") // to avoid troubles in convertion 
-           sprintf (st," x(ffffffff)");
-        else   
-            sprintf(st," x(%08x)",atoi(v.c_str()));
-         s << st;
-      }                     
-      s << std::endl;
+       (*i)->SetPrintLevel(printLevel);
+       (*i)->Print(os);   
    } 
    os<<s.str();
 } 
index 4f53956d68a3a3bb9113d4e4121c47aca1a4da52..f2e78cb82f5763196731f62d5f659b3c5ded7779 100644 (file)
@@ -2,6 +2,16 @@
 //-----------------------------------------------------------------------------
 //
 #include "gdcmHeaderEntry.h"
+#include "gdcmTS.h"
+#include "gdcmUtil.h"
+
+#ifdef GDCM_NO_ANSI_STRING_STREAM
+#  include <strstream>
+#  define  ostringstream ostrstream
+# else
+#  include <sstream>
+#endif
+#include <iomanip> // for std::ios::left, ...
 
 //-----------------------------------------------------------------------------
 // Constructor / Destructor
@@ -18,6 +28,78 @@ gdcmHeaderEntry::gdcmHeaderEntry(gdcmDictEntry* in) {
 //-----------------------------------------------------------------------------
 // Print
 
+void gdcmHeaderEntry::Print(std::ostream & os) {
+   size_t o;
+   unsigned short int g, e;
+   char st[20];
+   TSKey v;
+   std::string d2;
+   gdcmTS * ts = gdcmGlobal::GetTS();
+   std::ostringstream s;
+   guint32 lgth;
+   char greltag[10];  //group element tag
+      
+      g = GetGroup();
+      e = GetElement();
+      v = GetValue();
+      o = GetOffset();
+      sprintf(greltag,"%04x|%04x ",g,e);           
+      d2 = _CreateCleanString(v);  // replace non printable characters by '.'
+      s << greltag ;
+          
+      if (printLevel>=2) { 
+         s << "lg : ";
+         lgth = GetReadLength();
+         if (lgth == 0xffffffff) {
+            sprintf(st,"x(%ff)");
+            s.setf(std::ios::left);
+            s << std::setw(10-strlen(st)) << " ";  
+            s << st << " ";
+            s.setf(std::ios::left);
+            s << std::setw(8) << "-1";      
+         } else {
+            sprintf(st,"x(%x)",lgth);
+            s.setf(std::ios::left);
+            s << std::setw(10-strlen(st)) << " ";  
+            s << st << " ";
+            s.setf(std::ios::left);
+            s << std::setw(8) << lgth; 
+         }
+         s << " Off.: ";
+         sprintf(st,"x(%x)",o); 
+         s << std::setw(10-strlen(st)) << " ";       
+         s << st << " ";
+         s << std::setw(8) << o; 
+      }
+      if (printLevel>=1) {      
+         s << "[" << GetVR()  << "] ";
+         s.setf(std::ios::left);
+         s << std::setw(66-GetName().length()) << " ";          
+      } 
+        
+      s << "[" << GetName()<< "]";       
+      s << " [" << d2 << "]";
+       // Display the UID value (instead of displaying the rough code)  
+      if (g == 0x0002) {  // Any more to be displayed ?
+         if ( (e == 0x0010) || (e == 0x0002) )            
+            s << "  ==>\t[" << ts->GetValue(v) << "]";   
+      } else {
+         if (g == 0x0008) {
+            if ( (e == 0x0016) || (e == 0x1150)  )        
+               s << "  ==>\t[" << ts->GetValue(v) << "]"; 
+         }
+      } 
+      if (e == 0x0000) {        // elem 0x0000 --> group length 
+        if (v == "4294967295") // to avoid troubles in convertion 
+           sprintf (st," x(ffffffff)");
+        else   
+            sprintf(st," x(%08x)",atoi(v.c_str()));
+         s << st;
+      }                     
+      s << std::endl;
+      os << s.str();
+}
+
 //-----------------------------------------------------------------------------
 // Public
 
index 1c8520aecc211afafa6676045cc7df55d7312fe0..be3f4f85f2a3fad79310d52020aa8d65cd3c5c13 100644 (file)
@@ -37,6 +37,14 @@ public:
    inline void         SetValue(std::string val) { value = val;      };
    inline void         SetVoidArea(void * area)  { voidArea = area;  };
    
+   void                Print (std::ostream & os = std::cout); 
+   /**
+    * \ingroup gdcmHeaderEntry
+    * \brief   Sets the print level for the Dicom Header Elements
+    * \note 0 for Light Print; 1 for 'medium' Print, 2 for Heavy
+    */
+   void  SetPrintLevel(int level) { printLevel = level; };
+   
    /**
     * \ingroup gdcmHeaderEntry
     * \brief   Sets the offset of the Dicom Element
@@ -118,6 +126,7 @@ private:
    void *voidArea;  // unsecure memory area to hold 'non string' values 
                      // (ie : Lookup Tables, overlays)
    size_t Offset;    // Offset from the begining of file for direct user access
+   int printLevel;
 };
 
 //-----------------------------------------------------------------------------