00001
00064 #ifndef INC_SPATMOD_IMAGESTAGE_H
00065 #define INC_SPATMOD_IMAGESTAGE_H
00066
00067 #ifndef INC_SPATMOD_IMAGEBASE_H
00068 #include <spatmod/imagebase.h>
00069 #endif
00070
00071 #ifndef INC_SPATMOD_METADATACONTENT_H
00072 #include <spatmod/metadatacontent.h>
00073 #endif
00074
00075 #ifndef INC_SPATMOD_METADATAFORMAT_H
00076 #include <spatmod/metadataformat.h>
00077 #endif
00078
00079 #ifndef INC_MI32_DELEGATE_H
00080 #include <mi32/delegate.h>
00081 #endif
00082
00083 class STAT_UNIVARIATE;
00084 class STAT_MULTIVAR;
00085
00086 namespace SPATMOD {
00087 namespace IMAGE {
00088
00089 class SECTION;
00090 class SECTION_ITERATOR;
00091 class BUFFER;
00092
00093
00094
00096 class STAGE : public BASE {
00097 public:
00098
00100 enum BESTZOOM {
00101 BESTZOOM_Closest,
00102 BESTZOOM_ClosestTo1,
00103 BESTZOOM_Below75Pct,
00104 };
00105
00106
00107 STAGE ();
00108
00109
00110 virtual ~STAGE ();
00111
00115 ERRVALUE ComputeMultivariateStats (
00116 STAT_MULTIVAR& Stats
00117 );
00118
00122 ERRVALUE ComputePixelRange (
00123 RANGETYPE RangeType = RANGETYPE_Exact
00124 );
00125
00133 ERRVALUE ComputePixelRange (
00134 const SECTION& section,
00135 PIXEL& PixelValueMin,
00136 PIXEL& PixelValueMax,
00137 RANGETYPE accuracy = RANGETYPE_Maximal
00138 ) { return (v_ComputePixelRange(section,PixelValueMin,PixelValueMax,accuracy)); }
00139
00143 ERRVALUE ComputeSampleStats (
00144 STATSVALIDITY StatsValidity
00145 );
00146
00148 double GetBestZoom (
00149 double ZoomDesired,
00150 BESTZOOM bestzoom
00151 ) const;
00152
00155 ERRVALUE GetBoundingRegion (
00156 REGION2D& region
00157 ) const { return (v_GetBoundingRegion(region)); }
00158
00160 void GetMetadata (
00161 MISTRING& result,
00162 METADATACONTENT content,
00163 METADATAFORMAT format
00164 ) const;
00165
00168 const STAT_UNIVARIATE* GetSampleStats (
00169 UINT16 index
00170 ) const;
00171
00173 STATSVALIDITY GetSampleStatsValidity (
00174 ) const { return (m_SampleStatsValidity); }
00175
00178 ERRVALUE Initialize ();
00179
00184 ERRVALUE Pull (
00185 const SECTION& section,
00186 BUFFER& buffer
00187 );
00188
00192 ERRVALUE PullBegin (
00193 const SECTION_ITERATOR& iterator
00194 );
00195
00198 ERRVALUE PullEnd (
00199 );
00200
00203 ERRVALUE PullSubSection (
00204 const SECTION& SubSection,
00205 BUFFER& buffer
00206 );
00207
00209 ERRVALUE ZoomCoordinates (
00210 DPOINT2D *PtsImage,
00211 UINT32 NumPoints,
00212 double TgtZoom,
00213 double SrcZoom = 1
00214 ) const;
00215
00217 ERRVALUE ZoomRectangle (
00218 DRECT2D& RectImage,
00219 double TgtZoom,
00220 double SrcZoom = 1
00221 ) const;
00222
00223 protected:
00224
00226 void GetMetadataThisOnly (
00227 MISTRING& result,
00228 METADATACONTENT content,
00229 METADATAFORMAT format
00230 ) const;
00231
00234 ERRVALUE SetSampleStats (
00235 const STAT_UNIVARIATE *SampleStatsArray,
00236 STATSVALIDITY StatsValidity
00237 );
00238
00241 void SetSampleStatsValidity (
00242 STATSVALIDITY StatsValidity
00243 );
00244
00250 virtual ERRVALUE v_ComputePixelRange (
00251 const SECTION& section,
00252 PIXEL& PixelValueMin,
00253 PIXEL& PixelValueMax,
00254 RANGETYPE accuracy
00255 );
00256
00259 virtual ERRVALUE v_GetBoundingRegion (
00260 REGION2D& region
00261 ) const;
00262
00264 virtual bool v_QueryCapability (
00265 CAPABILITY capability
00266 ) const;
00267
00268 private:
00269 #ifndef GENERATING_DOXYGEN_OUTPUT
00270
00271 STATSVALIDITY m_SampleStatsValidity;
00272 STAT_UNIVARIATE *m_SampleStatsArray;
00273
00274
00275 virtual const char* v_GetTypeName () const;
00276
00277
00278 STAGE (const STAGE&);
00279 STAGE& operator= (const STAGE&);
00280 #endif // GENERATING_DOXYGEN_OUTPUT
00281
00282
00283
00288 virtual ERRVALUE v_ComputeSampleStats (
00289 STAT_UNIVARIATE *SampleStatsArray,
00290 STATSVALIDITY StatsValidity
00291 );
00292
00294 virtual void v_GetMetadata (
00295 MISTRING& result,
00296 METADATACONTENT content,
00297 METADATAFORMAT format
00298 ) const = 0;
00299
00301 virtual void v_GetMetadataThisOnly (
00302 MISTRING& result,
00303 METADATACONTENT content,
00304 METADATAFORMAT format
00305 ) const;
00306
00316 virtual ERRVALUE v_Initialize (
00317 ) = 0;
00318
00322 virtual ERRVALUE v_PullBegin (
00323 const SECTION_ITERATOR& iterator
00324 ) = 0;
00325
00327 virtual ERRVALUE v_PullEnd (
00328 ) = 0;
00329
00333 virtual ERRVALUE v_PullSubSection (
00334 const SECTION& SubSection,
00335 BUFFER& buffer
00336 ) = 0;
00337
00338 };
00339
00340
00341
00342 }
00343 }
00344
00345 #endif // INC_SPATMOD_IMAGESTAGE_H
00346