MrSID Decode SDK for Raster Reference Manual
9.0.0.3864
|
00001 /* $Id$ */ 00002 /* ////////////////////////////////////////////////////////////////////////// 00003 // // 00004 // This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue, // 00005 // Suite 200, Seattle, WA 98104. Unauthorized use or distribution // 00006 // prohibited. Access to and use of this code is permitted only under // 00007 // license from LizardTech, Inc. Portions of the code are protected by // 00008 // US and foreign patents and other filings. All Rights Reserved. // 00009 // // 00011 /* PUBLIC */ 00012 00013 #ifndef LTIMETADATARECORD_H 00014 #define LTIMETADATARECORD_H 00015 00016 // lt_lib_base 00017 #include "lt_base.h" 00018 00019 // lt_lib_mrsid_metadata 00020 #include "lti_metadataTypes.h" 00021 00022 LT_BEGIN_NAMESPACE(LizardTech) 00023 00024 #if defined(LT_COMPILER_MS) 00025 #pragma warning(push,4) 00026 #endif 00027 00028 00047 class LTIMetadataRecord 00048 { 00049 public: 00062 LTIMetadataRecord(LTIMetadataTag tag, 00063 LTIMetadataDataType type, 00064 const void* data); 00065 00078 LTIMetadataRecord(const char* tagName, 00079 LTIMetadataDataType type, 00080 const void* data); 00081 00095 LTIMetadataRecord(LTIMetadataTag tag, 00096 LTIMetadataDataType type, 00097 const void* data, 00098 lt_uint32 vecLen); 00112 LTIMetadataRecord(const char* tagName, 00113 LTIMetadataDataType type, 00114 const void* data, 00115 lt_uint32 vecLen); 00116 00131 LTIMetadataRecord(LTIMetadataTag tag, 00132 LTIMetadataDataType type, 00133 const void* data, 00134 lt_uint32 numDims, 00135 const lt_uint32* dims); 00136 00151 LTIMetadataRecord(const char* tagName, 00152 LTIMetadataDataType type, 00153 const void* data, 00154 lt_uint32 numDims, 00155 const lt_uint32* dims); 00156 00160 LTIMetadataRecord(const LTIMetadataRecord&); 00161 00165 ~LTIMetadataRecord(); 00166 00174 LTIMetadataTag getTag() const; 00175 00183 const char* getTagName() const; 00184 00192 LTIMetadataDataType getDataType() const; 00193 00204 lt_uint32 getNumDims() const; 00205 00219 const lt_uint32* getDims() const; 00220 lt_uint32 getNumValues(void) const; 00221 00230 bool isScalar() const; 00231 00239 bool isVector() const; 00240 00248 bool isArray() const; 00249 00262 const void* getScalarData() const; 00263 00277 const void* getVectorData(lt_uint32& vecLen) const; 00278 00294 const void* getArrayData(lt_uint32& numDims, const lt_uint32*& dims) const; 00295 00304 lt_int32 getApproximateSize() const; 00305 00306 private: 00307 void initialize(LTIMetadataTag tag, 00308 const void* data, const lt_uint32* dims); 00309 void initialize(const char* tagName, 00310 const void* data, const lt_uint32* dims); 00311 00312 lt_uint32 computeLen() const; 00313 00314 char* m_tagName; 00315 LTIMetadataDataType m_type; 00316 lt_uint32 m_numDims; 00317 lt_uint32* m_dims; 00318 lt_uint8* m_data; 00319 00320 // nope 00321 LTIMetadataRecord& operator=(const LTIMetadataRecord&); 00322 }; 00323 00324 00325 LT_END_NAMESPACE(LizardTech) 00326 00327 #if defined(LT_COMPILER_MS) 00328 #pragma warning(pop) 00329 #endif 00330 00331 #endif // LTIMETADATARECORD_H