GDCM 3.2.1

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
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() = 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
73 CONDENSED_STYLE, //
74 // Ok I am missing voc here ...better naming would be nice
75 XML, //
76 CXX
77 } PrintStyles;
78
80 void SetStyle(PrintStyles ps) {
81 PrintStyle = ps;
82 }
83
84 PrintStyles GetPrintStyle() const {
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
94 protected:
95 VR PrintDataElement(std::ostringstream & os, const Dicts &dicts, const DataSet & ds, const DataElement &de, std::ostream &out, std::string const & indent );
96 void PrintSQ(const SequenceOfItems *sqi, std::ostream & os, std::string const & indent);
97
98 PrintStyles PrintStyle;
99 const File *F;
100 VL MaxPrintLength;
101};
102
103} // end namespace gdcm
104
105#endif //GDCMPRINTER_H
gdcm::DataElement
Class to represent a Data Element either Implicit or Explicit.
Definition gdcmDataElement.h:59
gdcm::DataSet
Class to represent a Data Set (which contains Data Elements)
Definition gdcmDataSet.h:56
gdcm::DictEntry
Class to represent an Entry in the Dict.
Definition gdcmDictEntry.h:37
gdcm::Dicts
Class to manipulate the sum of knowledge (all the dict user load)
Definition gdcmDicts.h:29
gdcm::File
a DICOM File
Definition gdcmFile.h:34
gdcm::Printer::SetStyle
void SetStyle(PrintStyles ps)
Set PrintStyle value.
Definition gdcmPrinter.h:80
gdcm::Printer::F
const File * F
Definition gdcmPrinter.h:99
gdcm::Printer::PrintStyles
PrintStyles
Definition gdcmPrinter.h:71
gdcm::Printer::CONDENSED_STYLE
@ CONDENSED_STYLE
Definition gdcmPrinter.h:73
gdcm::Printer::VERBOSE_STYLE
@ VERBOSE_STYLE
Definition gdcmPrinter.h:72
gdcm::Printer::XML
@ XML
Definition gdcmPrinter.h:75
gdcm::Printer::CXX
@ CXX
Definition gdcmPrinter.h:76
gdcm::Printer::MaxPrintLength
VL MaxPrintLength
Definition gdcmPrinter.h:100
gdcm::Printer::Print
void Print(std::ostream &os)
Print.
gdcm::Printer::SetFile
void SetFile(File const &f)
Set file.
Definition gdcmPrinter.h:66
gdcm::Printer::PrintDataElement
VR PrintDataElement(std::ostringstream &os, const Dicts &dicts, const DataSet &ds, const DataElement &de, std::ostream &out, std::string const &indent)
gdcm::Printer::PrintSQ
void PrintSQ(const SequenceOfItems *sqi, std::ostream &os, std::string const &indent)
gdcm::Printer::~Printer
~Printer()=default
gdcm::Printer::GetPrintStyle
PrintStyles GetPrintStyle() const
Get PrintStyle value.
Definition gdcmPrinter.h:84
gdcm::Printer::SetColor
void SetColor(bool c)
Set color mode or not.
gdcm::Printer::PrintStyle
PrintStyles PrintStyle
Definition gdcmPrinter.h:98
gdcm::Printer::Printer
Printer()
gdcm::Printer::PrintDataSet
void PrintDataSet(const DataSet &ds, std::ostream &os, const std::string &s="")
Print an individual dataset.
gdcm::SequenceOfItems
Class to represent a Sequence Of Items.
Definition gdcmSequenceOfItems.h:40
gdcm::VL
Value Length.
Definition gdcmVL.h:30
gdcm::VR
VR class.
Definition gdcmVR.h:55
gdcmDataElement.h
gdcmFile.h
GDCM_EXPORT
#define GDCM_EXPORT
Definition gdcmWin32.h:34
gdcm
Definition gdcmASN1.h:21