MrSID Decode SDK for Raster Reference Manual
9.0.0.3864
|
00001 /* $Id$ */ 00002 /* ////////////////////////////////////////////////////////////////////////// 00003 // // 00004 // This code is Copyright (c) 2005 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_BANDSELECTFILTER_H 00014 #define LTI_BANDSELECTFILTER_H 00015 00016 // lt_lib_mrsid_core 00017 #include "lti_imageFilter.h" 00018 #include "lti_imageStageOverrides.h" 00019 00020 00021 LT_BEGIN_NAMESPACE(LizardTech) 00022 class LTReusableBuffer; 00035 #ifdef SWIG 00036 class LTIBandSelectFilter : public LTIImageFilter 00037 #else 00038 class LTIBandSelectFilter : public LTIOverridePixelProps 00039 <LTIOverrideBackgroundPixel 00040 <LTIOverrideMetadata 00041 <LTIImageFilter> > > 00042 #endif 00043 { 00044 LTI_REFERENCE_COUNTED_BOILERPLATE(LTIBandSelectFilter); 00045 public: 00070 LT_STATUS initialize(LTIImageStage *srcImages[], 00071 const int srcImageBands[], 00072 lt_uint16 numOutputBands, 00073 LTIColorSpace colorSpace); 00074 00088 LT_STATUS initialize(LTIImageStage *srcImages[], 00089 lt_uint16 numOutputBands, 00090 LTIColorSpace colorSpace); 00091 00107 LT_STATUS initialize(LTIImageStage* srcImage, 00108 const lt_uint16 srcImageBands[], 00109 lt_uint16 numOutputBands, 00110 LTIColorSpace colorSpace); 00111 00112 // LTIImageStage 00113 lt_uint32 getStripHeight() const; 00114 LT_STATUS setStripHeight(lt_uint32 stripHeight); 00115 lt_int64 getEncodingCost(const LTIScene& scene) const; 00116 00145 static LT_STATUS parseString(const char* inputString, 00146 lt_int32 *&bandList, 00147 lt_uint16& numBands); 00148 00149 // LTIImageStage 00150 virtual lt_uint32 getModifications(const LTIScene &scene) const; 00151 00152 // for LizardTech internal use only 00153 // this only works if there is one source image 00154 // this will change the drMin, drMax, noData and background pixels 00155 LT_STATUS remapBands(const lt_uint16 srcImageBands[]); 00156 LT_STATUS getBandMap(lt_uint16 srcImageBands[]) const; 00157 00158 static LT_STATUS push(LTIImageStage *&pipeline, const LTIPixel &pixelProps); 00159 00160 static void remapPixel(const LTIPixel &srcPixel, 00161 const lt_uint16 srcImageBands[], 00162 LTIPixel &dstPixel); 00163 struct BandSelectMap; 00164 protected: 00165 LT_STATUS decodeBegin(const LTIPixel &pixelProps, 00166 const LTIScene &fullScene); 00167 LT_STATUS decodeStrip(LTISceneBuffer &stripBuffer, 00168 const LTIScene &stripScene); 00169 LT_STATUS decodeEnd(void); 00170 00171 protected: 00172 enum SourcePixel 00173 { 00174 NodataPixel, 00175 BackgroundPixel, 00176 DRMinPixel, 00177 DRMaxPixel 00178 }; 00179 void remapPixel(LTIPixel& pixel, SourcePixel name) const; 00180 00181 BandSelectMap *m_bandSelectMap; 00182 BandSelectMap *m_decodeMap; 00183 00184 private: 00185 LT_STATUS privateInit(lt_uint16 numOutputBands, 00186 LTIColorSpace colorSpace, 00187 bool callInit); 00188 }; 00189 00190 00191 LT_END_NAMESPACE(LizardTech) 00192 00193 #endif // LTI_BANDSELECTFILTER_H