MrSID Decode SDK for Raster Reference Manual
9.5.1.4427
|
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 LTI_IMAGE_STAGE_OVERRIDES_H 00014 #define LTI_IMAGE_STAGE_OVERRIDES_H 00015 00016 // lt_lib_mrsid_core 00017 #include "lti_types.h" 00018 00019 LT_BEGIN_NAMESPACE(LizardTech) 00020 00021 00022 00023 00024 00025 struct LTIOverrideMetadataData 00026 { 00027 LTIOverrideMetadataData(); 00028 ~LTIOverrideMetadataData(); 00029 00030 LT_STATUS createMetadata(const LTIMetadataDatabase *metadata); 00031 LTIMetadataDatabase &getMetadata(); 00032 00033 LTIMetadataDatabase *m_metadata; 00034 }; 00035 00036 00037 template<class BASE> 00038 struct LTIOverrideMetadata : public BASE, 00039 protected LTIOverrideMetadataData 00040 { 00041 const LTIMetadataDatabase &getMetadata() const 00042 { 00043 return *m_metadata; 00044 } 00045 00046 LT_STATUS overrideMetadata(const LTIMetadataDatabase &metadata) 00047 { 00048 return LTIOverrideMetadataData::createMetadata(&metadata); 00049 } 00050 }; 00051 00054 00055 struct LTIOverrideDimensionsData 00056 { 00057 LTIOverrideDimensionsData(); 00058 00071 LT_STATUS setDimensions(lt_uint32 width, lt_uint32 height); 00072 00073 lt_uint32 m_width; 00074 lt_uint32 m_height; 00075 }; 00076 00077 template<class BASE> 00078 struct LTIOverrideDimensions : public BASE, 00079 protected LTIOverrideDimensionsData 00080 00081 { 00082 lt_uint32 getWidth() const 00083 { 00084 return m_width; 00085 } 00086 00087 lt_uint32 getHeight() const 00088 { 00089 return m_height; 00090 } 00091 }; 00092 00095 00096 struct LTIOverridePixelPropsData 00097 { 00098 LTIOverridePixelPropsData(); 00099 ~LTIOverridePixelPropsData(); 00100 00114 LT_STATUS setPixelProps(const LTIPixel& pixelProps); 00115 LT_STATUS setPixelBPS(lt_uint8 bps); 00116 00135 LT_STATUS setDynamicRange(const LTIPixel& drmin, 00136 const LTIPixel& drmax); 00137 00152 LT_STATUS setDefaultDynamicRange(void); 00153 00154 LTIPixel *m_pixelProps; 00155 LTIPixel *m_drminPixel; 00156 LTIPixel *m_drmaxPixel; 00157 }; 00158 00159 template<class BASE> 00160 struct LTIOverridePixelProps : public BASE, 00161 protected LTIOverridePixelPropsData 00162 { 00163 const LTIPixel &getPixelProps() const 00164 { 00165 return *m_pixelProps; 00166 } 00167 00168 const LTIPixel &getMinDynamicRange() const 00169 { 00170 return *m_drminPixel; 00171 } 00172 00173 const LTIPixel &getMaxDynamicRange() const 00174 { 00175 return *m_drmaxPixel; 00176 } 00177 00178 LT_STATUS overridePixelBPS(lt_uint8 bps) 00179 { 00180 return setPixelBPS(bps); 00181 } 00182 00183 LT_STATUS overrideDynamicRange(const LTIPixel& drmin, 00184 const LTIPixel& drmax) 00185 { 00186 return setDynamicRange(drmin, drmax); 00187 } 00188 }; 00189 00192 00193 struct LTIOverrideBackgroundPixelData 00194 { 00195 LTIOverrideBackgroundPixelData(); 00196 ~LTIOverrideBackgroundPixelData(); 00197 00211 LT_STATUS setBackgroundPixel(const LTIPixel* backgroundPixel); 00212 00226 LT_STATUS setNoDataPixel(const LTIPixel* nodataPixel); 00227 00228 LTIPixel *m_backgroundPixel; 00229 LTIPixel *m_nodataPixel; 00230 }; 00231 00232 00233 template<class BASE> 00234 struct LTIOverrideBackgroundPixel : public BASE, 00235 protected LTIOverrideBackgroundPixelData 00236 { 00237 public: 00238 const LTIPixel *getBackgroundPixel() const 00239 { 00240 return m_backgroundPixel; 00241 } 00242 const LTIPixel *getNoDataPixel() const 00243 { 00244 return m_nodataPixel; 00245 } 00246 00247 LT_STATUS overrideBackgroundPixel(const LTIPixel *backgroundPixel) 00248 { 00249 return setBackgroundPixel(backgroundPixel); 00250 } 00251 LT_STATUS overrideNoDataPixel(const LTIPixel *nodataPixel) 00252 { 00253 return setNoDataPixel(nodataPixel); 00254 } 00255 }; 00256 00259 00260 struct LTIOverrideGeoCoordData 00261 { 00262 LTIOverrideGeoCoordData(); 00263 ~LTIOverrideGeoCoordData(); 00264 00277 LT_STATUS setGeoCoord(const LTIGeoCoord& geoCoord); 00278 00295 LT_STATUS setDefaultGeoCoord(const LTIImage &image); 00296 00297 LTIGeoCoord *m_geoCoord; 00298 bool m_geoCoordImplicit; 00299 }; 00300 00301 template<class BASE> 00302 struct LTIOverrideGeoCoord : public BASE, 00303 protected LTIOverrideGeoCoordData 00304 { 00305 const LTIGeoCoord &getGeoCoord() const 00306 { 00307 return *m_geoCoord; 00308 } 00309 00310 bool isGeoCoordImplicit() const 00311 { 00312 return m_geoCoordImplicit; 00313 } 00314 00315 LT_STATUS overrideGeoCoord(const LTIGeoCoord &geoCoord) 00316 { 00317 return setGeoCoord(geoCoord); 00318 } 00319 }; 00320 00323 00324 struct LTIOverrideMagnificationData 00325 { 00326 LTIOverrideMagnificationData(); 00327 00343 LT_STATUS setMagnification(double minMag, 00344 double maxMag); 00345 00346 double m_minMag; 00347 double m_maxMag; 00348 }; 00349 00350 template<class BASE> 00351 struct LTIOverrideMagnification : public BASE, 00352 protected LTIOverrideMagnificationData 00353 { 00354 double getMinMagnification() const 00355 { 00356 return m_minMag; 00357 } 00358 00359 double getMaxMagnification() const 00360 { 00361 return m_maxMag; 00362 } 00363 }; 00364 00367 00368 struct LTIOverrideIsSelectiveData 00369 { 00370 LTIOverrideIsSelectiveData(); 00371 00385 void setIsSelective(bool enable); 00386 00387 bool m_isSelective; 00388 }; 00389 00390 template<class BASE> 00391 struct LTIOverrideIsSelective : public BASE, 00392 protected LTIOverrideIsSelectiveData 00393 { 00394 bool isSelective() const 00395 { 00396 return m_isSelective; 00397 } 00398 }; 00399 00402 00403 struct LTIOverrideStripHeightData 00404 { 00405 LTIOverrideStripHeightData(); 00406 00407 lt_uint32 m_stripHeight; 00408 }; 00409 00410 template<class BASE> 00411 struct LTIOverrideStripHeight : public BASE, 00412 protected LTIOverrideStripHeightData 00413 { 00414 lt_uint32 getStripHeight() const 00415 { 00416 return m_stripHeight; 00417 } 00418 00419 LT_STATUS setStripHeight(lt_uint32 stripHeight) 00420 { 00421 m_stripHeight = stripHeight; 00422 return LT_STS_Success; 00423 } 00424 }; 00425 00428 00429 struct LTIOverrideDelegatesData 00430 { 00431 LTIOverrideDelegatesData(); 00432 00433 LTIProgressDelegate *m_progressDelegate; 00434 LTIInterruptDelegate *m_interruptDelegate; 00435 }; 00436 00437 template<class BASE> 00438 struct LTIOverrideDelegates : public BASE, 00439 protected LTIOverrideDelegatesData 00440 { 00441 void setProgressDelegate(LTIProgressDelegate* delegate) 00442 { 00443 m_progressDelegate = delegate; 00444 } 00445 00446 LTIProgressDelegate *getProgressDelegate() const 00447 { 00448 return m_progressDelegate; 00449 } 00450 00451 void setInterruptDelegate(LTIInterruptDelegate* delegate) 00452 { 00453 m_interruptDelegate = delegate; 00454 } 00455 00456 LTIInterruptDelegate *getInterruptDelegate() const 00457 { 00458 return m_interruptDelegate; 00459 } 00460 }; 00461 00464 00465 struct LTIOverridePixelLookupTablesData 00466 { 00467 LTIOverridePixelLookupTablesData(); 00468 ~LTIOverridePixelLookupTablesData(); 00469 00485 LT_STATUS setPixelLookupTable(const LTIPixelLookupTable* pixelLookupTable); 00486 00487 LTIPixelLookupTable *m_pixelLookupTable; 00488 }; 00489 00490 template<class BASE> 00491 struct LTIOverridePixelLookupTables : public BASE, 00492 protected LTIOverridePixelLookupTablesData 00493 { 00494 const LTIPixelLookupTable *getPixelLookupTable() const 00495 { 00496 return m_pixelLookupTable; 00497 } 00498 00499 LT_STATUS overridePixelLookupTable(const LTIPixelLookupTable* pixelLookupTable) 00500 { 00501 return setPixelLookupTable(pixelLookupTable); 00502 } 00503 }; 00504 00505 00508 00511 00514 00515 LT_END_NAMESPACE(LizardTech) 00516 00517 00518 #endif // LTI_IMAGE_STAGE_OVERRIDES_H