32 #ifndef GDAL_ALG_PRIV_H_INCLUDED
33 #define GDAL_ALG_PRIV_H_INCLUDED
43 typedef enum { GBV_UserBurnValue = 0, GBV_Z = 1, GBV_M = 2
55 unsigned char * pabyChunkBuf;
63 double *padfBurnValue;
64 GDALBurnValueSrc eBurnValueSource;
65 GDALRasterMergeAlg eMergeAlg;
79 typedef void (*llScanlineFunc)(
void *, int, int, int, double );
80 typedef void (*llPointFunc)(
void *, int, int, double );
82 void GDALdllImagePoint(
int nRasterXSize,
int nRasterYSize,
83 int nPartCount,
int *panPartSize,
84 double *padfX,
double *padfY,
double *padfVariant,
85 llPointFunc pfnPointFunc,
void *pCBData );
87 void GDALdllImageLine(
int nRasterXSize,
int nRasterYSize,
88 int nPartCount,
int *panPartSize,
89 double *padfX,
double *padfY,
double *padfVariant,
90 llPointFunc pfnPointFunc,
void *pCBData );
92 void GDALdllImageLineAllTouched(
int nRasterXSize,
int nRasterYSize,
93 int nPartCount,
int *panPartSize,
94 double *padfX,
double *padfY,
96 llPointFunc pfnPointFunc,
void *pCBData,
97 int bAvoidBurningSamePoints );
99 void GDALdllImageFilledPolygon(
int nRasterXSize,
int nRasterYSize,
100 int nPartCount,
int *panPartSize,
101 double *padfX,
double *padfY,
103 llScanlineFunc pfnScanlineFunc,
void *pCBData );
111 #define GP_NODATA_MARKER -51502112
113 template<
class DataType,
class EqualityTest>
class GDALRasterPolygonEnumeratorT
117 void MergePolygon(
int nSrcId,
int nDstId );
118 int NewPolygon( DataType nValue );
124 GInt32 *panPolyIdMap =
nullptr;
125 DataType *panPolyValue =
nullptr;
127 int nNextPolygonId = 0;
130 int nConnectedness = 0;
133 explicit GDALRasterPolygonEnumeratorT(
int nConnectedness=4 );
134 ~GDALRasterPolygonEnumeratorT();
136 void ProcessLine( DataType *panLastLineVal, DataType *panThisLineVal,
140 void CompleteMerges();
145 struct IntEqualityTest
147 bool operator()(
GInt32 a,
GInt32 b)
const {
return a == b; }
150 typedef GDALRasterPolygonEnumeratorT<GInt32, IntEqualityTest> GDALRasterPolygonEnumerator;
152 typedef void* (*GDALTransformDeserializeFunc)(
CPLXMLNode *psTree );
154 void CPL_DLL *GDALRegisterTransformDeserializer(
const char* pszTransformName,
156 GDALTransformDeserializeFunc pfnDeserializeFunc);
157 void CPL_DLL GDALUnregisterTransformDeserializer(
void* pData);
159 void GDALCleanupTransformDeserializerMutex();
163 void* GDALCreateTPSTransformerInt(
int nGCPCount,
const GDAL_GCP *pasGCPList,
164 int bReversed,
char** papszOptions );
166 void CPL_DLL * GDALCloneTransformer(
void *pTransformerArg );
173 template<
class T>
int
178 GByte* pabyGreenBand,
180 int (*pfnIncludePixel)(
int,
int,
void*),
185 GDALProgressFunc pfnProgress,
186 void * pProgressArg );
194 GInt16* pasDynamicColorMap,
196 GDALProgressFunc pfnProgress,
197 void * pProgressArg );
199 #define PRIME_FOR_65536 98317
204 #define MEDIAN_CUT_AND_DITHER_BUFFER_SIZE_65536 (6 * sizeof(int) * PRIME_FOR_65536)
218 GBool GDALFloatEquals(
float A,
float B);
220 struct FloatEqualityTest
222 bool operator()(
float a,
float b) {
return GDALFloatEquals(a,b) == TRUE; }
229 double& dfWestLongitudeDeg,
230 double& dfSouthLatitudeDeg,
231 double& dfEastLongitudeDeg,
232 double& dfNorthLatitudeDeg );
239 double& dfWestLongitudeDeg,
240 double& dfSouthLatitudeDeg,
241 double& dfEastLongitudeDeg,
242 double& dfNorthLatitudeDeg );