MrSID Decode SDK for Raster Reference Manual
9.5.4.4709
|
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 #include "lti_pixel.h" 00019 00020 LT_BEGIN_NAMESPACE(LizardTech) 00021 00022 00023 00024 00025 00026 struct LTIOverrideMetadataData 00027 { 00028 LTIOverrideMetadataData(); 00029 ~LTIOverrideMetadataData(); 00030 00031 LT_STATUS createMetadata(const LTIMetadataDatabase *metadata); 00032 LTIMetadataDatabase &getMetadata(); 00033 00034 LTIMetadataDatabase *m_metadata; 00035 }; 00036 00037 00038 template<class BASE> 00039 struct LTIOverrideMetadata : public BASE, 00040 protected LTIOverrideMetadataData 00041 { 00042 const LTIMetadataDatabase &getMetadata() const 00043 { 00044 return *m_metadata; 00045 } 00046 00047 LT_STATUS overrideMetadata(const LTIMetadataDatabase &metadata) 00048 { 00049 return LTIOverrideMetadataData::createMetadata(&metadata); 00050 } 00051 }; 00052 00055 00056 struct LTIOverrideDimensionsData 00057 { 00058 LTIOverrideDimensionsData(); 00059 00072 LT_STATUS setDimensions(lt_uint32 width, lt_uint32 height); 00073 00074 lt_uint32 m_width; 00075 lt_uint32 m_height; 00076 }; 00077 00078 template<class BASE> 00079 struct LTIOverrideDimensions : public BASE, 00080 protected LTIOverrideDimensionsData 00081 00082 { 00083 lt_uint32 getWidth() const 00084 { 00085 return m_width; 00086 } 00087 00088 lt_uint32 getHeight() const 00089 { 00090 return m_height; 00091 } 00092 }; 00093 00096 00097 struct LTIOverridePixelPropsData 00098 { 00099 LTIOverridePixelPropsData(); 00100 ~LTIOverridePixelPropsData(); 00101 00115 LT_STATUS setPixelProps(const LTIPixel& pixelProps); 00116 LT_STATUS setPixelBPS(lt_uint8 bps); 00117 00136 LT_STATUS setDynamicRange(const LTIPixel& drmin, 00137 const LTIPixel& drmax); 00138 00153 LT_STATUS setDefaultDynamicRange(void); 00154 00155 LTIPixel *m_pixelProps; 00156 LTIPixel *m_drminPixel; 00157 LTIPixel *m_drmaxPixel; 00158 }; 00159 00160 template<class BASE> 00161 struct LTIOverridePixelProps : public BASE, 00162 protected LTIOverridePixelPropsData 00163 { 00164 const LTIPixel &getPixelProps() const 00165 { 00166 return *m_pixelProps; 00167 } 00168 00169 const LTIPixel &getMinDynamicRange() const 00170 { 00171 return *m_drminPixel; 00172 } 00173 00174 const LTIPixel &getMaxDynamicRange() const 00175 { 00176 return *m_drmaxPixel; 00177 } 00178 00179 LT_STATUS overridePixelBPS(lt_uint8 bps) 00180 { 00181 return setPixelBPS(bps); 00182 } 00183 00184 LT_STATUS overrideDynamicRange(const LTIPixel& drmin, 00185 const LTIPixel& drmax) 00186 { 00187 return setDynamicRange(drmin, drmax); 00188 } 00189 }; 00190 00193 00194 struct LTIOverrideBackgroundPixelData 00195 { 00196 LTIOverrideBackgroundPixelData(); 00197 ~LTIOverrideBackgroundPixelData(); 00198 00212 LT_STATUS setBackgroundPixel(const LTIPixel* backgroundPixel); 00213 00227 LT_STATUS setNoDataPixel(const LTIPixel* nodataPixel); 00228 00229 LTIPixel *m_backgroundPixel; 00230 LTIPixel *m_nodataPixel; 00231 }; 00232 00233 00234 template<class BASE> 00235 struct LTIOverrideBackgroundPixel : public BASE, 00236 protected LTIOverrideBackgroundPixelData 00237 { 00238 public: 00239 const LTIPixel *getBackgroundPixel() const 00240 { 00241 return m_backgroundPixel; 00242 } 00243 const LTIPixel *getNoDataPixel() const 00244 { 00245 return m_nodataPixel; 00246 } 00247 00248 LT_STATUS overrideBackgroundPixel(const LTIPixel *backgroundPixel) 00249 { 00250 if (backgroundPixel != NULL) 00251 { 00252 LTIPixel mergedPixel(this->getPixelProps()); 00253 mergedPixel.setNonAlphaSampleValuesFromPixel(*backgroundPixel); 00254 return setBackgroundPixel(&mergedPixel); 00255 } 00256 else 00257 return setBackgroundPixel(NULL); 00258 } 00259 00260 LT_STATUS overrideNoDataPixel(const LTIPixel *nodataPixel) 00261 { 00262 if (nodataPixel != NULL) 00263 { 00264 LTIPixel mergedPixel(this->getPixelProps()); 00265 mergedPixel.setNonAlphaSampleValuesFromPixel(*nodataPixel); 00266 return setNoDataPixel(&mergedPixel); 00267 } 00268 else 00269 return setNoDataPixel(NULL); 00270 } 00271 }; 00272 00275 00276 struct LTIOverrideGeoCoordData 00277 { 00278 LTIOverrideGeoCoordData(); 00279 ~LTIOverrideGeoCoordData(); 00280 00293 LT_STATUS setGeoCoord(const LTIGeoCoord& geoCoord); 00294 00311 LT_STATUS setDefaultGeoCoord(const LTIImage &image); 00312 00313 LTIGeoCoord *m_geoCoord; 00314 bool m_geoCoordImplicit; 00315 }; 00316 00317 template<class BASE> 00318 struct LTIOverrideGeoCoord : public BASE, 00319 protected LTIOverrideGeoCoordData 00320 { 00321 const LTIGeoCoord &getGeoCoord() const 00322 { 00323 return *m_geoCoord; 00324 } 00325 00326 bool isGeoCoordImplicit() const 00327 { 00328 return m_geoCoordImplicit; 00329 } 00330 00331 LT_STATUS overrideGeoCoord(const LTIGeoCoord &geoCoord) 00332 { 00333 return setGeoCoord(geoCoord); 00334 } 00335 }; 00336 00339 00340 struct LTIOverrideMagnificationData 00341 { 00342 LTIOverrideMagnificationData(); 00343 00359 LT_STATUS setMagnification(double minMag, 00360 double maxMag); 00361 00362 double m_minMag; 00363 double m_maxMag; 00364 }; 00365 00366 template<class BASE> 00367 struct LTIOverrideMagnification : public BASE, 00368 protected LTIOverrideMagnificationData 00369 { 00370 double getMinMagnification() const 00371 { 00372 return m_minMag; 00373 } 00374 00375 double getMaxMagnification() const 00376 { 00377 return m_maxMag; 00378 } 00379 }; 00380 00383 00384 struct LTIOverrideIsSelectiveData 00385 { 00386 LTIOverrideIsSelectiveData(); 00387 00401 void setIsSelective(bool enable); 00402 00403 bool m_isSelective; 00404 }; 00405 00406 template<class BASE> 00407 struct LTIOverrideIsSelective : public BASE, 00408 protected LTIOverrideIsSelectiveData 00409 { 00410 bool isSelective() const 00411 { 00412 return m_isSelective; 00413 } 00414 }; 00415 00418 00419 struct LTIOverrideStripHeightData 00420 { 00421 LTIOverrideStripHeightData(); 00422 00423 lt_uint32 m_stripHeight; 00424 }; 00425 00426 template<class BASE> 00427 struct LTIOverrideStripHeight : public BASE, 00428 protected LTIOverrideStripHeightData 00429 { 00430 lt_uint32 getStripHeight() const 00431 { 00432 return m_stripHeight; 00433 } 00434 00435 LT_STATUS setStripHeight(lt_uint32 stripHeight) 00436 { 00437 m_stripHeight = stripHeight; 00438 return LT_STS_Success; 00439 } 00440 }; 00441 00444 00445 struct LTIOverrideDelegatesData 00446 { 00447 LTIOverrideDelegatesData(); 00448 00449 LTIProgressDelegate *m_progressDelegate; 00450 LTIInterruptDelegate *m_interruptDelegate; 00451 }; 00452 00453 template<class BASE> 00454 struct LTIOverrideDelegates : public BASE, 00455 protected LTIOverrideDelegatesData 00456 { 00457 void setProgressDelegate(LTIProgressDelegate* delegate) 00458 { 00459 m_progressDelegate = delegate; 00460 } 00461 00462 LTIProgressDelegate *getProgressDelegate() const 00463 { 00464 return m_progressDelegate; 00465 } 00466 00467 void setInterruptDelegate(LTIInterruptDelegate* delegate) 00468 { 00469 m_interruptDelegate = delegate; 00470 } 00471 00472 LTIInterruptDelegate *getInterruptDelegate() const 00473 { 00474 return m_interruptDelegate; 00475 } 00476 }; 00477 00480 00481 struct LTIOverridePixelLookupTablesData 00482 { 00483 LTIOverridePixelLookupTablesData(); 00484 ~LTIOverridePixelLookupTablesData(); 00485 00501 LT_STATUS setPixelLookupTable(const LTIPixelLookupTable* pixelLookupTable); 00502 00503 LTIPixelLookupTable *m_pixelLookupTable; 00504 }; 00505 00506 template<class BASE> 00507 struct LTIOverridePixelLookupTables : public BASE, 00508 protected LTIOverridePixelLookupTablesData 00509 { 00510 const LTIPixelLookupTable *getPixelLookupTable() const 00511 { 00512 return m_pixelLookupTable; 00513 } 00514 00515 LT_STATUS overridePixelLookupTable(const LTIPixelLookupTable* pixelLookupTable) 00516 { 00517 return setPixelLookupTable(pixelLookupTable); 00518 } 00519 }; 00520 00521 00524 00527 00530 00531 LT_END_NAMESPACE(LizardTech) 00532 00533 00534 #endif // LTI_IMAGE_STAGE_OVERRIDES_H