MeVisLab Toolbox Reference
mlGenericPrivateDICOMTagDecoder.h
Go to the documentation of this file.
1// Copyright (c) Fraunhofer MEVIS, Germany. All rights reserved.
2// **InsertLicense** code
3//----------------------------------------------------------------------------------
6
11//----------------------------------------------------------------------------------
12
13#pragma once
14
16#include <mlUtilsSystemC.h>
18#include <mlPrivateDICOMTags.h>
19#include <mlFMEPrivateDICOMTagDecoder.h>
20
21ML_START_NAMESPACE
22
26: public FMEPrivateDICOMTagDecoderPluginBase {
27
28public:
29
32
35
38
41
54 PrivateDICOMTagValueFields &resultFields) override;
55
66 static void dumpHexArea(const std::string &prefix,
67 const unsigned char *tagData,
68 size_t tagDataSize,
69 PrivateDICOMTagValueFields &resultFields,
70 size_t rowSize=16,
71 size_t maxBytesToDump=ML_SIZE_T_MAX);
72
93 const unsigned char *&tagData,
94 MLuint32 &tagDataSize,
95 bool decodeImplicitSeqVR,
96 PrivateDICOMTagValueFields &resultFields,
97 bool translateStdIdToName) const;
98
100 static bool isValidVRString(const std::string &vrStr);
101
102protected:
103
111 bool _getTagNameAndVrFromId(unsigned int groupId,
112 unsigned int elementId,
113 std::string &retName,
114 std::string &retVr) const;
115
122 const unsigned char *_findStr(const unsigned char *buffer,
123 const std::string &str,
124 size_t bufferSize) const;
125
145 static std::string _dumpRange(const unsigned char *start,
146 size_t num = 16,
147 bool showStartAddress = true,
148 bool showHexDump = true,
149 bool showASCII = true,
150 size_t maxRowSize = 16,
151 char defaultNonReadableChar = '.');
152
167 const unsigned char *&tagData,
168 MLuint32 &tagDataSize,
169 bool implicit,
170 PrivateDICOMTagValueFields &resultFields,
171 bool translateStdIdToName) const;
172
173private:
174
177
188
190 void _decodeATTagData(const std::string &prefix, bool useImplicitVR, const unsigned char *tagData,
191 MLuint32 &tagValueSize, std::string &addStr, PrivateDICOMTagValueFields &resultFields) const;
192
194 void _decodeDLTagData(const std::string &prefix, bool useImplicitVR, const unsigned char *tagData,
195 MLuint32 &tagValueSize, std::string &addStr, PrivateDICOMTagValueFields &resultFields) const;
196
198 void _decodeFDTagData(const std::string &prefix, bool useImplicitVR, const unsigned char *tagData,
199 MLuint32 &tagValueSize, std::string &addStr, PrivateDICOMTagValueFields &resultFields) const;
200
202 void _decodeFLTagData(const std::string &prefix, bool useImplicitVR, const unsigned char *tagData,
203 MLuint32 &tagValueSize, std::string &addStr, PrivateDICOMTagValueFields &resultFields) const;
204
206 void _decodeOXTagData(const std::string &prefix, bool useImplicitVR, const unsigned char *tagData,
207 MLuint32 &tagValueSize,
208 MLuint32 maxTagValueSize,
209 std::string &addStr,
210 PrivateDICOMTagValueFields &resultFields,
211 const std::string &VRstr) const;
212
214 void _decodeSQTagData(const std::string &prefix, bool useImplicitVR, const unsigned char *tagData,
215 MLuint32 &tagValueSize, std::string &addStr, PrivateDICOMTagValueFields &resultFields,
216 bool decodeImplicitSeqVR,
217 bool translateStdIdToName) const;
218
220 void _decodeSLTagData(const std::string &prefix, bool useImplicitVR, const unsigned char *tagData,
221 MLuint32 &tagValueSize, std::string &addStr, PrivateDICOMTagValueFields &resultFields) const;
222
224 void _decodeSSTagData(const std::string &prefix, bool useImplicitVR, const unsigned char *tagData,
225 MLuint32 &tagValueSize, std::string &addStr, PrivateDICOMTagValueFields &resultFields) const;
226
228 void _decodeULTagData(const std::string &prefix, bool useImplicitVR, const unsigned char *tagData,
229 MLuint32 &tagValueSize, std::string &addStr, PrivateDICOMTagValueFields &resultFields) const;
230
232 void _decodeUSTagData(const std::string &prefix, bool useImplicitVR, const unsigned char *tagData,
233 MLuint32 &tagValueSize,
234 MLuint32 maxTagValueSize,
235 std::string &addStr,
236 PrivateDICOMTagValueFields &resultFields) const;
237
239 void _decodeUNTagData(const std::string &prefix, bool useImplicitVR, const unsigned char *tagData,
240 MLuint32 &tagValueSize, std::string &addStr, PrivateDICOMTagValueFields &resultFields) const;
241
243 void _decodeStrLikeTagData(const std::string &prefix, bool useImplicitVR, const unsigned char *tagData,
244 MLuint32 &tagValueSize,
245 MLuint32 maxTagValueSize,
246 std::string &addStr,
247 PrivateDICOMTagValueFields &resultFields,
248 std::string &strValue) const;
249
264 bool _decodeVrTagData(const std::string &prefix,
265 bool useImplicitVR,
266 const unsigned char *tagData,
267 MLuint32 &tagValueSize,
268 MLuint32 maxDataSize,
269 std::string &addStr,
270 PrivateDICOMTagValueFields &resultFields,
271 bool decodeImplicitSeqVR,
272 const std::string &vr,
273 std::string &strValue,
274 bool translateStdIdToName) const;
276
277
280};
281
282ML_END_NAMESPACE
Project global and OS specific declarations.
#define MLGENERIC_PRIVATEDICOMTAGDECODERS_EXPORT
DLL export macro definition.
static void dumpHexArea(const std::string &prefix, const unsigned char *tagData, size_t tagDataSize, PrivateDICOMTagValueFields &resultFields, size_t rowSize=16, size_t maxBytesToDump=ML_SIZE_T_MAX)
GenericPrivateDICOMTagDecoder(const GenericPrivateDICOMTagDecoder &)=default
Default copy constructor.
GenericPrivateDICOMTagDecoder & operator=(const GenericPrivateDICOMTagDecoder &)=default
Default assignment operator.
GenericPrivateDICOMTagDecoder()=default
Constructor doing nothing.
PrivateDICOMTagDecoderPluginBase::DecodeStates extractTag(const std::string &prefix, const unsigned char *&tagData, MLuint32 &tagDataSize, bool decodeImplicitSeqVR, PrivateDICOMTagValueFields &resultFields, bool translateStdIdToName) const
~GenericPrivateDICOMTagDecoder() override
Destructor.
PrivateDICOMTagDecoderPluginBase::DecodeStates _decodeSequenceTagData(const std::string &prefix, const unsigned char *&tagData, MLuint32 &tagDataSize, bool implicit, PrivateDICOMTagValueFields &resultFields, bool translateStdIdToName) const
PrivateDICOMTagDecoderPluginBase::DecodeStates decodePrivateTag(const std::string &privateCreator, DCMTree::Const_TagPtr tagPtr, PrivateDICOMTagValueFields &resultFields) override
static std::string _dumpRange(const unsigned char *start, size_t num=16, bool showStartAddress=true, bool showHexDump=true, bool showASCII=true, size_t maxRowSize=16, char defaultNonReadableChar='.')
bool _getTagNameAndVrFromId(unsigned int groupId, unsigned int elementId, std::string &retName, std::string &retVr) const
static bool isValidVRString(const std::string &vrStr)
Returns true if the passed VR string is a valid known one, otherwise false.
const unsigned char * _findStr(const unsigned char *buffer, const std::string &str, size_t bufferSize) const
Header file of class PrivateDICOMTags collecting some known private DICOM tag information.
#define ML_CLASS_HEADER(className)
unsigned int MLuint32
Definition mlTypeDefs.h:184
#define ML_SIZE_T_MAX
For convenience, the maximum value of size_t without "U", which is probably more in line of the expec...
Definition mlTypeDefs.h:551
boost::shared_ptr< const Tag > Const_TagPtr
Definition DCMTree_Lib.h:57