00001
00031 #ifndef INC_SPATMOD_IMAGEFILTERCONVERTTERRAIN_H
00032 #define INC_SPATMOD_IMAGEFILTERCONVERTTERRAIN_H
00033
00034 #ifndef INC_SPATMOD_IMAGEFILTER_H
00035 #include <spatmod/imagefilter.h>
00036 #endif
00037
00038 #ifndef INC_SPATMOD_IMAGETILESET_H
00039 #include <spatmod/imagetileset.h>
00040 #endif
00041
00042 namespace SPATMOD {
00043 namespace IMAGE {
00044
00045 class BUFFER;
00046 class SAMPLEITERATOR;
00047
00048
00049
00051 class FILTER_CONVERT_TERRAIN : public FILTER {
00052 public:
00053
00054 FILTER_CONVERT_TERRAIN (
00055 STAGE *pPreviousStage,
00056 bool TakeOwnership,
00057 const SPATMOD::IMAGE::TILESET::IMGFORMAT& ImgFormat,
00058 bool bConvertTerrainToRGBA,
00059 double Scale = 1.0,
00060 INT64 PrescaleOffset = 0,
00061 INT64 PostscaleOffset = 0
00062 );
00063
00064 FILTER_CONVERT_TERRAIN (
00065 STAGE *pPreviousStage,
00066 bool TakeOwnership,
00067 const SPATMOD::IMAGE::FORMAT::SPEC& ImgFormat,
00068 bool bConvertTerrainToRGBA,
00069 double Scale = 1.0,
00070 INT64 PrescaleOffset = 0,
00071 INT64 PostscaleOffset = 0
00072 );
00073
00074 static void ReadPixelRange(
00075 const SPATMOD::IMAGE::FORMAT::SPEC& ImgFormat,
00076 const BUFFER& Buffer,
00077 double& MinValue,
00078 double& MaxValue,
00079 double Scale = 1.0,
00080 INT64 PrescaleOffset = 0,
00081 INT64 PostscaleOffset = 0
00082 );
00083
00084 static void ReadPixelRange(
00085 const SPATMOD::IMAGE::TILESET::IMGFORMAT& ImgFormat,
00086 const BUFFER& Buffer,
00087 double& MinValue,
00088 double& MaxValue,
00089 double Scale = 1.0,
00090 INT64 PrescaleOffset = 0,
00091 INT64 PostscaleOffset = 0
00092 );
00093
00094 static void WritePixelRange(
00095 BUFFER& Buffer,
00096 INT32 MinValue,
00097 INT32 MaxValue
00098 );
00099
00100 static void WriteScaleOffset(
00101 BUFFER& Buffer,
00102 double Scale,
00103 INT64 PrescaleOffset = 0,
00104 INT64 PostscaleOffset = 0
00105 );
00106
00107 static void WriteScaleOffset(
00108 BUFFER& Buffer,
00109 INT32 ScaleNumerator,
00110 INT32 ScaleDenominator,
00111 INT64 PrescaleOffset = 0,
00112 INT64 PostscaleOffset = 0
00113 );
00114
00115 static void WriteType(
00116 BUFFER& Buffer,
00117 INT32 Type
00118 );
00119
00120
00121 virtual ~FILTER_CONVERT_TERRAIN ();
00122
00123 private:
00124 #ifndef GENERATING_DOXYGEN_OUTPUT
00125 SPATMOD::IMAGE::TILESET::IMGFORMAT m_ImgFormat;
00126 double m_Scale;
00127 INT64 m_PrescaleOffset;
00128 INT64 m_PostscaleOffset;
00129 bool m_bConvertTerrainToRGBA;
00130
00131 bool ConvertRGBAToTerrain (
00132 const SPATMOD::IMAGE::SAMPLEITERATOR *ittgt,
00133 const SPATMOD::IMAGE::SAMPLEITERATOR *itsrc,
00134 bool valid
00135 );
00136
00137 bool ConvertTerrainToRGBA (
00138 const SPATMOD::IMAGE::SAMPLEITERATOR *ittgt,
00139 const SPATMOD::IMAGE::SAMPLEITERATOR *itsrc,
00140 bool valid
00141 );
00142
00143
00144 virtual ERRVALUE v_Initialize ();
00145 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00146
00147
00148 FILTER_CONVERT_TERRAIN (const FILTER_CONVERT_TERRAIN&);
00149 FILTER_CONVERT_TERRAIN& operator= (const FILTER_CONVERT_TERRAIN&);
00150 #endif // GENERATING_DOXYGEN_OUTPUT
00151
00152 };
00153 }
00154 }
00155
00156 #endif // INC_SPATMOD_IMAGEFILTERCONVERTTERRAIN_H
00157