GDCM 2.2.1

- Main Page
- Related Pages
- Namespaces
- Classes
- Files
- Examples

- File List
- File Members

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
59 class GDCM_EXPORT Printer
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
73 CONDENSED_STYLE, //
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 }
83 PrintStyles GetPrintStyle() const {
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
97 PrintStyles PrintStyle;
98 const File *F;
99 VL MaxPrintLength;
100 };
101
102 } // end namespace gdcm
103
104 #endif //GDCMPRINTER_H