00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012
00013 #ifndef LTI_IMAGESTAGE_H
00014 #define LTI_IMAGESTAGE_H
00015
00016
00017 #include "lti_image.h"
00018
00019 LT_BEGIN_NAMESPACE(LizardTech)
00020
00021
00028 class LTIImageStage : public LTIImage
00029 {
00030 LTI_REFERENCE_COUNTED_BOILERPLATE_BASE(LTIImageStage);
00031 public:
00046 virtual void setProgressDelegate(LTIProgressDelegate* delegate) = 0;
00047
00061 virtual LTIProgressDelegate* getProgressDelegate() const = 0;
00062
00077 virtual void setInterruptDelegate(LTIInterruptDelegate* delegate) = 0;
00078
00092 virtual LTIInterruptDelegate* getInterruptDelegate() const = 0;
00093
00111 LT_STATUS read(const LTIScene& scene,
00112 LTISceneBuffer& buffer);
00113
00126 virtual LT_STATUS readBegin(const LTIPixel &pixelProps,
00127 const LTIScene &fullScene);
00128
00148 virtual LT_STATUS readStrip(LTISceneBuffer &buffer,
00149 const LTIScene &stripScene);
00150
00161 virtual LT_STATUS readEnd();
00162
00174 virtual lt_uint32 getStripHeight() const = 0;
00175
00188 virtual LT_STATUS setStripHeight(lt_uint32 stripHeight) = 0;
00189
00201 virtual lt_int64 getEncodingCost(const LTIScene& scene) const = 0;
00202
00214 virtual bool getReaderScene(const LTIScene &decodeScene,
00215 LTIScene &readerScene) const = 0;
00216
00225 lt_uint32 getNumStrips() const;
00226
00237 LTIScene getStripScene(lt_uint32 stripNumber) const;
00238
00247 virtual LT_STATUS overrideBackgroundPixel(const LTIPixel *backgroundPixel) = 0;
00248
00258 virtual LT_STATUS overrideNoDataPixel(const LTIPixel *nodataPixel) = 0;
00259
00268 virtual LT_STATUS overrideGeoCoord(const LTIGeoCoord &geoCoord) = 0;
00269
00273 virtual LT_STATUS overrideDynamicRange(const LTIPixel& drmin,
00274 const LTIPixel& drmax) = 0;
00275
00279 virtual LT_STATUS overridePixelBPS(lt_uint8) = 0;
00280
00284 virtual LT_STATUS overridePixelLookupTable(const LTIPixelLookupTable* pixelLookupTable) = 0;
00285
00289 virtual LT_STATUS overrideMetadata(const LTIMetadataDatabase &metadata) = 0;
00290
00291
00292 virtual LTIMaskSource *getMask() const = 0;
00293 virtual bool getPipelineInfo(LTIPipelineInfo info) const = 0;
00294 protected:
00306 LT_STATUS fillBackground(const LTIScene& scene,
00307 LTISceneBuffer& buffer);
00308
00319 LT_STATUS fillBackground(const LTIScene &scene,
00320 LTISceneBuffer &buffer,
00321 const LTIPixel &color);
00322
00323 bool isBandSelected(const LTIPixel &pixelProps) const;
00338 virtual LT_STATUS decodeBegin(const LTIPixel &pixelProps,
00339 const LTIScene &fullScene) = 0;
00340
00355 virtual LT_STATUS decodeStrip(LTISceneBuffer &stripBuffer,
00356 const LTIScene &stripScene) = 0;
00357
00370 virtual LT_STATUS decodeEnd(void) = 0;
00371
00380 const LTIScene &getFullScene() const;
00381
00382 private:
00386 LT_STATUS validateReadRequest(const LTIPixel &pixelProps,
00387 const LTIScene &scene) const;
00388 LT_STATUS validateReadRequest(const LTISceneBuffer &buffer,
00389 const LTIScene &scene) const;
00390
00391 LT_STATUS checkDelegates(const LTIScene*, bool);
00392
00393 struct StripMarcher;
00394 StripMarcher* m_stripMarcher;
00395 };
00396
00397 LT_END_NAMESPACE(LizardTech)
00398
00399 #endif // LTI_IMAGESTAGE_H