GDCM  2.2.0
gdcmPrinter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: GDCM (Grassroots DICOM). A DICOM library
4 
5  Copyright (c) 2006-2011 Mathieu Malaterre
6  All rights reserved.
7  See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
8 
9  This software is distributed WITHOUT ANY WARRANTY; without even
10  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11  PURPOSE. See the above copyright notice for more information.
12 
13 =========================================================================*/
14 #ifndef GDCMPRINTER_H
15 #define GDCMPRINTER_H
16 
17 // TODO Class to implement printing
18 // Since DICOM does printing ?
19 // Also I would like to encapsulate the IsCharacterPrintable thing
20 // (to avoid printing \0 and other weird characters)
21 // \todo I still need to implement skiping of group (shadow)
22 // need to implement longer field to read
23 
24 /*
25  * Output:
26  * For ASCII:
27  * Typically will look like:
28  * [ORIGINAL\PRIMARY\OTHER]
29  * If a non printable character is found: RED and INVERSE is used:
30  * [ .]
31  *
32  * when the VR is not found (file or dict), we check if we can print the output:
33  * on success ASCII mode is used, on failure the output is printed a series of bytes
34  *
35  * Special case when the data element is empty:
36  * INVERSE << (no value)
37  *
38  * retired public element are printed in red and underline
39  * unknown private element are printed in RED followed by 'UNKNOWN'
40  *
41  * Correct VR is printed in green just after the found VR
42  *
43  * length of data element is printed in bytes, followed by the VM, a green VM is appended
44  * if this is not compatible
45  */
46 #include "gdcmFile.h"
47 #include "gdcmDataElement.h"
48 
49 namespace gdcm
50 {
51 
52 class DataSet;
53 class DictEntry;
54 class Dicts;
58 // It's a sink there is no output
60 {
61 public:
62  Printer();
63  ~Printer();
64 
66  void SetFile(File const &f) { F = &f; }
67 
69  void SetColor(bool c);
70 
71  typedef enum {
72  VERBOSE_STYLE = 0, // GDCM Legacy VERBOSE one
74  // Ok I am missing voc here ...better naming would be nice
75  XML // sure why not
76  } PrintStyles;
77 
79  void SetStyle(PrintStyles ps) {
80  PrintStyle = ps;
81  }
84  return PrintStyle;
85  }
86 
88  void Print(std::ostream& os);
89 
91  void PrintDataSet(const DataSet &ds, std::ostream& os, const std::string &s = "");
92 
93 protected:
94  VR PrintDataElement(std::ostringstream & os, const Dicts &dicts, const DataSet & ds, const DataElement &de, std::ostream &out, std::string const & indent );
95 void PrintSQ(const SequenceOfItems *sqi, std::ostream & os, std::string const & indent);
96 
98  const File *F;
100 };
101 
102 } // end namespace gdcm
103 
104 #endif //GDCMPRINTER_H

Generated on Wed Jun 13 2012 20:40:37 for GDCM by doxygen 1.8.1
SourceForge.net Logo