MeVisLabToolboxReference
|
00001 // **InsertLicense** code 00002 //---------------------------------------------------------------------------------- 00005 00010 //---------------------------------------------------------------------------------- 00011 00012 #ifndef __mlImageFormatTagList_H 00013 #define __mlImageFormatTagList_H 00014 00015 // Resolve platform independencies. 00016 #ifndef __MLImageFormatBaseSystem_H 00017 #include "MLImageFormatBaseSystem.h" 00018 #endif 00019 00020 #ifndef __mlModuleIncludes_H 00021 #include "mlModuleIncludes.h" 00022 #endif 00023 00024 #ifndef __mlImageFormatTag_H 00025 #include "mlImageFormatTag.h" 00026 #endif 00027 00028 // Implement everything in ML namespace. 00029 ML_START_NAMESPACE 00030 00032 class DataCompressor; 00033 00035 class MLImageFormatInfos; 00036 00037 //---------------------------------------------------------------------- 00039 //---------------------------------------------------------------------- 00040 class MLIMAGEFORMATBASE_EXPORT MLImageFormatTagList : public std::vector<MLImageFormatTag>{ 00041 public: 00042 00043 //---------------------------------------------------------------------- 00044 // CPU specific storage order of data in memory. 00045 //---------------------------------------------------------------------- 00046 static const MLint ML_LITTLE_ENDIAN ; 00047 static const MLint ML_BIG_ENDIAN ; 00048 00049 //---------------------------------------------------------------------- 00051 //---------------------------------------------------------------------- 00052 static const std::string ML_DICOM_TAG_PREFIX; 00053 00054 //-------------------------------------------------------------------------------- 00056 //-------------------------------------------------------------------------------- 00057 static const std::string ML_TAG_LIST_SIZE_IN_BYTES_TAG; 00058 00059 //-------------------------------------------------------------------------------- 00061 //-------------------------------------------------------------------------------- 00062 static const MLImageFormatTagList &getDefaultEmptyTagList(); 00063 00064 00065 //------------------------------------------------------------------ 00067 00068 //------------------------------------------------------------------ 00069 00071 MLImageFormatTagList() {} 00072 00075 MLuint getTagListSizeInBytes() const; 00076 00078 void tagListOut(std::ostream &ostr) const; 00079 00081 std::string getTagListAsString() const; 00082 00085 const MLImageFormatTag *findConstTag(const std::string &tagName) const; 00086 00089 MLint findTagIdx(const std::string &tagName) const; 00090 00094 bool checkTag(const std::string &tagName, MLint &val) const; 00095 00099 bool checkTag(const std::string &tagName, std::string &val) const; 00100 00104 bool checkTag(const std::string &tagName, MLdouble &val) const; 00105 00109 bool checkTag(const std::string &tagName, MLldouble &val) const; 00110 00113 MLint getExpectedHeaderAndListSizeAsBinary() const; 00114 00124 char* getHeaderAndListAsBinary(size_t &memSize, 00125 MLuint32 saveModeBits) const; 00126 00136 MLErrorCode save(int fd, 00137 MLuint filePos, 00138 MLuint32 saveModeBits) const; 00139 00149 MLErrorCode load(int fd, MLint filePos=0); 00150 00151 00164 MLErrorCode appendImageProperties(const PagedImage &props, 00165 const DataCompressor *compressor, 00166 const MLImageFormatTagList &compressionTagList, 00167 const MLImageFormatTagList &userTagList, 00168 const MLImageFormatTagList &privateTagList, 00169 const std::string &defaultVoxelValue, 00170 MLuint32 saveModeBits); 00171 00187 MLErrorCode extractImageProperties(PagedImage &props, 00188 MLint &endianess, 00189 std::string &compressorName, 00190 std::string &compressorVersion, 00191 MLImageFormatTagList &compressionTagList, 00192 MLImageFormatTagList &userTagList, 00193 MLImageFormatTagList &privateTagList, 00194 std::string &defaultVoxelValue, 00195 MLint &usesCheckSum, 00196 MLint &usesPartialPages); 00197 00208 MLErrorCode extractImageProperties(MLImageFormatInfos &infos); 00209 00216 void appendSpecialTags(const std::string &numTagsTagName, 00217 const std::string &tagNamePrefix, 00218 const MLImageFormatTagList &sourceTagList); 00219 00230 MLErrorCode extractSpecialTags(const std::string &numTagsTagName, 00231 const std::string &tagNamePrefix, 00232 MLImageFormatTagList &targetTagList) const; 00233 }; 00234 00235 ML_END_NAMESPACE 00236 00237 #endif // of __mlImageFormatTagList_H 00238