MeVisLab Toolbox Reference
mlZTUFileNameSet.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
18#include <mlZTUIndex.h>
19#include <mlTypeDefs.h>
20#include <DCMTree_Tree.h>
21
22#include <FMEThirdPartyWarningsDisable.h>
23#include <map>
24#include <string>
25#include <vector>
26#include <FMEThirdPartyWarningsRestore.h>
27
29
30class DicomMessageCollector;
31
35 public:
38
41
44
48 typedef std::vector< std::vector< std::vector<DICOMCachedIOFileHandle > > > FileNameSet;
49
52 {
53 if (&otherObj != this){
54 // Do not/cannot assign cacheProxies!
55 _pageFileNames = otherObj._pageFileNames;
56 }
57 return *this;
58 }
59
61 inline bool operator==(const ZTUFileNameSet &otherObj) const
62 {
63 return _pageFileNames == otherObj._pageFileNames;
64 }
65
67 inline bool operator!=(const ZTUFileNameSet &otherObj) const
68 {
69 return !operator==(otherObj);
70 }
71
74
76 bool hasMultiFrameHandle() const;
77
81
88
93
95 inline void clearPageFileNames() {
96 _pageFileNames.clear();
97 }
98
100 inline const FileNameSet &getConstPageFileNameSet() const {
101 return _pageFileNames;
102 };
103
106 return _pageFileNames;
107 };
108
111 _pageFileNames = pFNames;
112 }
113
115 size_t getZExtent() const;
116
119 size_t getTExtentAt(size_t z = 0) const;
120
122 size_t getTExtent() const;
123
126 size_t getUExtentAt(size_t z = 0, size_t t = 0) const;
127
129 size_t getUExtent() const;
130
132 size_t getNumFrames() const;
133
136 bool isValidPosition(size_t z, size_t t, size_t u) const;
137
140 const DICOMCachedIOFileHandle &getPageFileName(size_t z, size_t t, size_t u=0) const;
141
145 void setPageFileName(size_t z, size_t t, size_t u, const std::string fName);
146
150 void appendFileName(const std::string& fileName, bool appendToZ);
151
153 void appendFileNameToZ(const std::string& fileName);
154
156 void appendFileNameToT(const std::string& fileName);
157
159 void appendFileNameToU(const std::string& fileName);
160
166 std::string getFileNameSetAsInfoString(bool fileNamesOnly = false) const;
167
171
175
179 std::vector<DICOMCachedIOFileHandle> getAllFileHandles(const DICOMTagTools::ZTUVector &suppressedHandles =
181
191 std::string getStateAsString(const std::string& lineEndStr,
192 const std::string& cacheFileRootDirPath,
193 bool useRelativePaths) const;
194
206 MLErrorCode setStateFromString(const std::string & state,
207 size_t tExt,
208 size_t uExt,
209 const std::string& cacheDirPath,
210 size_t& readPos);
211
224 bool searchFrameWithSOPInstanceUID(const std::string &sopInstanceUID,
228 DicomMessageCollector &dcmMsgCollector) const;
229
243 bool searchFrameWithValueInTag(unsigned int tagId,
244 const std::string &tagValue,
248 DicomMessageCollector &dcmMsgCollector) const;
249
251 typedef std::map<DICOMTagTools::ZTUIndex, DCMTree::Const_TagPtr> TagsWithPositionMap;
252
272 bool doStringToValue,
273 DicomMessageCollector &dcmMsgCollector,
274 bool createNullTagEntries=false,
275 const std::string &nullEntryTagValue="",
277 const std::string &nonConvertibleTagValue="") const;
278
290 DicomMessageCollector &dcmMsgCollector) const;
291
292 private:
302 unsigned int tagId,
304 DicomMessageCollector &dcmMsgCollector) const;
305
307 MLDICOMCachedIOProxies _cacheProxies;
308
311 FileNameSet _pageFileNames;
312};
313
316
Project global and OS specific declarations.
#define ML_MLToDicomTools_EXPORT
Only for diagnostic purposes.
An instance of this class creates singleton proxies for DICOMCachedIO cache classes such that all cac...
Class managing a multi-frame Z, T, and U-dimension plus a string value.
Definition mlZTUIndex.h:26
Class to collect messages and errors related to a given frame handle.
Class to manage a 3D set of handles describing frames or volumes to be composed to a higher dimension...
bool hasMultiFrameHandle() const
Returns true if any page file name is an enhanced multi-frame handle, otherwise false.
MLErrorCode setStateFromString(const std::string &state, size_t tExt, size_t uExt, const std::string &cacheDirPath, size_t &readPos)
Set the object content from the passed state string; the state string is reduced by the parsed conten...
void clearPageFileNames()
Resets the file name set to extent 0 in all dimensions.
~ZTUFileNameSet()
Destructor.
void setPageFileNames(const FileNameSet &pFNames)
Set entire set of file names at once.
DICOMCachedIOFileHandle getOriginalFrameHandle() const
Returns an empty string if there are two handles which have not the same original file,...
size_t getUExtentAt(size_t z=0, size_t t=0) const
Returns the extent of the file set in T-dimension at the position (z,t) if it exists,...
bool searchFrameWithSOPInstanceUID(const std::string &sopInstanceUID, DICOMCachedIOFileHandle &foundHandle, DICOMTagTools::ZTUIndex &ztuPosition, bool forceSearchInEnhancedHandles, DicomMessageCollector &dcmMsgCollector) const
Returns position and file handle of the first frame with the given SOPInstanceUID.
std::map< DICOMTagTools::ZTUIndex, DCMTree::Const_TagPtr > TagsWithPositionMap
Map of pairs of ZTU frame position with associated tag pointer.
ZTUFileNameSet(const ZTUFileNameSet &otherObject)
Copy constructor.
FileNameSet & getModifiablePageFileNameSet()
Returns the entire set of file names as modifiable object.
TagsWithPositionMap getTagFromAllFrames(unsigned int tagId, bool forceSearchInEnhancedHandles, bool doStringToValue, DicomMessageCollector &dcmMsgCollector, bool createNullTagEntries=false, const std::string &nullEntryTagValue="", bool createNotConvertibleTagEntries=false, const std::string &nonConvertibleTagValue="") const
Returns a map with pairs with (DICOMTagTools::ZTUIndex, DCMTree::Const_TagPtr) pairs of first tags in...
bool allHandlesExistAsFile(bool allowEmpty) const
Returns true if all handles can be found as files on disk, otherwise false; Multi-frame handles are h...
bool operator!=(const ZTUFileNameSet &otherObj) const
Returns false if the passed FileNameSets equals this, otherwise true.
std::vector< std::vector< std::vector< DICOMCachedIOFileHandle > > > FileNameSet
Vector array to manage a 3D set of (frame) file names the volume is composed of.
size_t getNumFrames() const
Returns the entire number of file names in set.
bool operator==(const ZTUFileNameSet &otherObj) const
Returns true if the passed FileNameSets equals this, otherwise false.
size_t getTExtent() const
Returns the maximum extent of the file set in T-dimension in all z entries.
size_t getZExtent() const
Returns the extent of the file set in Z-dimension.
void appendFileName(const std::string &fileName, bool appendToZ)
Append a file name to the z-dimension if appendToZ is true (there the extents in t and u are set to 1...
void appendFileNameToU(const std::string &fileName)
Append a file name to the u-dimension at z/t-position 0.
void appendFileNameToT(const std::string &fileName)
Append the file name to the t dimension at z-position 0.
bool searchFrameWithValueInTag(unsigned int tagId, const std::string &tagValue, DICOMCachedIOFileHandle &foundHandle, DICOMTagTools::ZTUIndex &ztuPosition, bool forceSearchInEnhancedHandles, DicomMessageCollector &dcmMsgCollector) const
Returns file handle and position of the first frame with a given tagValue in a tag with id tagId.
std::vector< DICOMCachedIOFileHandle > getAllFileHandles(const DICOMTagTools::ZTUVector &suppressedHandles=DICOMTagTools::ZTUVector()) const
Get all non-empty file handles as a one dimensional vector of files.
DICOMCachedIOFileHandle getFirstNonEmptyFileName() const
Returns the first non empty file name when scanning from [0][0][0] starting with u=0,...
bool needsNewSOPInstanceUID(bool allowOneToOneEnhancedFrameRecomposition, DicomMessageCollector &dcmMsgCollector) const
Checks all frame handles in fileNameSet whether a new SOPInstanceUID should be generated.
size_t getUExtent() const
Returns the maximum extent of the file set in U-dimension in all z and u entries.
ZTUFileNameSet & operator=(const ZTUFileNameSet &otherObj)
Assign members without cacheProxies.
void appendFileNameToZ(const std::string &fileName)
Append a file name to the z-dimension (there the extents in t and u are set to 1).
void setPageFileName(size_t z, size_t t, size_t u, const std::string fName)
Set the file name fName for the DICOM frame at position (z,t,u) as pageFileName.
const DICOMCachedIOFileHandle & getPageFileName(size_t z, size_t t, size_t u=0) const
Returns a reference to the file name fName for the DICOM frame at position (z,t).
bool isValidPosition(size_t z, size_t t, size_t u) const
Returns true if (z,t,u) addresses an existing (perhaps empty) entry in the ZTUFileNameSet,...
const FileNameSet & getConstPageFileNameSet() const
Returns the entire set of file names as constant.
ZTUFileNameSet()
Constructor.
bool hasEmptyPagesFileName() const
Returns true if any page file name is an empty string, otherwise false..
size_t getTExtentAt(size_t z=0) const
Returns the extent of the file set in T-dimension at the position z if it exists, otherwise 0 is retu...
bool hasNormalFrameHandle() const
Returns true if any page file name is non-enhanced-multi-frame handle, otherwise false.
std::string getStateAsString(const std::string &lineEndStr, const std::string &cacheFileRootDirPath, bool useRelativePaths) const
Return current content of class as string whose lines are separated by lineEndStr.
std::string getFileNameSetAsInfoString(bool fileNamesOnly=false) const
Returns all z and time positions and the corresponding file names as string.
void resizePageFileNamesToVolumeSize(size_t newZExt, size_t newTExt, size_t newUExt)
Assures that array of pageFileNames has sufficient extent for the current frames the volume is compos...
MLint32 MLErrorCode
Type of an ML Error code.
Definition mlTypeDefs.h:716
Header of FileHandle class which should be used in DICOM importing modules to resolve the filename fo...
An instance of this class creates singleton proxies for DICOMCachedIO cache classes such that all cac...
Target mlrange_cast(Source arg)
Generic version of checked ML casts.
Header file of class ZTUIndex managing a multi-frame Z, T, and U-dimension plus a string value.
boost::shared_ptr< const Tag > Const_TagPtr
Definition DCMTree_Lib.h:63
std::vector< ZTUIndex > ZTUVector
A std::vector typedef of ZTUIndexes to describe indexes of handles in the multi-frame Z,...
Definition mlZTUIndex.h:70
bool operator==(const Tmat2< DT > &a, const Tmat2< DT > &b)
a == b ? Return true if yes.
Definition mlMatrix2.h:425