MeVisLab Toolbox Reference
DCMTree_Lib.h
Go to the documentation of this file.
1/*************************************************************************************
2**
3** Copyright 2007, MeVis Medical Solutions AG
4**
5** The user may use this file in accordance with the license agreement provided with
6** the Software or, alternatively, in accordance with the terms contained in a
7** written agreement between the user and MeVis Medical Solutions AG.
8**
9** For further information use the contact form at https://www.mevislab.de/contact
10**
11**************************************************************************************/
12
13#ifndef DCM_TREE_LIB_H
14#define DCM_TREE_LIB_H
15
16#ifdef _MSC_VER
17 // Disable some boost and system header warnings.
18 // 4242: conversion from "a" to "b", possible loss of data
19 // 4265: 'boost::exception_detail::error_info_container' : class has virtual functions, but destructor is not virtual
20 // 4350: behaviour change
21 // 4365: signed/unsigned mismatch
22 // 4512: assignment operator could not be generate
23 // 4548: expression before comma has no effect; expected expression with side-effect
24 // 4619: #pragma warning : there is no warning number '4284'
25 // 4623: default constructor was implicitly defined as deleted because a base class default constructor is inaccessible or deleted
26 #pragma warning (push)
27 #pragma warning (disable : 4242 4265 4350 4365 4512 4548 4619 4623)
28#endif
29
30#include <utility>
31#include <map>
32#include <vector>
33#include <string>
34
35#include <boost/smart_ptr.hpp>
36
37#if defined (__GNUC__) && (__GNUC__ >= 4) && (__GNUC_MINOR__ >= 3)
38 // Including string.h here is required since gcc version 4.3. Older gcc
39 // versions provide it in a header file that is not included.
40 #include <string.h>
41#endif
42
43#if defined (WIN32) && (_MSC_VER <= 1200) && defined(_XTREE_)
44# pragma message("You do not have a patched XTREE file from $(MLAB_MeVisLab_Foundation)\\BuildTools\\win32\\patches\\msvc6\\XTREE or http://www.dinkumware.com/vc_fixes.html installed.")
45# pragma message("Replace the old XTREE file in 'Program Files\\Microsoft Visual Studio\\VC98\\Include' with the patched version.")
46# error "YOUR MODULE WILL NOT WORK."
47#endif
48
49#ifdef _MSC_VER
50 #pragma warning (pop)
51#endif
52
53#include "DCMTree_Defines.h"
55
56
57namespace DCMTree
58{
59 class Tag;
60
62 typedef boost::shared_ptr<Tag> TagPtr;
63 typedef boost::shared_ptr<const Tag> Const_TagPtr;
64
65 class MFPixelTag;
67 typedef boost::shared_ptr<MFPixelTag> MFPixelTagPtr;
68 typedef boost::shared_ptr<const MFPixelTag> Const_MFPixelTagPtr;
69
70 class Tree;
72 typedef boost::shared_ptr<Tree> TreePtr;
73 typedef boost::shared_ptr<const Tree> Const_TreePtr;
74
75 class Message;
76 typedef boost::shared_ptr<Message> MessagePtr;
77 typedef boost::shared_ptr<const Message> Const_MessagePtr;
78
79 class TagInfo;
81 typedef boost::shared_ptr<TagInfo> TagInfoPtr;
82 typedef boost::shared_ptr<const TagInfo> Const_TagInfoPtr;
83
85 typedef std::vector<TreePtr> TreePtrVector;
86
87 class Value;
88
90 typedef boost::shared_ptr<Value> ValuePtr;
91 typedef boost::shared_ptr<const Value> Const_ValuePtr;
92
94
96 typedef boost::shared_ptr<CharacterSetConverter> CharacterSetConverterPtr;
97 typedef boost::shared_ptr<const CharacterSetConverter> Const_CharacterSetConverterPtr;
98
99 typedef boost::shared_array<unsigned char> pixel_cont_t;
100
105 struct PixelData {
106 PixelData() : _data(nullptr) {};
107 PixelData(const pixel_cont_t& data) : _data(data.get()),_sharedData(data) {};
108 PixelData(const unsigned char* data) : _data(data), _sharedData(pixel_cont_t()) {};
109
110 operator bool() const {
111 return _data != nullptr;
112 }
113
114 void operator=(const pixel_cont_t& data) {
115 _data = data.get();
116 _sharedData = data;
117 }
118
119 void operator=(unsigned char* data) {
120 _data = data;
121 _sharedData = pixel_cont_t();
122 }
123
124 const unsigned char* get() const { return _data; }
125
126 private:
127 const unsigned char* _data;
128 pixel_cont_t _sharedData;
129 };
130
131 class Dict;
132
134 typedef boost::shared_ptr<Dict> DictPtr;
135 typedef boost::shared_ptr<const Dict> Const_DictPtr;
136
137 class Exception;
138
140 typedef boost::shared_ptr<Exception> ExceptionPtr;
141 typedef boost::shared_ptr<const Exception> Const_ExceptionPtr;
142
144 class TagId;
145 typedef boost::shared_ptr<TagId> TagIdPtr;
146 typedef std::pair<TagIdPtr,TagIdPtr> TagIdPtrPair;
147 typedef unsigned int RawTagId;
148
150 typedef std::vector<TagId> TagIdVector;
151
153 typedef boost::shared_ptr<TagIdVector> TagIdVectorPtr;
154 typedef boost::shared_ptr<const TagIdVector> Const_TagIdVectorPtr;
155
157 typedef std::map<TagId,TagPtr> TagPtrMap;
158 typedef std::map<TagId,Const_TagPtr> Const_TagPtrMap;
159 typedef boost::shared_ptr<Const_TagPtrMap> Const_TagPtrMapPtr;
160
161 class Reader;
162
164 typedef boost::shared_ptr<Reader> ReaderPtr;
165 typedef boost::shared_ptr<const Reader> Const_ReaderPtr;
166
168 class StructuredMF;
169 typedef boost::shared_ptr<StructuredMF> StructuredMFPtr;
170 typedef boost::shared_ptr<const StructuredMF> Const_StructuredMFPtr;
171
173 typedef std::pair<unsigned,unsigned> TagValueMultiplicity;
174
176 class IOParameter;
177 typedef boost::shared_ptr<IOParameter> IOParameterPtr;
178
181 {
182 Date( int year = 0, int month = 0, int day = 0 );
183
184 unsigned short _year; // 0000-9999
185 unsigned char _month; // 00-12
186 unsigned char _day; // 00-31
187 };
188
191 {
192 Time( int hour = 0, int minute = 0, int second = 0, int msec = 0 );
193
194 unsigned char _hour; // 00-23
195 unsigned char _minute; // 00-59
196 unsigned char _second; // 00-59
197 double _fraction; // 0.0-0.999999
198 };
199
201 typedef std::pair<Date,Time> DateTime;
202
207 enum Vr
208 {
209 AE, AS, CS, DA, DS, DT, IS, LO, LT, PN, SH, ST, TM, UT,
210 UI, SS, US, AT, SL, UL, FL, FD, OB, OW, OL, OF, SQ, UN, UR, OD, UC, VRCOUNT
211 };
212
213 typedef std::vector<Vr> VrVector;
214
223
232
235
272
285
287
291 DCMTREE_EXPORT std::string toString (const Vr vr);
292
296 DCMTREE_EXPORT Vr toVr (const std::string &vrstr);
297
301 DCMTREE_EXPORT bool isValidVrStr (const std::string &vrstr);
302
307 DCMTREE_EXPORT std::string toString (const TransferSyntax syntax);
308
313}
314
316{
319 void serializeX (Sink &sink,const DCMTree::Vr &vr);
320 void deserializeX (Source &source,DCMTree::Vr &vr);
321}
322
323#endif
324
325
#define DCMTREE_EXPORT
class CharacterSetConverter is used for converting string values from one DICOM character set to anot...
base class to wrap parameters to be used for reading/writing messages this is needed because the tool...
class to hold data of an DICOM message, which is not part of the message itself.
Support for structured multi-frame (SMF) DICOM objects.
Class to wrap a tag-id.
Class to carry meta-information about a specific tag.
Class to store tag-values.
Interface of a data sink for the serialization of objects.
Interface of a data source for the deserialization of objects.
Target mlrange_cast(Source arg)
Generic version of checked ML casts.
void serializeX(Sink &sink, const DCMTree::TransferSyntax &syntax)
void deserializeX(Source &source, DCMTree::TransferSyntax &syntax)
class to dump a DCMTree dicom message into a human readable file this class could be used as a starte...
boost::shared_ptr< const Tag > Const_TagPtr
Definition DCMTree_Lib.h:63
std::pair< Date, Time > DateTime
DateTime.
Vr
DICOM VR.
boost::shared_ptr< const StructuredMF > Const_StructuredMFPtr
boost::shared_ptr< Value > ValuePtr
shared-pointer to a tag-value
Definition DCMTree_Lib.h:90
boost::shared_ptr< TagInfo > TagInfoPtr
shared pointer to a DCMTree::TagInfo
Definition DCMTree_Lib.h:81
boost::shared_ptr< MFPixelTag > MFPixelTagPtr
shared-pointer to multi-frame tag
Definition DCMTree_Lib.h:67
TagSelector
constants selecting a tag subset in a chain of incrementally modified DICOM trees.
@ Owned
Only tags contained in the front most tree, omitting all inherited tags.
@ NonRoot
Same as AllTags, except tags that are only contained in the root tree.
@ AllTags
Select all tags from all trees in the chain that are not deleted in a successor.
boost::shared_ptr< const CharacterSetConverter > Const_CharacterSetConverterPtr
boost::shared_ptr< const Value > Const_ValuePtr
Definition DCMTree_Lib.h:91
std::map< TagId, TagPtr > TagPtrMap
a map from tag-id to TagPtr
boost::shared_ptr< Message > MessagePtr
Definition DCMTree_Lib.h:76
boost::shared_ptr< StructuredMF > StructuredMFPtr
boost::shared_ptr< IOParameter > IOParameterPtr
boost::shared_ptr< const Tree > Const_TreePtr
Definition DCMTree_Lib.h:73
boost::shared_ptr< const Message > Const_MessagePtr
Definition DCMTree_Lib.h:77
DCMTREE_EXPORT bool isType(Vr vr, VRCType vrctype)
defines the mapping of vr to VRCType
TransferSyntax
DICOM transfer syntaxes.
@ JPEG_SPEC_HIER_21_23
@ INVALID_TRANSFER_SYNTAX
@ JPEG_FULL_PROG_NON_HIER_11_13
@ JPEG_LOSSLESS_HIER_28
@ JPEG_2000_LOSSLESS_ONLY
@ JPEG_LOSSLESS_NON_HIER_14
@ IMPLICIT_BIG_ENDIAN
@ JPEG_SPEC_NON_HIER_7_9
@ EXPLICIT_BIG_ENDIAN
@ JPEG_SPEC_NON_HIER_6_8
@ JPEG_FULL_PROG_NON_HIER_10_12
@ JPEG_BASELINE
@ JPEG_2000_MC_LOSSLESS_ONLY
@ JPEG_LS_LOSSLESS
@ JPEG_LOSSLESS_HIER_29
@ JPEG_EXTENDED_HIER_17_19
@ JPEG_LOSSLESS_HIER_14
@ DEFLATED_EXPLICIT_LITTLE_ENDIAN
@ JPEG_LOSSLESS_NON_HIER_15
@ EXPLICIT_LITTLE_ENDIAN
@ JPEG_FULL_PROG_HIER_24_26
@ JPEG_SPEC_HIER_20_22
@ JPEG_EXTENDED_HIER_16_18
@ JPEG_EXTENDED_2_4
@ JPEG_LS_LOSSY
@ JPEG_EXTENDED_3_5
@ JPEG_FULL_PROG_HIER_25_27
@ IMPLICIT_LITTLE_ENDIAN
std::map< TagId, Const_TagPtr > Const_TagPtrMap
TransferSyntax defaultTransferSyntax()
VRCType
vr interpretation in C++
boost::shared_ptr< const Exception > Const_ExceptionPtr
boost::shared_array< unsigned char > pixel_cont_t
Definition DCMTree_Lib.h:99
boost::shared_ptr< const TagInfo > Const_TagInfoPtr
Definition DCMTree_Lib.h:82
boost::shared_ptr< const MFPixelTag > Const_MFPixelTagPtr
Definition DCMTree_Lib.h:68
boost::shared_ptr< TagId > TagIdPtr
boost::shared_ptr< const TagIdVector > Const_TagIdVectorPtr
boost::shared_ptr< Const_TagPtrMap > Const_TagPtrMapPtr
boost::shared_ptr< Tag > TagPtr
shared-pointer to tag
Definition DCMTree_Lib.h:62
boost::shared_ptr< const Reader > Const_ReaderPtr
std::vector< TreePtr > TreePtrVector
a vector of TreePtr - used for sequences
Definition DCMTree_Lib.h:85
boost::shared_ptr< CharacterSetConverter > CharacterSetConverterPtr
shared-pointer to a DCMTree::CharacterSetConverter
std::pair< TagIdPtr, TagIdPtr > TagIdPtrPair
boost::shared_ptr< Exception > ExceptionPtr
shared-pointer to a DCMTree::Exception
boost::shared_ptr< const Dict > Const_DictPtr
std::vector< TagId > TagIdVector
a vector of TagIds
ErrorCode
Error codes used for logging warnings and errors.
@ WritingDataFailed
std::pair< unsigned, unsigned > TagValueMultiplicity
the multiplicity of a tag, first=min second=max
boost::shared_ptr< Tree > TreePtr
shared pointer to a DCMTree::Tree
Definition DCMTree_Lib.h:72
boost::shared_ptr< TagIdVector > TagIdVectorPtr
a shared-pointer to a vector of TagIds
DCMTREE_EXPORT bool isValidVrStr(const std::string &vrstr)
check if the given string could be a valid/known vr
unsigned int RawTagId
DCMTREE_EXPORT std::string toString(const Vr vr)
convert a vr to a readable string
std::vector< Vr > VrVector
boost::shared_ptr< Reader > ReaderPtr
a shared-pointer to DCMTree::Reader
boost::shared_ptr< Dict > DictPtr
shared-pointer to a DCMTree::Dict
DCMTREE_EXPORT Vr toVr(const std::string &vrstr)
convert a string to a vr
Date class for DCMTree library.
unsigned short _year
unsigned char _month
Date(int year=0, int month=0, int day=0)
unsigned char _day
Contains pixel data which is either shared/ref counted or a direct pointer.
const unsigned char * get() const
PixelData(const unsigned char *data)
PixelData(const pixel_cont_t &data)
void operator=(const pixel_cont_t &data)
void operator=(unsigned char *data)
Time class for DCMTree library.
unsigned char _minute
unsigned char _second
Time(int hour=0, int minute=0, int second=0, int msec=0)
unsigned char _hour