MeVisLabToolboxReference
MeVis/Foundation/Sources/MLImageFormatBase/mlImageFormatTagList.h
Go to the documentation of this file.
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