GDCM 3.0.24
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 skipping 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
49namespace gdcm
50{
51
52class DataSet;
53class DictEntry;
54class Dicts;
58// It's a sink there is no output
60{
61public:
63 ~Printer() = default;
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, //
76 CXX
77 } PrintStyles;
78
81 PrintStyle = ps;
82 }
85 return PrintStyle;
86 }
87
89 void Print(std::ostream& os);
90
92 void PrintDataSet(const DataSet &ds, std::ostream& os, const std::string &s = "");
93
94protected:
95 VR PrintDataElement(std::ostringstream & os, const Dicts &dicts, const DataSet & ds, const DataElement &de, std::ostream &out, std::string const & indent );
96void PrintSQ(const SequenceOfItems *sqi, std::ostream & os, std::string const & indent);
97
99 const File *F;
101};
102
103} // end namespace gdcm
104
105#endif //GDCMPRINTER_H
Class to represent a Data Element either Implicit or Explicit.
Definition gdcmDataElement.h:59
Class to represent a Data Set (which contains Data Elements)
Definition gdcmDataSet.h:56
Class to manipulate the sum of knowledge (all the dict user load)
Definition gdcmDicts.h:29
a DICOM File
Definition gdcmFile.h:34
Printer class.
Definition gdcmPrinter.h:60
void SetStyle(PrintStyles ps)
Set PrintStyle value.
Definition gdcmPrinter.h:80
const File * F
Definition gdcmPrinter.h:99
PrintStyles
Definition gdcmPrinter.h:71
@ CONDENSED_STYLE
Definition gdcmPrinter.h:73
@ XML
Definition gdcmPrinter.h:75
VL MaxPrintLength
Definition gdcmPrinter.h:100
void Print(std::ostream &os)
Print.
void SetFile(File const &f)
Set file.
Definition gdcmPrinter.h:66
VR PrintDataElement(std::ostringstream &os, const Dicts &dicts, const DataSet &ds, const DataElement &de, std::ostream &out, std::string const &indent)
void PrintSQ(const SequenceOfItems *sqi, std::ostream &os, std::string const &indent)
~Printer()=default
PrintStyles GetPrintStyle() const
Get PrintStyle value.
Definition gdcmPrinter.h:84
void SetColor(bool c)
Set color mode or not.
PrintStyles PrintStyle
Definition gdcmPrinter.h:98
void PrintDataSet(const DataSet &ds, std::ostream &os, const std::string &s="")
Print an individual dataset.
Class to represent a Sequence Of Items.
Definition gdcmSequenceOfItems.h:40
Value Length.
Definition gdcmVL.h:30
VR class.
Definition gdcmVR.h:55
#define GDCM_EXPORT
Definition gdcmWin32.h:34
Definition gdcmASN1.h:21