00001
00021 #ifndef INC_SPATMOD_IMAGEHELPERRESAMPLE_H
00022 #define INC_SPATMOD_IMAGEHELPERRESAMPLE_H
00023
00024 #ifndef INC_SPATMOD_IMAGEBUFFER_H
00025 #include <spatmod/imagebuffer.h>
00026 #endif
00027
00028 #ifndef INC_SPATMOD_IMAGERESAMPLEMETHOD_H
00029 #include <spatmod/imageresamplemethod.h>
00030 #endif
00031
00032 #ifndef INC_MI32_DOUBLEAR_H
00033 #include <mi32/doublear.h>
00034 #endif
00035
00036 #ifndef INC_MI32_SIMPLEAR_H
00037 #include <mi32/simplear.h>
00038 #endif
00039
00040
00041 #ifndef GENERATING_DOXYGEN_OUTPUT
00042 class TRANS2D_MAPGEN;
00043 namespace SPATMOD {
00044 namespace IMAGE {
00045 class SAMPLEITERATOR;
00046 class SAMPLEITERATOR_CONST;
00047 class SECTION;
00048 class STAGE;
00049 }
00050 }
00051 #endif
00052
00053
00054 namespace SPATMOD {
00055 namespace IMAGE {
00056
00059 class HELPER_RESAMPLE {
00060 public:
00061
00063 enum FLAGS {
00064 FLAG_None = 0,
00065 FLAG_PullSinglePixels = 0x01,
00066 FLAG_CheckTargetValidity = 0x02,
00067 };
00068
00070 HELPER_RESAMPLE ();
00071
00073 ~HELPER_RESAMPLE ();
00074
00077 ERRVALUE BeginSection (
00078 const SECTION& SrcSection
00079 );
00080
00082 ERRVALUE BeginSection (
00083 const SECTION& SrcSection,
00084 BUFFER& WorkBuffer
00085 );
00086
00090 ERRVALUE ConvertCoordTgtToSrc (
00091 const TRANS2D_MAPGEN& TransTgtToSrc,
00092 const DOUBLE_ARRAY<DPOINT2D>& TgtCoord,
00093 DOUBLE_ARRAY<DPOINT2D>& SrcCoord,
00094 UINT8 *CoordValid
00095 ) const;
00096
00098 void FreeWorkBuffer ()
00099 { m_SrcBuffer.Destroy(); }
00100
00102 ERRVALUE ProcessRow (
00103 INT32 TgtRow,
00104 BUFFER& TgtBuffer,
00105 const DOUBLE_ARRAY<DPOINT2D>& SrcCoord
00106 );
00107
00109 ERRVALUE ReserveWorkBuffer (
00110 INT32 MaxColumns,
00111 INT32 MaxRows
00112 );
00113
00115 ERRVALUE Setup (
00116 STAGE *pStageSrc,
00117 RESAMPLEMETHOD ResampleMethod,
00118 FLAGS flags = FLAG_None
00119 );
00120
00121 private:
00122 #ifndef GENERATING_DOXYGEN_OUTPUT
00123 BUFFER m_SrcBuffer;
00124 STAGE *m_pStageSrc;
00125 double m_bc1;
00126 double m_bc2;
00127 double m_bc3;
00128 double m_bc4;
00129 double m_bc5;
00130 int m_ksize;
00131 INT32 m_SrcCols;
00132 INT32 m_SrcCols1;
00133 INT32 m_SrcCols2;
00134 INT32 m_SrcRows;
00135 INT32 m_SrcRows1;
00136 INT32 m_SrcRows2;
00137 INT32 m_SrcBaseColumn;
00138 INT32 m_SrcBaseRow;
00139 UINT16 m_NumSamples;
00140 RESAMPLEMETHOD m_ResampleMethod;
00141 bool m_PullSinglePixels;
00142 bool m_CheckTgtValidity;
00143 bool m_IsAllUINT8;
00144 SIMPLE_ARRAY<const UINT8*> m_PtrSrcByte[4];
00145 SIMPLE_ARRAY<UINT8*> m_PtrTgtByte;
00146 SAMPLEITERATOR_CONST *m_itSrc[4];
00147 SAMPLEITERATOR *m_itTgt;
00148
00149 void Free ();
00150
00151 HELPER_RESAMPLE (const HELPER_RESAMPLE&);
00152 HELPER_RESAMPLE& operator= (const HELPER_RESAMPLE&);
00153 #endif
00154 };
00155
00156 #ifndef GENERATING_DOXYGEN_OUTPUT
00157 DEFINE_ENUM_OP_BITWISE(HELPER_RESAMPLE::FLAGS)
00158 #endif
00159
00160 }
00161 }
00162
00163 #endif // INC_SPATMOD_IMAGEHELPERRESAMPLE_H