00001
00069 #ifndef INC_SPATMOD_IMAGESOURCERVC_H
00070 #define INC_SPATMOD_IMAGESOURCERVC_H
00071
00072 #ifndef INC_SPATMOD_IMAGESOURCE_H
00073 #include <spatmod/imagesource.h>
00074 #endif
00075
00076 #ifndef INC_SPATMOD_IMAGESAMPLE_H
00077 #include <spatmod/imagesample.h>
00078 #endif
00079
00080 #ifndef INC_RVC_OBJITEMLIST_H
00081 #include <rvc/objitemlist.h>
00082 #endif
00083
00084 #ifndef INC_RVC_RASTER_H
00085 #include <rvc/raster.h>
00086 #endif
00087
00088 #ifndef INC_RVC_NULLMASK_H
00089 #include <rvc/nullmask.h>
00090 #endif
00091
00092 namespace SPATMOD {
00093 namespace IMAGE {
00094
00095
00096
00098 class SOURCE_RVC : public SOURCE {
00099 public:
00100
00102 explicit SOURCE_RVC (
00103 const RVC::OBJITEM& ObjItem,
00104 RVC::RASTER::COMPONENT component = RVC::RASTER::COMPONENT_Default,
00105 SAMPLE::TYPE SampleType = SAMPLE::TYPE_Invalid
00106 );
00107
00109 SOURCE_RVC (
00110 const RVC::OBJITEM& ObjItem,
00111 const RVC::CREDENTIALS& Credentials,
00112 RVC::RASTER::COMPONENT component = RVC::RASTER::COMPONENT_Default,
00113 SAMPLE::TYPE SampleType = SAMPLE::TYPE_Invalid
00114 );
00115
00117 virtual ~SOURCE_RVC ();
00118
00121 void SetKeepOpen (
00122 bool KeepOpen
00123 ) { m_KeepOpen = KeepOpen; }
00124
00128 void SetSpreadToByte (
00129 bool SpreadToByte
00130 ) { m_SpreadToByte = SpreadToByte; }
00131
00136 void SetUseColorPalette (
00137 bool UseColorPalette,
00138 const MIUNICODE* ObjNamePalette = 0
00139 );
00140
00143 void SetUsePyramidTiers (
00144 bool UsePyramidTiers
00145 ) { m_UsePyramidTiers = UsePyramidTiers; }
00146
00149 void SetUseValidity (
00150 bool UseValidity
00151 ) { m_UseValidity = UseValidity; }
00152
00153 private:
00154 #ifndef GENERATING_DOXYGEN_OUTPUT
00155 SAMPLE::TYPE m_SampleType;
00156 RVC::RASTER::COMPONENT m_Component;
00157 RVC::IMAGE::CONVMODE m_ConvMode;
00158 RVC::CREDENTIALS *m_pCredentials;
00159 RVC::OBJITEM m_ObjItemMain;
00160 RVC::OBJITEMLIST m_ObjItemListTiers;
00161 SIMPLE_ARRAY<INT32> m_TierSampleSteps;
00162 mutable SIMPLE_ARRAY<UINT8> m_TierFlags;
00163 DIMENSIONS *m_TierDimensions;
00164 mutable RVC::RASTER m_ObjRaster;
00165 mutable RVC::NULLMASK m_ObjMask;
00166 mutable double m_CurZoom;
00167 bool m_UseColorPalette;
00168 bool m_UsePyramidTiers;
00169 bool m_UseValidity;
00170 bool m_SpreadToByte;
00171 bool m_KeepOpen;
00172 bool m_DoingPull;
00173 bool m_UseCacheRect;
00174 RVC::OBJECTNAME m_ObjNamePalette;
00175 RVC::RASTER::COMPONENT m_SampleComponent[4];
00176 SIMPLE_ARRAY<UINT16> m_SampleIdx;
00177 DOUBLE_ARRAY<double> m_RowBuf;
00178
00179 static UINT8 CalcTierFlags (RVC::RASTER& ObjRaster);
00180 int GetTierIndex (double zoom) const;
00181
00182
00183 virtual ERRVALUE v_GetDimensions (DIMENSIONS& dimensions, double zoom) const;
00184 virtual float v_QueryIterator (const SECTION_ITERATOR& iterator) const;
00185 virtual const char* v_GetTypeName () const;
00186 virtual ZOOMABILITY v_GetZoomAbility (SIMPLE_ARRAY<double>& ZoomsAllowed) const;
00187
00188
00189 virtual ERRVALUE v_ComputeSampleStats (STAT_UNIVARIATE *SampleStatsArray, STATSVALIDITY StatsValidity);
00190 virtual void v_GetMetadataThisOnly (MISTRING& result, METADATACONTENT content, METADATAFORMAT format) const;
00191 virtual ERRVALUE v_Initialize ();
00192 virtual ERRVALUE v_PullBegin (const SECTION_ITERATOR& iterator);
00193 virtual ERRVALUE v_PullEnd ();
00194 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00195
00196
00197 SOURCE_RVC (const SOURCE_RVC&);
00198 SOURCE_RVC& operator= (const SOURCE_RVC&);
00199 #endif // GENERATING_DOXYGEN_OUTPUT
00200
00201 };
00202
00203
00204
00205 }
00206 }
00207
00208 #endif // INC_SPATMOD_IMAGESOURCERVC_H
00209